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/child/webmessageportchannel_impl.h" | 10 #include "content/child/webmessageportchannel_impl.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
111 RenderFrameProxy::~RenderFrameProxy() { | 111 RenderFrameProxy::~RenderFrameProxy() { |
112 render_view()->UnregisterRenderFrameProxy(this); | 112 render_view()->UnregisterRenderFrameProxy(this); |
113 | 113 |
114 FrameMap::iterator it = g_frame_map.Get().find(web_frame_); | 114 FrameMap::iterator it = g_frame_map.Get().find(web_frame_); |
115 CHECK(it != g_frame_map.Get().end()); | 115 CHECK(it != g_frame_map.Get().end()); |
116 CHECK_EQ(it->second, this); | 116 CHECK_EQ(it->second, this); |
117 g_frame_map.Get().erase(it); | 117 g_frame_map.Get().erase(it); |
118 | 118 |
119 RenderThread::Get()->RemoveRoute(routing_id_); | 119 RenderThread::Get()->RemoveRoute(routing_id_); |
120 g_routing_id_proxy_map.Get().erase(routing_id_); | 120 g_routing_id_proxy_map.Get().erase(routing_id_); |
121 | |
122 // TODO(nick): Call close unconditionally when web_frame() is always remote. | |
123 if (web_frame()->isWebRemoteFrame()) | |
124 web_frame()->close(); | |
125 } | 121 } |
126 | 122 |
127 void RenderFrameProxy::Init(blink::WebRemoteFrame* web_frame, | 123 void RenderFrameProxy::Init(blink::WebRemoteFrame* web_frame, |
128 RenderViewImpl* render_view) { | 124 RenderViewImpl* render_view) { |
129 CHECK(web_frame); | 125 CHECK(web_frame); |
130 CHECK(render_view); | 126 CHECK(render_view); |
131 | 127 |
132 web_frame_ = web_frame; | 128 web_frame_ = web_frame; |
133 render_view_ = render_view; | 129 render_view_ = render_view; |
134 | 130 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
168 bool RenderFrameProxy::Send(IPC::Message* message) { | 164 bool RenderFrameProxy::Send(IPC::Message* message) { |
169 if (!SwappedOutMessages::CanSendWhileSwappedOut(message)) { | 165 if (!SwappedOutMessages::CanSendWhileSwappedOut(message)) { |
170 delete message; | 166 delete message; |
171 return false; | 167 return false; |
172 } | 168 } |
173 message->set_routing_id(routing_id_); | 169 message->set_routing_id(routing_id_); |
174 return RenderThread::Get()->Send(message); | 170 return RenderThread::Get()->Send(message); |
175 } | 171 } |
176 | 172 |
177 void RenderFrameProxy::OnDeleteProxy() { | 173 void RenderFrameProxy::OnDeleteProxy() { |
178 RenderFrameImpl* render_frame = | 174 RenderFrameImpl* render_frame = |
Charlie Reis
2014/10/16 23:48:29
Don't need this anymore.
| |
179 RenderFrameImpl::FromRoutingID(frame_routing_id_); | 175 RenderFrameImpl::FromRoutingID(frame_routing_id_); |
180 | 176 |
181 if (render_frame) | 177 DCHECK(web_frame_->isWebRemoteFrame()); |
182 render_frame->set_render_frame_proxy(NULL); | 178 web_frame_->detach(); |
183 | |
184 delete this; | |
185 } | 179 } |
186 | 180 |
187 void RenderFrameProxy::OnChildFrameProcessGone() { | 181 void RenderFrameProxy::OnChildFrameProcessGone() { |
188 if (compositing_helper_.get()) | 182 if (compositing_helper_.get()) |
189 compositing_helper_->ChildFrameGone(); | 183 compositing_helper_->ChildFrameGone(); |
190 } | 184 } |
191 | 185 |
192 void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) { | 186 void RenderFrameProxy::OnCompositorFrameSwapped(const IPC::Message& message) { |
193 FrameMsg_CompositorFrameSwapped::Param param; | 187 FrameMsg_CompositorFrameSwapped::Param param; |
194 if (!FrameMsg_CompositorFrameSwapped::Read(&message, ¶m)) | 188 if (!FrameMsg_CompositorFrameSwapped::Read(&message, ¶m)) |
(...skipping 28 matching lines...) Expand all Loading... | |
223 if (render_frame) { | 217 if (render_frame) { |
224 if (render_frame->GetWebFrame()->opener()) | 218 if (render_frame->GetWebFrame()->opener()) |
225 render_frame->GetWebFrame()->setOpener(NULL); | 219 render_frame->GetWebFrame()->setOpener(NULL); |
226 return; | 220 return; |
227 } | 221 } |
228 | 222 |
229 if (web_frame_->opener()) | 223 if (web_frame_->opener()) |
230 web_frame_->setOpener(NULL); | 224 web_frame_->setOpener(NULL); |
231 } | 225 } |
232 | 226 |
227 void RenderFrameProxy::frameDetached() { | |
228 if (web_frame_->parent()) | |
229 web_frame_->parent()->removeChild(web_frame_); | |
230 | |
231 web_frame_->close(); | |
232 delete this; | |
233 } | |
234 | |
233 void RenderFrameProxy::postMessageEvent( | 235 void RenderFrameProxy::postMessageEvent( |
234 blink::WebLocalFrame* source_frame, | 236 blink::WebLocalFrame* source_frame, |
235 blink::WebRemoteFrame* target_frame, | 237 blink::WebRemoteFrame* target_frame, |
236 blink::WebSecurityOrigin target_origin, | 238 blink::WebSecurityOrigin target_origin, |
237 blink::WebDOMMessageEvent event) { | 239 blink::WebDOMMessageEvent event) { |
238 DCHECK(!web_frame_ || web_frame_ == target_frame); | 240 DCHECK(!web_frame_ || web_frame_ == target_frame); |
239 | 241 |
240 ViewMsg_PostMessage_Params params; | 242 ViewMsg_PostMessage_Params params; |
241 params.is_data_raw_string = false; | 243 params.is_data_raw_string = false; |
242 params.data = event.data().toString(); | 244 params.data = event.data().toString(); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
292 blink::WebUserGestureIndicator::isProcessingUserGesture(); | 294 blink::WebUserGestureIndicator::isProcessingUserGesture(); |
293 blink::WebUserGestureIndicator::consumeUserGesture(); | 295 blink::WebUserGestureIndicator::consumeUserGesture(); |
294 Send(new FrameHostMsg_OpenURL(routing_id_, params)); | 296 Send(new FrameHostMsg_OpenURL(routing_id_, params)); |
295 } | 297 } |
296 | 298 |
297 void RenderFrameProxy::forwardInputEvent(const blink::WebInputEvent* event) { | 299 void RenderFrameProxy::forwardInputEvent(const blink::WebInputEvent* event) { |
298 Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); | 300 Send(new FrameHostMsg_ForwardInputEvent(routing_id_, event)); |
299 } | 301 } |
300 | 302 |
301 } // namespace | 303 } // namespace |
OLD | NEW |