Index: content/browser/frame_host/render_frame_host_manager.cc |
diff --git a/content/browser/frame_host/render_frame_host_manager.cc b/content/browser/frame_host/render_frame_host_manager.cc |
index 58c17d54c34798e0e070878e4e572a594f41a3a3..453294ba2fafbab374aae9ddb2e48f21507b28b3 100644 |
--- a/content/browser/frame_host/render_frame_host_manager.cc |
+++ b/content/browser/frame_host/render_frame_host_manager.cc |
@@ -948,6 +948,35 @@ void RenderFrameHostManager::OnEnforceStrictMixedContentChecking( |
} |
} |
+void RenderFrameHostManager::OnDidUpdateFrameOwnerProperties( |
+ const blink::WebFrameOwnerProperties& properties) { |
+ if (!SiteIsolationPolicy::AreCrossProcessFramesPossible()) |
+ return; |
+ |
+ // WebFrameOwnerProperties exist only for frames that have a parent. |
+ CHECK(frame_tree_node_->parent()); |
+ SiteInstance* parent_instance = |
+ frame_tree_node_->parent()->current_frame_host()->GetSiteInstance(); |
+ |
+ // Notify the RenderFrame if it lives in a different process from its parent. |
+ if (render_frame_host_->GetSiteInstance() != parent_instance) { |
+ render_frame_host_->Send(new FrameMsg_SetFrameOwnerProperties( |
+ render_frame_host_->GetRoutingID(), properties)); |
+ } |
+ |
+ // Notify this frame's proxies if they live in a different process from its |
+ // parent. |
+ // |
+ // TODO(alexmos): It would be sufficient to only send this update to proxies |
+ // in the current FrameTree. |
+ for (const auto& pair : proxy_hosts_) { |
+ if (pair.second->GetSiteInstance() != parent_instance) { |
+ pair.second->Send(new FrameMsg_SetFrameOwnerProperties( |
+ pair.second->GetRoutingID(), properties)); |
+ } |
+ } |
+} |
+ |
void RenderFrameHostManager::OnDidUpdateOrigin( |
const url::Origin& origin, |
bool is_potentially_trustworthy_unique_origin) { |