2010-05-31 Yury Semikhatsky <yurys@chromium.org>
authoryurys@chromium.org <yurys@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 May 2010 14:36:14 +0000 (14:36 +0000)
committeryurys@chromium.org <yurys@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 May 2010 14:36:14 +0000 (14:36 +0000)
        Reviewed by Pavel Feldman.

        Web Inspector: allow hiding Scripts panel from Chromium code. This
        is needed to support v8 debugging protocol which has an implementation
        that conflicts with debugger provided by the inspector.
        https://bugs.webkit.org/show_bug.cgi?id=39952

        * public/WebDevToolsAgentClient.h:
        (WebKit::WebDevToolsAgentClient::exposeV8DebuggerProtocol):
        * public/WebDevToolsFrontendClient.h:
        (WebKit::WebDevToolsFrontendClient::WebDevToolsFrontendClient):
        (WebKit::WebDevToolsFrontendClient::sendMessageToAgent):
        (WebKit::WebDevToolsFrontendClient::sendDebuggerCommandToAgent):
        (WebKit::WebDevToolsFrontendClient::sendDebuggerPauseScript):
        (WebKit::WebDevToolsFrontendClient::activateWindow):
        (WebKit::WebDevToolsFrontendClient::closeWindow):
        (WebKit::WebDevToolsFrontendClient::requestDockWindow):
        (WebKit::WebDevToolsFrontendClient::requestUndockWindow):
        (WebKit::WebDevToolsFrontendClient::hideScriptsPanel):
        * src/DebuggerAgentManager.cpp:
        (WebKit::DebuggerAgentManager::debugAttach):
        (WebKit::DebuggerAgentManager::debugDetach):
        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):
        * src/DebuggerAgentManager.h:
        * src/InspectorFrontendClientImpl.cpp:
        (WebKit::InspectorFrontendClientImpl::hiddenPanels):
        * src/WebDevToolsAgentImpl.cpp:
        (WebKit::WebDevToolsAgentImpl::WebDevToolsAgentImpl):
        (WebKit::WebDevToolsAgentImpl::attach):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@60436 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/chromium/ChangeLog
WebKit/chromium/public/WebDevToolsAgentClient.h
WebKit/chromium/public/WebDevToolsFrontendClient.h
WebKit/chromium/src/DebuggerAgentManager.cpp
WebKit/chromium/src/DebuggerAgentManager.h
WebKit/chromium/src/InspectorFrontendClientImpl.cpp
WebKit/chromium/src/WebDevToolsAgentImpl.cpp

index f2a2c357ba3e1df41f7098d1a5ee3757bb618e77..907acf926025eb1a366a683b3cbf2a29e5c52494 100644 (file)
@@ -1,3 +1,35 @@
+2010-05-31  Yury Semikhatsky  <yurys@chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: allow hiding Scripts panel from Chromium code. This
+        is needed to support v8 debugging protocol which has an implementation
+        that conflicts with debugger provided by the inspector.
+        https://bugs.webkit.org/show_bug.cgi?id=39952
+
+        * public/WebDevToolsAgentClient.h:
+        (WebKit::WebDevToolsAgentClient::exposeV8DebuggerProtocol):
+        * public/WebDevToolsFrontendClient.h:
+        (WebKit::WebDevToolsFrontendClient::WebDevToolsFrontendClient):
+        (WebKit::WebDevToolsFrontendClient::sendMessageToAgent):
+        (WebKit::WebDevToolsFrontendClient::sendDebuggerCommandToAgent):
+        (WebKit::WebDevToolsFrontendClient::sendDebuggerPauseScript):
+        (WebKit::WebDevToolsFrontendClient::activateWindow):
+        (WebKit::WebDevToolsFrontendClient::closeWindow):
+        (WebKit::WebDevToolsFrontendClient::requestDockWindow):
+        (WebKit::WebDevToolsFrontendClient::requestUndockWindow):
+        (WebKit::WebDevToolsFrontendClient::hideScriptsPanel):
+        * src/DebuggerAgentManager.cpp:
+        (WebKit::DebuggerAgentManager::debugAttach):
+        (WebKit::DebuggerAgentManager::debugDetach):
+        (WebKit::DebuggerAgentManager::setExposeV8DebuggerProtocol):
+        * src/DebuggerAgentManager.h:
+        * src/InspectorFrontendClientImpl.cpp:
+        (WebKit::InspectorFrontendClientImpl::hiddenPanels):
+        * src/WebDevToolsAgentImpl.cpp:
+        (WebKit::WebDevToolsAgentImpl::WebDevToolsAgentImpl):
+        (WebKit::WebDevToolsAgentImpl::attach):
+
 2010-05-30  Lyon Chen  <liachen@rim.com>
 
         Reviewed by Kent Tamura.
