| 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..be4e111fc231b1d7ae84981df7963c6e682317b0 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,20 @@ void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) {
|
| param.a.shared_memory_handle);
|
| }
|
|
|
| +void RenderFrameProxy::OnDisownOpener() {
|
| + // 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
|
|
|