summaryrefslogtreecommitdiffstats
path: root/chrome/browser/debugger/devtools_manager.cc
diff options
context:
space:
mode:
authoryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-27 12:01:36 +0000
committeryurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-27 12:01:36 +0000
commit91cceb31fee27d174c6d86d10a99d56778907a1f (patch)
tree6d58aeb14c550812cfdadd2e32c4dce80fa2b163 /chrome/browser/debugger/devtools_manager.cc
parentf5844ec68d179bdeaaeb76deb7fc90d3f61adf94 (diff)
downloadchromium_src-91cceb31fee27d174c6d86d10a99d56778907a1f.zip
chromium_src-91cceb31fee27d174c6d86d10a99d56778907a1f.tar.gz
chromium_src-91cceb31fee27d174c6d86d10a99d56778907a1f.tar.bz2
DevTools: implement WebDevToolsAgentClient::WebKitClientMessageLoop. Also make sure that devtools client is detached from devtools agent if inspected render view is closing. It is necessary because render thread may be blocked by a script staying on a breakpoint in which case close message will never be dispatched(close message is posted as a non nestable task so it cannot be processed in the message loop in ScriptDebugServer).
Review URL: http://codereview.chromium.org/2238002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48382 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/debugger/devtools_manager.cc')
-rw-r--r--chrome/browser/debugger/devtools_manager.cc22
1 files changed, 8 insertions, 14 deletions
diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc
index 2b89d8f..57db6c3 100644
--- a/chrome/browser/debugger/devtools_manager.cc
+++ b/chrome/browser/debugger/devtools_manager.cc
@@ -111,8 +111,11 @@ void DevToolsManager::ActivateWindow(RenderViewHost* client_rvh) {
void DevToolsManager::CloseWindow(RenderViewHost* client_rvh) {
DevToolsClientHost* client_host = FindOnwerDevToolsClientHost(client_rvh);
- if (client_host)
- CloseWindow(client_host);
+ if (client_host) {
+ RenderViewHost* inspected_rvh = GetInspectedRenderViewHost(client_host);
+ DCHECK(inspected_rvh);
+ UnregisterDevToolsClientHostFor(inspected_rvh);
+ }
}
void DevToolsManager::RequestDockWindow(RenderViewHost* client_rvh) {
@@ -194,6 +197,7 @@ void DevToolsManager::UnregisterDevToolsClientHostFor(
DevToolsClientHost* host = GetDevToolsClientHostFor(inspected_rvh);
if (!host)
return;
+ SendDetachToAgent(inspected_rvh);
UnbindClientHost(inspected_rvh, host);
if (inspected_rvh_for_reopen_ == inspected_rvh)
@@ -303,7 +307,6 @@ void DevToolsManager::SendDetachToAgent(RenderViewHost* inspected_rvh) {
void DevToolsManager::ForceReopenWindow() {
if (inspected_rvh_for_reopen_) {
RenderViewHost* inspected_rvn = inspected_rvh_for_reopen_;
- SendDetachToAgent(inspected_rvn);
UnregisterDevToolsClientHostFor(inspected_rvn);
OpenDevToolsWindow(inspected_rvn);
}
@@ -362,17 +365,8 @@ void DevToolsManager::ToggleDevToolsWindow(RenderViewHost* inspected_rvh,
if (!window->is_docked() || do_open) {
AutoReset auto_reset_in_initial_show(&in_initial_show_, true);
window->Show(open_console);
- } else {
- CloseWindow(host);
- }
-}
-
-void DevToolsManager::CloseWindow(DevToolsClientHost* client_host) {
- RenderViewHost* inspected_rvh = GetInspectedRenderViewHost(client_host);
- DCHECK(inspected_rvh);
- SendDetachToAgent(inspected_rvh);
-
- UnregisterDevToolsClientHostFor(inspected_rvh);
+ } else
+ UnregisterDevToolsClientHostFor(inspected_rvh);
}
void DevToolsManager::BindClientHost(RenderViewHost* inspected_rvh,