diff options
author | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-27 12:01:36 +0000 |
---|---|---|
committer | yurys@chromium.org <yurys@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-27 12:01:36 +0000 |
commit | 91cceb31fee27d174c6d86d10a99d56778907a1f (patch) | |
tree | 6d58aeb14c550812cfdadd2e32c4dce80fa2b163 /chrome/browser/debugger/devtools_manager.cc | |
parent | f5844ec68d179bdeaaeb76deb7fc90d3f61adf94 (diff) | |
download | chromium_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.cc | 22 |
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, |