Chromium Code Reviews| Index: extensions/browser/extension_web_contents_observer.cc |
| diff --git a/extensions/browser/extension_web_contents_observer.cc b/extensions/browser/extension_web_contents_observer.cc |
| index 665fc0809cca1b3ebcfa428ae79d762d9c8c5caa..452d9c7ff10e80e0ea9028b08744cfd9ce26fa33 100644 |
| --- a/extensions/browser/extension_web_contents_observer.cc |
| +++ b/extensions/browser/extension_web_contents_observer.cc |
| @@ -4,6 +4,7 @@ |
| #include "extensions/browser/extension_web_contents_observer.h" |
| +#include "components/guest_view/browser/guest_view_base.h" |
| #include "content/public/browser/child_process_security_policy.h" |
| #include "content/public/browser/render_frame_host.h" |
| #include "content/public/browser/render_process_host.h" |
| @@ -50,9 +51,17 @@ void ExtensionWebContentsObserver::InitializeRenderFrame( |
| DCHECK(render_frame_host); |
| DCHECK(render_frame_host->IsRenderFrameLive()); |
| + ViewType view_type = GetViewType(web_contents()); |
| + if (view_type == VIEW_TYPE_INVALID) { |
| + // This is expected to happen only for non-extension pages (e.g. devtools) |
| + // and GuestViews. |
| + DCHECK(guest_view::GuestViewBase::FromWebContents(web_contents()) || |
| + GetExtensionIdFromFrame(render_frame_host).empty()); |
| + return; |
| + } |
| // Notify the render frame of the view type. |
| render_frame_host->Send(new ExtensionMsg_NotifyRenderViewType( |
| - render_frame_host->GetRoutingID(), GetViewType(web_contents()))); |
| + render_frame_host->GetRoutingID(), view_type)); |
| const Extension* frame_extension = GetExtensionFromFrame(render_frame_host); |
| if (frame_extension) { |
| @@ -110,6 +119,13 @@ void ExtensionWebContentsObserver::RenderFrameDeleted( |
| ->UnregisterRenderFrameHost(render_frame_host); |
| } |
| +void ExtensionWebContentsObserver::RenderFrameHostChanged( |
|
ncarter (slow)
2015/11/02 17:36:20
If you are listening for changes to GetLastCommitt
robwu
2015/11/02 22:50:41
This class is only interested in whether a RFH is
ncarter (slow)
2015/11/03 23:32:02
I'm one of the site-isolation-dev folks, fyi.
Are
robwu
2015/11/04 00:34:02
Extension frames in extension processes only. Exte
|
| + content::RenderFrameHost* old_host, |
| + content::RenderFrameHost* new_host) { |
|
ncarter (slow)
2015/11/03 23:32:02
Which test is it, that needs this logic?
I patche
robwu
2015/11/04 00:34:02
I have a manual test:
1. Build Chrome with both p
robwu
2015/11/04 23:52:23
I have now added a browsertest that shows why Rend
|
| + if (new_host->IsRenderFrameLive()) |
| + InitializeRenderFrame(new_host); |
|
ncarter (slow)
2015/11/03 23:32:02
I put the following line at the top of WebContents
robwu
2015/11/04 00:34:02
Yes, that's exactly what I'm relying on. This seem
|
| +} |
| + |
| bool ExtensionWebContentsObserver::OnMessageReceived( |
| const IPC::Message& message, |
| content::RenderFrameHost* render_frame_host) { |