summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-03 19:07:10 +0000
committerjamesr@chromium.org <jamesr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-03 19:07:10 +0000
commit16bea2f619c07a92878d7ae356cf1b145f5449e5 (patch)
tree75df9b20619743a7317898b9c6c2d4387b3572a0
parent39cf67b9bb38b85a7aa88263e9fcfa731b8f2e7a (diff)
downloadchromium_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.cc10
-rw-r--r--chrome/browser/extensions/extension_devtools_bridge.h3
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_;