Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 645644f4279af87a2a3c216be1155838995cccca..fb042ccb2ebf71203843d246c88082a917ce536b 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -3013,8 +3013,10 @@ void WebContentsImpl::RouteMessageEvent( |
RenderViewHost* rvh, |
const ViewMsg_PostMessage_Params& params) { |
// Only deliver the message to the active RenderViewHost if the request |
- // came from a RenderViewHost in the same BrowsingInstance. |
- if (!rvh->GetSiteInstance()->IsRelatedSiteInstance(GetSiteInstance())) |
+ // came from a RenderViewHost in the same BrowsingInstance or this WebContents |
+ // is dedicated to a browser plugin guest. |
Charlie Reis
2012/10/12 00:31:43
nit: or if
This check isn't quite right, but I'm
Fady Samuel
2012/10/12 18:07:53
Done.
|
+ if (!rvh->GetSiteInstance()->IsRelatedSiteInstance(GetSiteInstance()) && |
+ !GetBrowserPluginGuest() && !GetBrowserPluginEmbedder()) |
return; |
ViewMsg_PostMessage_Params new_params(params); |
@@ -3039,8 +3041,13 @@ void WebContentsImpl::RouteMessageEvent( |
} |
if (source_contents) { |
- new_params.source_routing_id = |
- source_contents->CreateOpenerRenderViews(GetSiteInstance()); |
+ if (GetBrowserPluginGuest()) { |
+ new_params.source_routing_id = |
Charlie Reis
2012/10/12 00:31:43
Please mention that we create a swapped out RV for
Fady Samuel
2012/10/12 18:07:53
Done.
|
+ source_contents->CreateSwappedOutRenderView(GetSiteInstance()); |
+ } else { |
+ new_params.source_routing_id = |
+ source_contents->CreateOpenerRenderViews(GetSiteInstance()); |
+ } |
} else { |
// We couldn't find it, so don't pass a source frame. |
new_params.source_routing_id = MSG_ROUTING_NONE; |
@@ -3143,6 +3150,11 @@ WebPreferences WebContentsImpl::GetWebkitPrefs() { |
return GetWebkitPrefs(GetRenderViewHost(), url); |
} |
+int WebContentsImpl::CreateSwappedOutRenderView( |
+ content::SiteInstance* instance) { |
+ return render_manager_.CreateRenderView(instance, MSG_ROUTING_NONE, true); |
+} |
+ |
void WebContentsImpl::OnUserGesture() { |
// Notify observers. |
FOR_EACH_OBSERVER(WebContentsObserver, observers_, DidGetUserGesture()); |