summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/debugger/devtools_http_protocol_handler.cc13
-rw-r--r--chrome/browser/debugger/devtools_manager.cc4
-rw-r--r--chrome/common/devtools_messages_internal.h3
-rw-r--r--chrome/renderer/devtools_agent.cc10
-rw-r--r--chrome/renderer/devtools_agent.h1
-rw-r--r--chrome/renderer/devtools_client.cc4
-rw-r--r--chrome/renderer/devtools_client.h1
-rw-r--r--webkit/tools/test_shell/test_shell_devtools_agent.cc8
-rw-r--r--webkit/tools/test_shell/test_shell_devtools_agent.h3
-rw-r--r--webkit/tools/test_shell/test_shell_devtools_client.cc7
-rw-r--r--webkit/tools/test_shell/test_shell_devtools_client.h1
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);