Chromium Code Reviews| Index: chrome/browser/renderer_host/chrome_render_view_host_observer.cc |
| diff --git a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc |
| index a0642846fef1e6e0e5d1d8bf8f96cd065342618b..4380ca28f38be0e107ad0c9e0852ebf884aff326 100644 |
| --- a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc |
| +++ b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc |
| @@ -19,6 +19,8 @@ |
| #include "content/public/browser/render_view_host.h" |
| #include "content/public/browser/render_view_host_delegate.h" |
| #include "content/public/browser/site_instance.h" |
| +#include "content/public/browser/web_contents.h" |
| +#include "content/browser/web_contents/web_contents_impl.h" |
|
benwells
2012/04/19 11:34:02
This causes a build error due to an illegal depend
|
| using content::ChildProcessSecurityPolicy; |
| using content::RenderViewHost; |
| @@ -85,7 +87,9 @@ void ChromeRenderViewHostObserver::InitRenderViewHostForExtensions() { |
| CHECK(process_manager); |
| // TODO(creis): Use this to replace SetInstalledAppForRenderer. |
| - process_manager->RegisterRenderViewHost(render_view_host(), extension); |
| + content::WebContents* contents = GetWebContents(render_view_host()); |
| + if (contents) |
| + process_manager->RegisterWebContents(contents, extension); |
| if (extension->is_app()) { |
| // Record which, if any, installed app is associated with this process. |
| @@ -169,10 +173,26 @@ const Extension* ChromeRenderViewHostObserver::GetExtension() { |
| void ChromeRenderViewHostObserver::RemoveRenderViewHostForExtensions( |
| RenderViewHost* rvh) { |
| + content::WebContents* contents = GetWebContents(rvh); |
| + if (!contents) |
| + return; |
| + |
| ExtensionProcessManager* process_manager = |
| profile_->GetExtensionProcessManager(); |
| if (process_manager) |
| - process_manager->UnregisterRenderViewHost(rvh); |
| + process_manager->UnregisterWebContents(contents); |
|
Charlie Reis
2012/04/19 21:42:10
I don't think this will get called if you navigate
|
| +} |
| + |
| +content::WebContents* ChromeRenderViewHostObserver::GetWebContents( |
| + RenderViewHost* rvh) { |
| + // TODO(benwells): Remove this hack. Instead registration should |
| + // be made by the view owning the WebContents (e.g. ShellWindow), |
| + // or we go back to registering RenderViewHosts and expose their |
| + // is_loading field. |
| + content::ViewType view_type = rvh->GetDelegate()->GetRenderViewType(); |
| + if (view_type == content::VIEW_TYPE_WEB_CONTENTS) |
| + return static_cast<WebContentsImpl*>(rvh->GetDelegate()); |
|
benwells
2012/04/19 11:34:02
How should I do this correctly?
If I use reinterp
Matt Perry
2012/04/19 20:53:19
You're having trouble here because you're trying t
|
| + return NULL; |
| } |
| void ChromeRenderViewHostObserver::OnFocusedEditableNodeTouched() { |