| 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 |