index d36043ad00e8c12a0a022bdf488f367903b9e841..0f7421d03eafdca309f5f8c70271c5eb3f2a94d4 100644 (file)
@@ -64,6 +64,8 @@ public:
     };
     virtual WebKitClientMessageLoop* createClientMessageLoop() { return 0; }
 
+    virtual bool exposeV8DebuggerProtocol() { return false; }
+
 protected:
     ~WebDevToolsAgentClient() { }
 };
index 754ecf96dd1f9e7c252c7ec04ab0866e6c5fbe8c..159a3cd50d11f802f29fafd764a80127fa526895 100644 (file)
@@ -38,16 +38,18 @@ struct WebDevToolsMessageData;
 
 class WebDevToolsFrontendClient {
 public:
-    WebDevToolsFrontendClient() {}
+    WebDevToolsFrontendClient() { }
 
-    virtual void sendMessageToAgent(const WebDevToolsMessageData&) {};
-    virtual void sendDebuggerCommandToAgent(const WebString& command) {};
-    virtual void sendDebuggerPauseScript() {}
+    virtual void sendMessageToAgent(const WebDevToolsMessageData&) { }
+    virtual void sendDebuggerCommandToAgent(const WebString& command) { }
+    virtual void sendDebuggerPauseScript() { }
 
-    virtual void activateWindow() {};
-    virtual void closeWindow() {};
-    virtual void requestDockWindow() {};
-    virtual void requestUndockWindow() {};
+    virtual void activateWindow() { }
+    virtual void closeWindow() { }
+    virtual void requestDockWindow() { }
+    virtual void requestUndockWindow() { }
+
+    virtual bool shouldHideScriptsPanel() { return false; }
 
 protected:
     virtual ~WebDevToolsFrontendClient() {}
index e14cf64a0bc6f24617503f650777654565d9c042..a30675d31f8b3b93a50ba91010a82a266ed06321 100644 (file)
@@ -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 {
@@ -118,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();
@@ -133,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();
@@ -258,6 +262,12 @@ void DebuggerAgentManager::setMessageLoopDispatchHandler(WebDevToolsAgent::Messa
     s_messageLoopDispatchHandler = handler;
 }
 
+void DebuggerAgentManager::setExposeV8DebuggerProtocol(bool value)
+{
+    s_exposeV8DebuggerProtocol = value;
+}
+
+
 void DebuggerAgentManager::setHostId(WebFrameImpl* webframe, int hostId)
 {
     ASSERT(hostId > 0);
index 051f3e27c9291815eea466a69d49fd11d0922ba1..dbb600a47cb060ba1bce5cec82793f3ea04f0c05 100644 (file)
@@ -70,6 +70,7 @@ public:
     static void pauseScript();
     static void executeDebuggerCommand(const WebCore::String& command, int callerId);
     static void setMessageLoopDispatchHandler(WebDevToolsAgent::MessageLoopDispatchHandler handler);
+    static void setExposeV8DebuggerProtocol(bool);
 
     // Sets |hostId| as the frame context data. This id is used to filter scripts
     // related to the inspected page.
@@ -119,6 +120,7 @@ private:
 
     static bool s_inUtilityContext;
     static bool s_debugBreakDelayed;
+    static bool s_exposeV8DebuggerProtocol;
 };
 
 } // namespace WebKit
index 9ff3938a6c264d0795d25374c813b731dc1f160f..6f7ed9588fe1ec58695b4f9f1a748ff372b7021f 100644 (file)
@@ -90,6 +90,8 @@ String InspectorFrontendClientImpl::localizedStringsURL()
 
 String InspectorFrontendClientImpl::hiddenPanels()
 {
+    if (m_client->shouldHideScriptsPanel())
+        return "scripts";
     return "";
 }
 
index d4c46160654dc284f26837fe3cf5e3fa743c2004..8dde31f3c21544a2feebac357d516ce93e84c2c4 100644 (file)
@@ -227,6 +227,8 @@ WebDevToolsAgentImpl::WebDevToolsAgentImpl(
     , m_resourceTrackingWasEnabled(false)
     , m_attached(false)
 {
+    DebuggerAgentManager::setExposeV8DebuggerProtocol(
+        client->exposeV8DebuggerProtocol());
     m_debuggerAgentDelegateStub.set(new DebuggerAgentDelegateStub(this));
     m_toolsAgentDelegateStub.set(new ToolsAgentDelegateStub(this));
     m_apuAgentDelegateStub.set(new ApuAgentDelegateStub(this));
@@ -255,7 +257,8 @@ void WebDevToolsAgentImpl::attach()
         return;
 
 #if ENABLE(V8_SCRIPT_DEBUG_SERVER)
-    ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client);
+    if (!m_client->exposeV8DebuggerProtocol())
+        ClientMessageLoopAdapter::ensureClientMessageLoopCreated(m_client);
 #endif
 
     m_debuggerAgentImpl.set(