Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1183)

Unified Diff: content/renderer/render_frame_proxy.cc

Issue 505443002: Move DisownOpener to RenderFrameHost / RenderFrameProxyHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes from review Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/render_frame_proxy.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/render_frame_proxy.cc
diff --git a/content/renderer/render_frame_proxy.cc b/content/renderer/render_frame_proxy.cc
index ff16e41aa71aca85ba94d49f6b36690e63f5f13a..8faba966baa74befe69a602524bd33670186e8bc 100644
--- a/content/renderer/render_frame_proxy.cc
+++ b/content/renderer/render_frame_proxy.cc
@@ -149,6 +149,7 @@ bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) {
IPC_MESSAGE_HANDLER(FrameMsg_BuffersSwapped, OnBuffersSwapped)
IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped,
OnCompositorFrameSwapped(msg))
+ IPC_MESSAGE_HANDLER(FrameMsg_DisownOpener, OnDisownOpener)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -220,4 +221,25 @@ void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) {
param.a.shared_memory_handle);
}
+void RenderFrameProxy::OnDisownOpener() {
+ // TODO(creis): We should only see this for main frames for now. To support
+ // disowning the opener on subframes, we will need to move WebContentsImpl's
+ // opener_ to FrameTreeNode.
+ CHECK(!web_frame_->parent());
+
+ // When there is a RenderFrame for this proxy, tell it to disown its opener.
+ // TODO(creis): Remove this when we only have WebRemoteFrames and make sure
+ // they know they have an opener.
+ RenderFrameImpl* render_frame =
+ RenderFrameImpl::FromRoutingID(frame_routing_id_);
+ if (render_frame) {
+ if (render_frame->GetWebFrame()->opener())
+ render_frame->GetWebFrame()->setOpener(NULL);
+ return;
+ }
+
+ if (web_frame_->opener())
+ web_frame_->setOpener(NULL);
+}
+
} // namespace
« no previous file with comments | « content/renderer/render_frame_proxy.h ('k') | content/renderer/render_view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698