From 5e99adbdfff7050cd9adfcd308e96545bd173528 Mon Sep 17 00:00:00 2001 From: "yurys@chromium.org" Date: Mon, 31 May 2010 14:36:14 +0000 Subject: [PATCH] 2010-05-31 Yury Semikhatsky 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 | 32 +++++++++++++++++++ .../chromium/public/WebDevToolsAgentClient.h | 2 ++ .../public/WebDevToolsFrontendClient.h | 18 ++++++----- WebKit/chromium/src/DebuggerAgentManager.cpp | 14 ++++++-- WebKit/chromium/src/DebuggerAgentManager.h | 2 ++ .../src/InspectorFrontendClientImpl.cpp | 2 ++ WebKit/chromium/src/WebDevToolsAgentImpl.cpp | 5 ++- 7 files changed, 64 insertions(+), 11 deletions(-) diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog index f2a2c357ba3e..907acf926025 100644 --- a/WebKit/chromium/ChangeLog +++ b/WebKit/chromium/ChangeLog @@ -1,3 +1,35 @@ +2010-05-31 Yury Semikhatsky + + 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 Reviewed by Kent Tamura. diff --git a/WebKit/chromium/public/WebDevToolsAgentClient.h b/WebKit/chromium/public/WebDevToolsAgentClient.h index d36043ad00e8..0f7421d03eaf 100644 --- a/WebKit/chromium/public/WebDevToolsAgentClient.h +++ b/WebKit/chromium/public/WebDevToolsAgentClient.h @@ -64,6 +64,8 @@ public: }; virtual WebKitClientMessageLoop* createClientMessageLoop() { return 0; } + virtual bool exposeV8DebuggerProtocol() { return false; } + protected: ~WebDevToolsAgentClient() { } }; diff --git a/WebKit/chromium/public/WebDevToolsFrontendClient.h b/WebKit/chromium/public/WebDevToolsFrontendClient.h index 754ecf96dd1f..159a3cd50d11 100644 --- a/WebKit/chromium/public/WebDevToolsFrontendClient.h +++ b/WebKit/chromium/public/WebDevToolsFrontendClient.h @@ -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() {} diff --git a/WebKit/chromium/src/DebuggerAgentManager.cpp b/WebKit/chromium/src/DebuggerAgentManager.cpp index e14cf64a0bc6..a30675d31f8b 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 { @@ -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); diff --git a/WebKit/chromium/src/DebuggerAgentManager.h b/WebKit/chromium/src/DebuggerAgentManager.h index 051f3e27c929..dbb600a47cb0 100644 --- a/WebKit/chromium/src/DebuggerAgentManager.h +++ b/WebKit/chromium/src/DebuggerAgentManager.h @@ -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 diff --git a/WebKit/chromium/src/InspectorFrontendClientImpl.cpp b/WebKit/chromium/src/InspectorFrontendClientImpl.cpp index 9ff3938a6c26..6f7ed9588fe1 100644 --- a/WebKit/chromium/src/InspectorFrontendClientImpl.cpp +++ b/WebKit/chromium/src/InspectorFrontendClientImpl.cpp @@ -90,6 +90,8 @@ String InspectorFrontendClientImpl::localizedStringsURL() String InspectorFrontendClientImpl::hiddenPanels() { + if (m_client->shouldHideScriptsPanel()) + return "scripts"; return ""; } diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp index d4c46160654d..8dde31f3c215 100644 --- a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp +++ b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp @@ -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( -- 2.36.0