diff options
-rw-r--r-- | chrome/browser/debugger/devtools_http_protocol_handler.cc | 13 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.cc | 4 | ||||
-rw-r--r-- | chrome/common/devtools_messages_internal.h | 3 | ||||
-rw-r--r-- | chrome/renderer/devtools_agent.cc | 10 | ||||
-rw-r--r-- | chrome/renderer/devtools_agent.h | 1 | ||||
-rw-r--r-- | chrome/renderer/devtools_client.cc | 4 | ||||
-rw-r--r-- | chrome/renderer/devtools_client.h | 1 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_devtools_agent.cc | 8 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_devtools_agent.h | 3 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_devtools_client.cc | 7 | ||||
-rw-r--r-- | webkit/tools/test_shell/test_shell_devtools_client.h | 1 |
11 files changed, 46 insertions, 9 deletions
diff --git a/chrome/browser/debugger/devtools_http_protocol_handler.cc b/chrome/browser/debugger/devtools_http_protocol_handler.cc index beccf9a..6efa6b7 100644 --- a/chrome/browser/debugger/devtools_http_protocol_handler.cc +++ b/chrome/browser/debugger/devtools_http_protocol_handler.cc @@ -59,7 +59,7 @@ class DevToolsClientHostImpl : public DevToolsClientHost { private: // Message handling routines void OnDispatchOnInspectorFrontend(const std::string& data) { - socket_->SendOverWebSocket("devtools$$dispatch(" + data + ")"); + socket_->SendOverWebSocket(data); } HttpListenSocket* socket_; }; @@ -243,7 +243,16 @@ void DevToolsHttpProtocolHandler::OnWebSocketMessageUI( return; DevToolsManager* manager = DevToolsManager::GetInstance(); - manager->ForwardToDevToolsAgent(it->second, + + if (data == "loaded") { + manager->ForwardToDevToolsAgent( + it->second, + DevToolsAgentMsg_FrontendLoaded()); + return; + } + + manager->ForwardToDevToolsAgent( + it->second, DevToolsAgentMsg_DispatchOnInspectorBackend(data)); } diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc index f632cbc..823761f 100644 --- a/chrome/browser/debugger/devtools_manager.cc +++ b/chrome/browser/debugger/devtools_manager.cc @@ -165,8 +165,8 @@ void DevToolsManager::InspectElement(RenderViewHost* inspected_rvh, IPC::Message* m = new DevToolsAgentMsg_InspectElement(x, y); m->set_routing_id(inspected_rvh->routing_id()); inspected_rvh->Send(m); - // TODO(loislo): we should initiate DevTools window opening from within
- // renderer. Otherwise, we still can hit a race condition here.
+ // TODO(loislo): we should initiate DevTools window opening from within + // renderer. Otherwise, we still can hit a race condition here. OpenDevToolsWindow(inspected_rvh); } diff --git a/chrome/common/devtools_messages_internal.h b/chrome/common/devtools_messages_internal.h index e3c3aee..236b4b3 100644 --- a/chrome/common/devtools_messages_internal.h +++ b/chrome/common/devtools_messages_internal.h @@ -75,6 +75,9 @@ IPC_BEGIN_MESSAGES(DevToolsAgent) // Tells agent that there is no longer a client host connected to it. IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_Detach) + // Tells agent that the front-end has been loaded + IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_FrontendLoaded) + // WebKit-level transport. IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_DispatchOnInspectorBackend, std::string /* message */) diff --git a/chrome/renderer/devtools_agent.cc b/chrome/renderer/devtools_agent.cc index 282cf18..b03eea7 100644 --- a/chrome/renderer/devtools_agent.cc +++ b/chrome/renderer/devtools_agent.cc @@ -78,6 +78,7 @@ bool DevToolsAgent::OnMessageReceived(const IPC::Message& message) { IPC_BEGIN_MESSAGE_MAP(DevToolsAgent, message) IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Attach, OnAttach) IPC_MESSAGE_HANDLER(DevToolsAgentMsg_Detach, OnDetach) + IPC_MESSAGE_HANDLER(DevToolsAgentMsg_FrontendLoaded, OnFrontendLoaded) IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DispatchOnInspectorBackend, OnDispatchOnInspectorBackend) IPC_MESSAGE_HANDLER(DevToolsAgentMsg_InspectElement, OnInspectElement) @@ -177,9 +178,14 @@ void DevToolsAgent::OnAttach(const std::vector<std::string>& runtime_features) { void DevToolsAgent::OnDetach() { WebDevToolsAgent* web_agent = GetWebAgent(); - if (web_agent) { + if (web_agent) web_agent->detach(); - } +} + +void DevToolsAgent::OnFrontendLoaded() { + WebDevToolsAgent* web_agent = GetWebAgent(); + if (web_agent) + web_agent->frontendLoaded(); } void DevToolsAgent::OnDispatchOnInspectorBackend(const std::string& message) { diff --git a/chrome/renderer/devtools_agent.h b/chrome/renderer/devtools_agent.h index 1c566b0..9fc8355 100644 --- a/chrome/renderer/devtools_agent.h +++ b/chrome/renderer/devtools_agent.h @@ -66,6 +66,7 @@ class DevToolsAgent : public WebKit::WebDevToolsAgentClient { void OnAttach(const std::vector<std::string>& runtime_features); void OnDetach(); + void OnFrontendLoaded(); void OnDispatchOnInspectorBackend(const std::string& message); void OnInspectElement(int x, int y); void OnSetApuAgentEnabled(bool enabled); diff --git a/chrome/renderer/devtools_client.cc b/chrome/renderer/devtools_client.cc index 81b6f73..2673fb9 100644 --- a/chrome/renderer/devtools_client.cc +++ b/chrome/renderer/devtools_client.cc @@ -49,6 +49,10 @@ bool DevToolsClient::OnMessageReceived(const IPC::Message& message) { return handled; } +void DevToolsClient::sendFrontendLoaded() { + Send(DevToolsAgentMsg_FrontendLoaded()); +} + void DevToolsClient::sendMessageToBackend(const WebString& message) { Send(DevToolsAgentMsg_DispatchOnInspectorBackend(message.utf8())); } diff --git a/chrome/renderer/devtools_client.h b/chrome/renderer/devtools_client.h index 3625547..fdef8d1 100644 --- a/chrome/renderer/devtools_client.h +++ b/chrome/renderer/devtools_client.h @@ -41,6 +41,7 @@ class DevToolsClient : public WebKit::WebDevToolsFrontendClient { bool OnMessageReceived(const IPC::Message& message); // WebDevToolsFrontendClient implementation + virtual void sendFrontendLoaded(); virtual void sendMessageToBackend(const WebKit::WebString&); virtual void sendDebuggerCommandToAgent(const WebKit::WebString& command); virtual void sendDebuggerPauseScript(); diff --git a/webkit/tools/test_shell/test_shell_devtools_agent.cc b/webkit/tools/test_shell/test_shell_devtools_agent.cc index 24f83d4..e42c3e6 100644 --- a/webkit/tools/test_shell/test_shell_devtools_agent.cc +++ b/webkit/tools/test_shell/test_shell_devtools_agent.cc @@ -138,7 +138,7 @@ void TestShellDevToolsAgent::attach(TestShellDevToolsClient* client) { web_agent->attach(); } -void TestShellDevToolsAgent::detach(TestShellDevToolsClient* client) { +void TestShellDevToolsAgent::detach() { DCHECK(dev_tools_client_); WebDevToolsAgent* web_agent = GetWebAgent(); if (web_agent) @@ -146,6 +146,12 @@ void TestShellDevToolsAgent::detach(TestShellDevToolsClient* client) { dev_tools_client_ = NULL; } +void TestShellDevToolsAgent::frontendLoaded() { + WebDevToolsAgent *web_agent = GetWebAgent(); + if (web_agent) + web_agent->frontendLoaded(); +} + bool TestShellDevToolsAgent::setTimelineProfilingEnabled(bool enabled) { WebDevToolsAgent* agent = GetWebAgent(); if (!agent) diff --git a/webkit/tools/test_shell/test_shell_devtools_agent.h b/webkit/tools/test_shell/test_shell_devtools_agent.h index 994c6b2..0b2acf9 100644 --- a/webkit/tools/test_shell/test_shell_devtools_agent.h +++ b/webkit/tools/test_shell/test_shell_devtools_agent.h @@ -45,7 +45,8 @@ class TestShellDevToolsAgent : public WebKit::WebDevToolsAgentClient { void AsyncCall(const TestShellDevToolsCallArgs& args); void attach(TestShellDevToolsClient* client); - void detach(TestShellDevToolsClient* client); + void detach(); + void frontendLoaded(); bool evaluateInWebInspector(long call_id, const std::string& script); bool setTimelineProfilingEnabled(bool enable); diff --git a/webkit/tools/test_shell/test_shell_devtools_client.cc b/webkit/tools/test_shell/test_shell_devtools_client.cc index fe445641..15328e8 100644 --- a/webkit/tools/test_shell/test_shell_devtools_client.cc +++ b/webkit/tools/test_shell/test_shell_devtools_client.cc @@ -46,7 +46,12 @@ TestShellDevToolsClient::~TestShellDevToolsClient() { // dev_tools_agent_ and we should clean pending requests a bit earlier. call_method_factory_.RevokeAll(); if (dev_tools_agent_) - dev_tools_agent_->detach(this); + dev_tools_agent_->detach(); +} + +void TestShellDevToolsClient::sendFrontendLoaded() { + if (dev_tools_agent_) + dev_tools_agent_->frontendLoaded(); } void TestShellDevToolsClient::sendMessageToBackend( diff --git a/webkit/tools/test_shell/test_shell_devtools_client.h b/webkit/tools/test_shell/test_shell_devtools_client.h index d130cfd..9b3d09a5 100644 --- a/webkit/tools/test_shell/test_shell_devtools_client.h +++ b/webkit/tools/test_shell/test_shell_devtools_client.h @@ -28,6 +28,7 @@ class TestShellDevToolsClient: public WebKit::WebDevToolsFrontendClient { virtual ~TestShellDevToolsClient(); // WebDevToolsFrontendClient implementation + virtual void sendFrontendLoaded(); virtual void sendMessageToBackend(const WebKit::WebString& data); virtual void sendDebuggerCommandToAgent(const WebKit::WebString& command); |