diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 03:46:14 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-10-22 03:46:14 +0000 |
commit | bc0ee2456baa98624a7254071008bb7aa66307cd (patch) | |
tree | 2216724ed9d3af0ace5e80c2a069c01ac30601f8 | |
parent | c7ec171bf29801a3aede36ec404ae38d2a26e25d (diff) | |
download | chromium_src-bc0ee2456baa98624a7254071008bb7aa66307cd.zip chromium_src-bc0ee2456baa98624a7254071008bb7aa66307cd.tar.gz chromium_src-bc0ee2456baa98624a7254071008bb7aa66307cd.tar.bz2 |
Replace the RenderViewHostObserver in UIThreadExtensionFunction with a WebContentsObserver. This is part of the effort to remove RenderViewHostObserver.
BUG=306569
R=yoz@chromium.org
Review URL: https://codereview.chromium.org/32633004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230037 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/extensions/extension_function.cc | 46 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_function.h | 19 |
2 files changed, 31 insertions, 34 deletions
diff --git a/chrome/browser/extensions/extension_function.cc b/chrome/browser/extensions/extension_function.cc index 766a106..5b5ea2a 100644 --- a/chrome/browser/extensions/extension_function.cc +++ b/chrome/browser/extensions/extension_function.cc @@ -21,9 +21,12 @@ #include "content/public/browser/notification_types.h" #include "content/public/browser/render_process_host.h" #include "content/public/browser/render_view_host.h" +#include "content/public/browser/web_contents.h" +#include "content/public/browser/web_contents_observer.h" using content::BrowserThread; using content::RenderViewHost; +using content::WebContents; using extensions::ExtensionAPI; using extensions::Feature; @@ -32,25 +35,36 @@ void ExtensionFunctionDeleteTraits::Destruct(const ExtensionFunction* x) { x->Destruct(); } -UIThreadExtensionFunction::RenderViewHostTracker::RenderViewHostTracker( - UIThreadExtensionFunction* function) - : content::RenderViewHostObserver(function->render_view_host()), - function_(function) { -} +// Helper class to track the lifetime of ExtensionFunction's RenderViewHost +// pointer and NULL it out when it dies. It also allows us to filter IPC +// messages coming from the RenderViewHost. +class UIThreadExtensionFunction::RenderViewHostTracker + : public content::WebContentsObserver { + public: + explicit RenderViewHostTracker(UIThreadExtensionFunction* function) + : content::WebContentsObserver( + WebContents::FromRenderViewHost(function->render_view_host())), + function_(function) { + } -void UIThreadExtensionFunction::RenderViewHostTracker::RenderViewHostDestroyed( - RenderViewHost* render_view_host) { - // Overidding the default behavior of RenderViewHostObserver which is to - // delete this. In our case, we'll be deleted when the - // UIThreadExtensionFunction that contains us goes away. + private: + // content::WebContentsObserver: + virtual void RenderViewDeleted( + content::RenderViewHost* render_view_host) OVERRIDE { + if (render_view_host != function_->render_view_host()) + return; - function_->SetRenderViewHost(NULL); -} + function_->SetRenderViewHost(NULL); + } -bool UIThreadExtensionFunction::RenderViewHostTracker::OnMessageReceived( - const IPC::Message& message) { - return function_->OnMessageReceivedFromRenderView(message); -} + virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE { + return function_->OnMessageReceivedFromRenderView(message); + } + + UIThreadExtensionFunction* function_; + + DISALLOW_COPY_AND_ASSIGN(RenderViewHostTracker); +}; ExtensionFunction::ExtensionFunction() : request_id_(-1), diff --git a/chrome/browser/extensions/extension_function.h b/chrome/browser/extensions/extension_function.h index 8ffee2e..d26ae1e 100644 --- a/chrome/browser/extensions/extension_function.h +++ b/chrome/browser/extensions/extension_function.h @@ -19,7 +19,6 @@ #include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/extensions/extension.h" #include "content/public/browser/browser_thread.h" -#include "content/public/browser/render_view_host_observer.h" #include "content/public/common/console_message_level.h" #include "ipc/ipc_message.h" @@ -368,23 +367,7 @@ class UIThreadExtensionFunction : public ExtensionFunction { Profile* profile_; private: - // Helper class to track the lifetime of ExtensionFunction's RenderViewHost - // pointer and NULL it out when it dies. It also allows us to filter IPC - // messages coming from the RenderViewHost. - class RenderViewHostTracker : public content::RenderViewHostObserver { - public: - explicit RenderViewHostTracker(UIThreadExtensionFunction* function); - - private: - // content::RenderViewHostObserver: - virtual void RenderViewHostDestroyed( - content::RenderViewHost* render_view_host) OVERRIDE; - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; - - UIThreadExtensionFunction* function_; - - DISALLOW_COPY_AND_ASSIGN(RenderViewHostTracker); - }; + class RenderViewHostTracker; virtual void Destruct() const OVERRIDE; |