summaryrefslogtreecommitdiffstats
path: root/WebKit/chromium/src/DebuggerAgentManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/chromium/src/DebuggerAgentManager.cpp')
-rw-r--r--WebKit/chromium/src/DebuggerAgentManager.cpp51
1 files changed, 12 insertions, 39 deletions
diff --git a/WebKit/chromium/src/DebuggerAgentManager.cpp b/WebKit/chromium/src/DebuggerAgentManager.cpp
index d3f7fea..a30675d 100644
--- a/WebKit/chromium/src/DebuggerAgentManager.cpp
+++ b/WebKit/chromium/src/DebuggerAgentManager.cpp
@@ -54,6 +54,8 @@ bool DebuggerAgentManager::s_inUtilityContext = false;
bool DebuggerAgentManager::s_debugBreakDelayed = false;
+bool DebuggerAgentManager::s_exposeV8DebuggerProtocol = false;
+
namespace {
class CallerIdWrapper : public v8::Debug::ClientData, public Noncopyable {
@@ -73,42 +75,6 @@ private:
} // namespace
-void DebuggerAgentManager::hostDispatchHandler(const Vector<WebCore::Page*>& pages)
-{
- if (!s_messageLoopDispatchHandler)
- return;
-
- if (s_inHostDispatchHandler)
- return;
-
- s_inHostDispatchHandler = true;
-
- Vector<WebViewImpl*> views;
- // 1. Disable active objects and input events.
- for (size_t i = 0; i < pages.size(); i++) {
- WebCore::Page* page = pages[i];
- WebViewImpl* view = WebViewImpl::fromPage(page);
- s_pageDeferrers.set(view , new WebCore::PageGroupLoadDeferrer(page, true));
- views.append(view);
- view->setIgnoreInputEvents(true);
- }
-
- // 2. Process messages.
- s_messageLoopDispatchHandler();
-
- // 3. Bring things back.
- for (Vector<WebViewImpl*>::iterator it = views.begin(); it != views.end(); ++it) {
- if (s_pageDeferrers.contains(*it)) {
- // The view was not closed during the dispatch.
- (*it)->setIgnoreInputEvents(false);
- }
- }
- deleteAllValues(s_pageDeferrers);
- s_pageDeferrers.clear();
-
- s_inHostDispatchHandler = false;
-}
-
void DebuggerAgentManager::debugHostDispatchHandler()
{
if (!s_messageLoopDispatchHandler || !s_attachedAgentsMap)
@@ -154,7 +120,8 @@ DebuggerAgentManager::AttachedAgentsMap* DebuggerAgentManager::s_attachedAgentsM
void DebuggerAgentManager::debugAttach(DebuggerAgentImpl* debuggerAgent)
{
#if ENABLE(V8_SCRIPT_DEBUG_SERVER)
- return;
+ if (!s_exposeV8DebuggerProtocol)
+ return;
#endif
if (!s_attachedAgentsMap) {
s_attachedAgentsMap = new AttachedAgentsMap();
@@ -169,7 +136,8 @@ void DebuggerAgentManager::debugAttach(DebuggerAgentImpl* debuggerAgent)
void DebuggerAgentManager::debugDetach(DebuggerAgentImpl* debuggerAgent)
{
#if ENABLE(V8_SCRIPT_DEBUG_SERVER)
- return;
+ if (!s_exposeV8DebuggerProtocol)
+ return;
#endif
if (!s_attachedAgentsMap) {
ASSERT_NOT_REACHED();
@@ -292,9 +260,14 @@ void DebuggerAgentManager::executeDebuggerCommand(const String& command, int cal
void DebuggerAgentManager::setMessageLoopDispatchHandler(WebDevToolsAgent::MessageLoopDispatchHandler handler)
{
s_messageLoopDispatchHandler = handler;
- WebCore::ScriptDebugServer::setMessageLoopDispatchHandler(DebuggerAgentManager::hostDispatchHandler);
}
+void DebuggerAgentManager::setExposeV8DebuggerProtocol(bool value)
+{
+ s_exposeV8DebuggerProtocol = value;
+}
+
+
void DebuggerAgentManager::setHostId(WebFrameImpl* webframe, int hostId)
{
ASSERT(hostId > 0);