summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authoryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-30 09:20:45 +0000
committeryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-30 09:20:45 +0000
commit28ce8ebbf14b94ea5ddce5dcd6d2678ffc460a60 (patch)
tree80b0544dbc30f28ca8b1006c75a102cb279bc444 /chrome/renderer
parentc6dddf37aa407372f0e6ba605b8e9f00d82babdd (diff)
downloadchromium_src-28ce8ebbf14b94ea5ddce5dcd6d2678ffc460a60.zip
chromium_src-28ce8ebbf14b94ea5ddce5dcd6d2678ffc460a60.tar.gz
chromium_src-28ce8ebbf14b94ea5ddce5dcd6d2678ffc460a60.tar.bz2
DevTools: process pause script request on the IO thread. To pause already running script we need to call v8::Debug::DebugBreak() on a thread different from the Render thread which may be busy with JS execution.
BUG=28892 TEST=DevToolsSanityTest.TestPauseWhenScriptIsRunning Review URL: http://codereview.chromium.org/444017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33279 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/devtools_agent_filter.cc26
-rw-r--r--chrome/renderer/devtools_agent_filter.h1
-rw-r--r--chrome/renderer/devtools_client.cc4
-rw-r--r--chrome/renderer/devtools_client.h1
4 files changed, 20 insertions, 12 deletions
diff --git a/chrome/renderer/devtools_agent_filter.cc b/chrome/renderer/devtools_agent_filter.cc
index f67f183..93b6c75 100644
--- a/chrome/renderer/devtools_agent_filter.cc
+++ b/chrome/renderer/devtools_agent_filter.cc
@@ -34,21 +34,23 @@ DevToolsAgentFilter::~DevToolsAgentFilter() {
}
bool DevToolsAgentFilter::OnMessageReceived(const IPC::Message& message) {
- if (message.type() == DevToolsAgentMsg_DebuggerCommand::ID) {
- // Dispatch command directly from IO.
- bool handled = true;
- current_routing_id_ = message.routing_id();
- IPC_BEGIN_MESSAGE_MAP(DevToolsAgentFilter, message)
- IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DebuggerCommand, OnDebuggerCommand)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
- } else {
- return false;
- }
+ // Dispatch debugger commands directly from IO.
+ bool handled = true;
+ current_routing_id_ = message.routing_id();
+ IPC_BEGIN_MESSAGE_MAP(DevToolsAgentFilter, message)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DebuggerCommand, OnDebuggerCommand)
+ IPC_MESSAGE_HANDLER(DevToolsAgentMsg_DebuggerPauseScript,
+ OnDebuggerPauseScript)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
}
void DevToolsAgentFilter::OnDebuggerCommand(const std::string& command) {
WebDevToolsAgent::executeDebuggerCommand(
WebString::fromUTF8(command), current_routing_id_);
}
+
+void DevToolsAgentFilter::OnDebuggerPauseScript() {
+ WebDevToolsAgent::debuggerPauseScript();
+}
diff --git a/chrome/renderer/devtools_agent_filter.h b/chrome/renderer/devtools_agent_filter.h
index 9ee6296..4bf4460 100644
--- a/chrome/renderer/devtools_agent_filter.h
+++ b/chrome/renderer/devtools_agent_filter.h
@@ -31,6 +31,7 @@ class DevToolsAgentFilter : public IPC::ChannelProxy::MessageFilter {
// OnDebuggerCommand will be executed in the IO thread so that we can
// handle debug messages even when v8 is stopped.
void OnDebuggerCommand(const std::string& command);
+ void OnDebuggerPauseScript();
int current_routing_id_;
diff --git a/chrome/renderer/devtools_client.cc b/chrome/renderer/devtools_client.cc
index 9b17c8b..8083288 100644
--- a/chrome/renderer/devtools_client.cc
+++ b/chrome/renderer/devtools_client.cc
@@ -64,6 +64,10 @@ void DevToolsClient::sendDebuggerCommandToAgent(const WebString& command) {
Send(DevToolsAgentMsg_DebuggerCommand(command.utf8()));
}
+void DevToolsClient::sendDebuggerPauseScript() {
+ Send(DevToolsAgentMsg_DebuggerPauseScript());
+}
+
void DevToolsClient::activateWindow() {
render_view_->Send(new ViewHostMsg_ActivateDevToolsWindow(
render_view_->routing_id()));
diff --git a/chrome/renderer/devtools_client.h b/chrome/renderer/devtools_client.h
index e83ec12..aad5c09 100644
--- a/chrome/renderer/devtools_client.h
+++ b/chrome/renderer/devtools_client.h
@@ -43,6 +43,7 @@ class DevToolsClient : public WebKit::WebDevToolsFrontendClient {
const WebKit::WebString& param2,
const WebKit::WebString& param3);
virtual void sendDebuggerCommandToAgent(const WebKit::WebString& command);
+ virtual void sendDebuggerPauseScript();
virtual void activateWindow();
virtual void closeWindow();