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 <stdint.h> | 7 #include <stdint.h> |
8 #include <map> | 8 #include <map> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 render_view_ = render_view; | 193 render_view_ = render_view; |
194 render_widget_ = render_widget; | 194 render_widget_ = render_widget; |
195 | 195 |
196 render_widget_->RegisterRenderFrameProxy(this); | 196 render_widget_->RegisterRenderFrameProxy(this); |
197 | 197 |
198 std::pair<FrameMap::iterator, bool> result = | 198 std::pair<FrameMap::iterator, bool> result = |
199 g_frame_map.Get().insert(std::make_pair(web_frame_, this)); | 199 g_frame_map.Get().insert(std::make_pair(web_frame_, this)); |
200 CHECK(result.second) << "Inserted a duplicate item."; | 200 CHECK(result.second) << "Inserted a duplicate item."; |
201 } | 201 } |
202 | 202 |
203 bool RenderFrameProxy::IsMainFrameDetachedFromTree() const { | |
204 if (SiteIsolationPolicy::IsSwappedOutStateForbidden()) | |
205 return false; | |
206 return web_frame_->top() == web_frame_ && | |
207 render_view_->webview()->mainFrame()->isWebLocalFrame(); | |
208 } | |
209 | |
210 void RenderFrameProxy::WillBeginCompositorFrame() { | 203 void RenderFrameProxy::WillBeginCompositorFrame() { |
211 if (compositing_helper_) { | 204 if (compositing_helper_) { |
212 FrameHostMsg_HittestData_Params params; | 205 FrameHostMsg_HittestData_Params params; |
213 params.surface_id = compositing_helper_->surface_id(); | 206 params.surface_id = compositing_helper_->surface_id(); |
214 params.ignored_for_hittest = web_frame_->isIgnoredForHitTest(); | 207 params.ignored_for_hittest = web_frame_->isIgnoredForHitTest(); |
215 render_widget_->QueueMessage( | 208 render_widget_->QueueMessage( |
216 new FrameHostMsg_HittestData(render_widget_->routing_id(), params), | 209 new FrameHostMsg_HittestData(render_widget_->routing_id(), params), |
217 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); | 210 MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE); |
218 } | 211 } |
219 } | 212 } |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 compositing_helper_ = | 307 compositing_helper_ = |
315 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); | 308 ChildFrameCompositingHelper::CreateForRenderFrameProxy(this); |
316 } | 309 } |
317 compositing_helper_->OnSetSurface(surface_id, frame_size, scale_factor, | 310 compositing_helper_->OnSetSurface(surface_id, frame_size, scale_factor, |
318 sequence); | 311 sequence); |
319 } | 312 } |
320 | 313 |
321 void RenderFrameProxy::OnUpdateOpener(int opener_routing_id) { | 314 void RenderFrameProxy::OnUpdateOpener(int opener_routing_id) { |
322 blink::WebFrame* opener = | 315 blink::WebFrame* opener = |
323 RenderFrameImpl::ResolveOpener(opener_routing_id, nullptr); | 316 RenderFrameImpl::ResolveOpener(opener_routing_id, nullptr); |
324 | |
325 // When there is a RenderFrame for this proxy, tell it to update its opener. | |
326 // TODO(alexmos, nasko): Remove this when we only have WebRemoteFrames. | |
327 if (!SiteIsolationPolicy::IsSwappedOutStateForbidden()) { | |
328 RenderFrameImpl* render_frame = | |
329 RenderFrameImpl::FromRoutingID(frame_routing_id_); | |
330 if (render_frame) { | |
331 render_frame->GetWebFrame()->setOpener(opener); | |
332 return; | |
333 } | |
334 } | |
335 | |
336 web_frame_->setOpener(opener); | 317 web_frame_->setOpener(opener); |
337 } | 318 } |
338 | 319 |
339 void RenderFrameProxy::OnDidStartLoading() { | 320 void RenderFrameProxy::OnDidStartLoading() { |
340 if (IsMainFrameDetachedFromTree()) | |
341 return; | |
342 | |
343 web_frame_->didStartLoading(); | 321 web_frame_->didStartLoading(); |
344 } | 322 } |
345 | 323 |
346 void RenderFrameProxy::OnDidStopLoading() { | 324 void RenderFrameProxy::OnDidStopLoading() { |
347 if (IsMainFrameDetachedFromTree()) | |
348 return; | |
349 | |
350 web_frame_->didStopLoading(); | 325 web_frame_->didStopLoading(); |
351 } | 326 } |
352 | 327 |
353 void RenderFrameProxy::OnDispatchLoad() { | 328 void RenderFrameProxy::OnDispatchLoad() { |
354 web_frame_->DispatchLoadEventForFrameOwner(); | 329 web_frame_->DispatchLoadEventForFrameOwner(); |
355 } | 330 } |
356 | 331 |
357 void RenderFrameProxy::OnDidUpdateName(const std::string& name, | 332 void RenderFrameProxy::OnDidUpdateName(const std::string& name, |
358 const std::string& unique_name) { | 333 const std::string& unique_name) { |
359 web_frame_->setReplicatedName(blink::WebString::fromUTF8(name), | 334 web_frame_->setReplicatedName(blink::WebString::fromUTF8(name), |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 blink::WebLocalFrame* source) { | 464 blink::WebLocalFrame* source) { |
490 int source_routing_id = RenderFrameImpl::FromWebFrame(source)->GetRoutingID(); | 465 int source_routing_id = RenderFrameImpl::FromWebFrame(source)->GetRoutingID(); |
491 Send(new FrameHostMsg_AdvanceFocus(routing_id_, type, source_routing_id)); | 466 Send(new FrameHostMsg_AdvanceFocus(routing_id_, type, source_routing_id)); |
492 } | 467 } |
493 | 468 |
494 void RenderFrameProxy::frameFocused() { | 469 void RenderFrameProxy::frameFocused() { |
495 Send(new FrameHostMsg_FrameFocused(routing_id_)); | 470 Send(new FrameHostMsg_FrameFocused(routing_id_)); |
496 } | 471 } |
497 | 472 |
498 } // namespace | 473 } // namespace |
OLD | NEW |