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) { |