OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/render_frame_proxy.h" | 5 #include "content/renderer/render_frame_proxy.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "content/common/frame_messages.h" | 10 #include "content/common/frame_messages.h" |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 } | 142 } |
143 | 143 |
144 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) { | 144 bool RenderFrameProxy::OnMessageReceived(const IPC::Message& msg) { |
145 bool handled = true; | 145 bool handled = true; |
146 IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg) | 146 IPC_BEGIN_MESSAGE_MAP(RenderFrameProxy, msg) |
147 IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy) | 147 IPC_MESSAGE_HANDLER(FrameMsg_DeleteProxy, OnDeleteProxy) |
148 IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone) | 148 IPC_MESSAGE_HANDLER(FrameMsg_ChildFrameProcessGone, OnChildFrameProcessGone) |
149 IPC_MESSAGE_HANDLER(FrameMsg_BuffersSwapped, OnBuffersSwapped) | 149 IPC_MESSAGE_HANDLER(FrameMsg_BuffersSwapped, OnBuffersSwapped) |
150 IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped, | 150 IPC_MESSAGE_HANDLER_GENERIC(FrameMsg_CompositorFrameSwapped, |
151 OnCompositorFrameSwapped(msg)) | 151 OnCompositorFrameSwapped(msg)) |
| 152 IPC_MESSAGE_HANDLER(FrameMsg_DisownOpener, OnDisownOpener) |
152 IPC_MESSAGE_UNHANDLED(handled = false) | 153 IPC_MESSAGE_UNHANDLED(handled = false) |
153 IPC_END_MESSAGE_MAP() | 154 IPC_END_MESSAGE_MAP() |
154 | 155 |
155 // If |handled| is true, |this| may have been deleted. | 156 // If |handled| is true, |this| may have been deleted. |
156 if (handled) | 157 if (handled) |
157 return true; | 158 return true; |
158 | 159 |
159 RenderFrameImpl* render_frame = | 160 RenderFrameImpl* render_frame = |
160 RenderFrameImpl::FromRoutingID(frame_routing_id_); | 161 RenderFrameImpl::FromRoutingID(frame_routing_id_); |
161 return render_frame && render_frame->OnMessageReceived(msg); | 162 return render_frame && render_frame->OnMessageReceived(msg); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); | 214 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); |
214 compositing_helper_->EnableCompositing(true); | 215 compositing_helper_->EnableCompositing(true); |
215 } | 216 } |
216 compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), | 217 compositing_helper_->OnCompositorFrameSwapped(frame.Pass(), |
217 param.a.producing_route_id, | 218 param.a.producing_route_id, |
218 param.a.output_surface_id, | 219 param.a.output_surface_id, |
219 param.a.producing_host_id, | 220 param.a.producing_host_id, |
220 param.a.shared_memory_handle); | 221 param.a.shared_memory_handle); |
221 } | 222 } |
222 | 223 |
| 224 void RenderFrameProxy::OnDisownOpener() { |
| 225 // When there is a RenderFrame for this proxy, tell it to disown its opener. |
| 226 // TODO(creis): Remove this when we only have WebRemoteFrames and make sure |
| 227 // they know they have an opener. |
| 228 RenderFrameImpl* render_frame = |
| 229 RenderFrameImpl::FromRoutingID(frame_routing_id_); |
| 230 if (render_frame) { |
| 231 if (render_frame->GetWebFrame()->opener()) |
| 232 render_frame->GetWebFrame()->setOpener(NULL); |
| 233 return; |
| 234 } |
| 235 |
| 236 if (web_frame_->opener()) |
| 237 web_frame_->setOpener(NULL); |
| 238 } |
| 239 |
223 } // namespace | 240 } // namespace |
OLD | NEW |