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 fe1f367c23944475d8f5c55c9d27af2e38867916..d7de21fb88d74f069d72ac0a16cfa2124e7bc0b8 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -498,6 +498,8 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, |
#if defined(ENABLE_PLUGINS) |
IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung) |
IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed) |
+ IPC_MESSAGE_HANDLER(FrameHostMsg_PluginContentOriginAllowed, |
+ OnPluginContentOriginAllowed) |
#endif |
IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse, |
OnDomOperationResponse) |
@@ -2576,6 +2578,12 @@ void WebContentsImpl::DidNavigateMainFramePostCommit( |
// clear the bubble when a user navigates to a named anchor in the same |
// page. |
UpdateTargetURL(GURL()); |
+ |
+#if defined(ENABLE_PLUGINS) |
+ // Clear the tab-wide origin whitelist. We expect RenderFrames to clear |
+ // their replicated origin whitelist independently. |
+ plugin_content_origin_whitelist_.clear(); |
+#endif |
} |
if (!details.is_in_page) { |
@@ -2907,6 +2915,15 @@ void WebContentsImpl::OnPluginCrashed(const base::FilePath& plugin_path, |
PluginCrashed(plugin_path, plugin_pid)); |
} |
+void WebContentsImpl::OnPluginContentOriginAllowed(const GURL& content_origin) { |
+ DCHECK(render_frame_message_source_); |
+ DCHECK(!render_view_message_source_); |
+ |
+ plugin_content_origin_whitelist_.insert(content_origin); |
+ |
+ SendToAllFrames(new FrameMsg_UpdatePluginContentOriginWhitelist( |
+ MSG_ROUTING_NONE, plugin_content_origin_whitelist_)); |
+} |
#endif // defined(ENABLE_PLUGINS) |
void WebContentsImpl::OnDomOperationResponse(const std::string& json_string, |
@@ -3342,6 +3359,13 @@ void WebContentsImpl::RenderFrameCreated(RenderFrameHost* render_frame_host) { |
observers_, |
RenderFrameCreated(render_frame_host)); |
SetAccessibilityModeOnFrame(accessibility_mode_, render_frame_host); |
+ |
+#if defined(ENABLE_PLUGINS) |
+ if (!plugin_content_origin_whitelist_.empty()) { |
Charlie Reis
2014/10/30 22:13:16
This feels like it belongs in a WebContentsObserve
tommycli
2014/10/31 00:01:21
Done.
|
+ Send(new FrameMsg_UpdatePluginContentOriginWhitelist( |
+ render_frame_host->GetRoutingID(), plugin_content_origin_whitelist_)); |
+ } |
+#endif |
} |
void WebContentsImpl::RenderFrameDeleted(RenderFrameHost* render_frame_host) { |