diff options
author | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-03 19:07:10 +0000 |
---|---|---|
committer | jamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-11-03 19:07:10 +0000 |
commit | 16bea2f619c07a92878d7ae356cf1b145f5449e5 (patch) | |
tree | 75df9b20619743a7317898b9c6c2d4387b3572a0 | |
parent | 39cf67b9bb38b85a7aa88263e9fcfa731b8f2e7a (diff) | |
download | chromium_src-16bea2f619c07a92878d7ae356cf1b145f5449e5.zip chromium_src-16bea2f619c07a92878d7ae356cf1b145f5449e5.tar.gz chromium_src-16bea2f619c07a92878d7ae356cf1b145f5449e5.tar.bz2 |
Allows extension-devtools api to survive page navigation.
The problem was that the ExtensionDevtoolsBridge maintained explicit knowledge of the RenderViewHost is was monitoring. This would be invalidated on page navigations where the inspected RVH would be swapped out from underneath it.
This patch removes knowledge of RenderViewHost from the ExtensionDevToolsBridge and makes sure it appropriately unregisters itself.
Patch by: Jaime Yap (jaimeyap@google.com)
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/348042
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30840 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_devtools_bridge.cc | 10 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_devtools_bridge.h | 3 |
2 files changed, 2 insertions, 11 deletions
diff --git a/chrome/browser/extensions/extension_devtools_bridge.cc b/chrome/browser/extensions/extension_devtools_bridge.cc index da5885a..99f515b 100644 --- a/chrome/browser/extensions/extension_devtools_bridge.cc +++ b/chrome/browser/extensions/extension_devtools_bridge.cc @@ -17,7 +17,6 @@ ExtensionDevToolsBridge::ExtensionDevToolsBridge(int tab_id, Profile* profile) : tab_id_(tab_id), - inspected_rvh_(NULL), profile_(profile), on_page_event_name_( ExtensionDevToolsEvents::OnPageEventNameForTab(tab_id)), @@ -39,10 +38,9 @@ bool ExtensionDevToolsBridge::RegisterAsDevToolsClientHost() { int tab_index; if (ExtensionTabUtil::GetTabById(tab_id_, profile_, &browser, &tab_strip, &contents, &tab_index)) { - inspected_rvh_ = contents->render_view_host(); DevToolsManager* devtools_manager = DevToolsManager::GetInstance(); devtools_manager->RegisterDevToolsClientHostFor( - inspected_rvh_, this); + contents->render_view_host(), this); devtools_manager->ForwardToDevToolsAgent( this, DevToolsAgentMsg_SetApuAgentEnabled(true)); @@ -54,11 +52,7 @@ bool ExtensionDevToolsBridge::RegisterAsDevToolsClientHost() { void ExtensionDevToolsBridge::UnregisterAsDevToolsClientHost() { DCHECK_EQ(MessageLoop::current()->type(), MessageLoop::TYPE_UI); - if (inspected_rvh_) { - DevToolsManager::GetInstance()->UnregisterDevToolsClientHostFor( - inspected_rvh_); - inspected_rvh_ = NULL; - } + NotifyCloseListener(); } // If the tab we are looking at is going away then we fire a closing event at diff --git a/chrome/browser/extensions/extension_devtools_bridge.h b/chrome/browser/extensions/extension_devtools_bridge.h index 7cbbc8f..1745ef7 100644 --- a/chrome/browser/extensions/extension_devtools_bridge.h +++ b/chrome/browser/extensions/extension_devtools_bridge.h @@ -13,7 +13,6 @@ #include "chrome/browser/extensions/extension_message_service.h" class Profile; -class RenderViewHost; // This class is a DevToolsClientHost that fires extension events. class ExtensionDevToolsBridge : public DevToolsClientHost { @@ -40,8 +39,6 @@ class ExtensionDevToolsBridge : public DevToolsClientHost { // ID of the tab we are monitoring. int tab_id_; - // Host of the tab we are monitoring, NULL if not monitoring anything. - RenderViewHost* inspected_rvh_; scoped_refptr<ExtensionDevToolsManager> extension_devtools_manager_; scoped_refptr<ExtensionMessageService> extension_message_service_; |