OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
109 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 109 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
110 #include "net/http/http_util.h" | 110 #include "net/http/http_util.h" |
111 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 111 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" |
112 #include "third_party/WebKit/public/platform/WebString.h" | 112 #include "third_party/WebKit/public/platform/WebString.h" |
113 #include "third_party/WebKit/public/platform/WebURL.h" | 113 #include "third_party/WebKit/public/platform/WebURL.h" |
114 #include "third_party/WebKit/public/platform/WebURLError.h" | 114 #include "third_party/WebKit/public/platform/WebURLError.h" |
115 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 115 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
116 #include "third_party/WebKit/public/platform/WebVector.h" | 116 #include "third_party/WebKit/public/platform/WebVector.h" |
117 #include "third_party/WebKit/public/web/WebColorSuggestion.h" | 117 #include "third_party/WebKit/public/web/WebColorSuggestion.h" |
118 #include "third_party/WebKit/public/web/WebDocument.h" | 118 #include "third_party/WebKit/public/web/WebDocument.h" |
119 #include "third_party/WebKit/public/web/WebFrameWidget.h" | |
119 #include "third_party/WebKit/public/web/WebGlyphCache.h" | 120 #include "third_party/WebKit/public/web/WebGlyphCache.h" |
120 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 121 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
121 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" | 122 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" |
122 #include "third_party/WebKit/public/web/WebNavigationPolicy.h" | 123 #include "third_party/WebKit/public/web/WebNavigationPolicy.h" |
123 #include "third_party/WebKit/public/web/WebPlugin.h" | 124 #include "third_party/WebKit/public/web/WebPlugin.h" |
124 #include "third_party/WebKit/public/web/WebPluginParams.h" | 125 #include "third_party/WebKit/public/web/WebPluginParams.h" |
125 #include "third_party/WebKit/public/web/WebPluginPlaceholder.h" | 126 #include "third_party/WebKit/public/web/WebPluginPlaceholder.h" |
126 #include "third_party/WebKit/public/web/WebRange.h" | 127 #include "third_party/WebKit/public/web/WebRange.h" |
127 #include "third_party/WebKit/public/web/WebScriptSource.h" | 128 #include "third_party/WebKit/public/web/WebScriptSource.h" |
128 #include "third_party/WebKit/public/web/WebSearchableFormData.h" | 129 #include "third_party/WebKit/public/web/WebSearchableFormData.h" |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
494 // static | 495 // static |
495 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int32 routing_id) { | 496 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int32 routing_id) { |
496 RoutingIDFrameMap::iterator iter = | 497 RoutingIDFrameMap::iterator iter = |
497 g_routing_id_frame_map.Get().find(routing_id); | 498 g_routing_id_frame_map.Get().find(routing_id); |
498 if (iter != g_routing_id_frame_map.Get().end()) | 499 if (iter != g_routing_id_frame_map.Get().end()) |
499 return iter->second; | 500 return iter->second; |
500 return NULL; | 501 return NULL; |
501 } | 502 } |
502 | 503 |
503 // static | 504 // static |
504 void RenderFrameImpl::CreateFrame(int routing_id, | 505 void RenderFrameImpl::CreateFrame( |
505 int parent_routing_id, | 506 int routing_id, |
506 int proxy_routing_id) { | 507 int parent_routing_id, |
508 int proxy_routing_id, | |
509 CompositorDependencies* compositor_deps, | |
510 const FrameMsg_NewFrame_WidgetParams& params) { | |
nasko
2015/01/14 20:08:05
nit: s/params/widget_params/
nasko
2015/01/15 23:11:15
Did you mean to change this?
kenrb
2015/01/16 17:44:00
Done.
| |
507 // TODO(nasko): For now, this message is only sent for subframes, as the | 511 // TODO(nasko): For now, this message is only sent for subframes, as the |
508 // top level frame is created when the RenderView is created through the | 512 // top level frame is created when the RenderView is created through the |
509 // ViewMsg_New IPC. | 513 // ViewMsg_New IPC. |
510 CHECK_NE(MSG_ROUTING_NONE, parent_routing_id); | 514 CHECK_NE(MSG_ROUTING_NONE, parent_routing_id); |
511 | 515 |
512 blink::WebLocalFrame* web_frame; | 516 blink::WebLocalFrame* web_frame; |
513 RenderFrameImpl* render_frame; | 517 RenderFrameImpl* render_frame; |
514 if (proxy_routing_id == MSG_ROUTING_NONE) { | 518 if (proxy_routing_id == MSG_ROUTING_NONE) { |
515 RenderFrameProxy* parent_proxy = | 519 RenderFrameProxy* parent_proxy = |
516 RenderFrameProxy::FromRoutingID(parent_routing_id); | 520 RenderFrameProxy::FromRoutingID(parent_routing_id); |
517 // If the browser is sending a valid parent routing id, it should already | 521 // If the browser is sending a valid parent routing id, it should already |
518 // be created and registered. | 522 // be created and registered. |
519 CHECK(parent_proxy); | 523 CHECK(parent_proxy); |
520 blink::WebRemoteFrame* parent_web_frame = parent_proxy->web_frame(); | 524 blink::WebRemoteFrame* parent_web_frame = parent_proxy->web_frame(); |
521 | 525 |
522 // Create the RenderFrame and WebLocalFrame, linking the two. | 526 // Create the RenderFrame and WebLocalFrame, linking the two. |
523 render_frame = | 527 render_frame = |
524 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); | 528 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); |
525 web_frame = parent_web_frame->createLocalChild("", render_frame); | 529 web_frame = parent_web_frame->createLocalChild("", render_frame); |
526 } else { | 530 } else { |
527 RenderFrameProxy* proxy = | 531 RenderFrameProxy* proxy = |
528 RenderFrameProxy::FromRoutingID(proxy_routing_id); | 532 RenderFrameProxy::FromRoutingID(proxy_routing_id); |
529 CHECK(proxy); | 533 CHECK(proxy); |
530 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); | 534 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); |
531 web_frame = blink::WebLocalFrame::create(render_frame); | 535 web_frame = blink::WebLocalFrame::create(render_frame); |
532 render_frame->proxy_routing_id_ = proxy_routing_id; | 536 render_frame->proxy_routing_id_ = proxy_routing_id; |
533 web_frame->initializeToReplaceRemoteFrame(proxy->web_frame()); | 537 web_frame->initializeToReplaceRemoteFrame(proxy->web_frame()); |
534 } | 538 } |
535 render_frame->SetWebFrame(web_frame); | 539 render_frame->SetWebFrame(web_frame); |
540 | |
541 if (params.routing_id != MSG_ROUTING_NONE) { | |
542 CHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( | |
543 switches::kSitePerProcess)); | |
544 render_frame->render_widget_ = RenderWidget::CreateForFrame( | |
545 params.routing_id, params.surface_id, params.hidden, | |
546 render_frame->render_view_->screen_info(), compositor_deps, web_frame); | |
547 // TODO(kenrb): Observing shouldn't be necessary when we sort out | |
548 // WasShown and WasHidden, separating page-level visibility from | |
549 // frame-level visibility. | |
550 render_frame->render_widget_->RegisterRenderFrame(render_frame); | |
551 } | |
552 | |
536 render_frame->Initialize(); | 553 render_frame->Initialize(); |
537 } | 554 } |
538 | 555 |
539 // static | 556 // static |
540 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { | 557 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { |
541 return RenderFrameImpl::FromWebFrame(web_frame); | 558 return RenderFrameImpl::FromWebFrame(web_frame); |
542 } | 559 } |
543 | 560 |
544 // static | 561 // static |
545 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) { | 562 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) { |
(...skipping 2937 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3483 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers_, OnStop()); | 3500 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers_, OnStop()); |
3484 | 3501 |
3485 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnStop()); | 3502 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnStop()); |
3486 } | 3503 } |
3487 | 3504 |
3488 void RenderFrameImpl::WasHidden() { | 3505 void RenderFrameImpl::WasHidden() { |
3489 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasHidden()); | 3506 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasHidden()); |
3490 } | 3507 } |
3491 | 3508 |
3492 void RenderFrameImpl::WasShown() { | 3509 void RenderFrameImpl::WasShown() { |
3510 // TODO(kenrb): Need to figure out how to do this better. Should | |
3511 // VisibilityState remain a page-level concept or move to frames? | |
nasko
2015/01/14 20:08:05
I think visibility is page-level concept. There mi
kenrb
2015/01/16 17:44:00
We seem to use visibility as a way to prevent anyt
| |
3512 // The semantics of 'Show' might have to change here. | |
3513 if (render_widget_) { | |
3514 render_view()->webview()->setVisibilityState( | |
3515 blink::WebPageVisibilityStateVisible, false); | |
3516 } | |
3493 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); | 3517 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); |
3494 } | 3518 } |
3495 | 3519 |
3496 bool RenderFrameImpl::IsHidden() { | 3520 bool RenderFrameImpl::IsHidden() { |
3497 return GetRenderWidget()->is_hidden(); | 3521 return GetRenderWidget()->is_hidden(); |
3498 } | 3522 } |
3499 | 3523 |
3500 // Tell the embedding application that the URL of the active page has changed. | 3524 // Tell the embedding application that the URL of the active page has changed. |
3501 void RenderFrameImpl::SendDidCommitProvisionalLoad(blink::WebFrame* frame) { | 3525 void RenderFrameImpl::SendDidCommitProvisionalLoad(blink::WebFrame* frame) { |
3502 DCHECK(!frame_ || frame_ == frame); | 3526 DCHECK(!frame_ || frame_ == frame); |
(...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4315 | 4339 |
4316 #if defined(ENABLE_BROWSER_CDMS) | 4340 #if defined(ENABLE_BROWSER_CDMS) |
4317 RendererCdmManager* RenderFrameImpl::GetCdmManager() { | 4341 RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
4318 if (!cdm_manager_) | 4342 if (!cdm_manager_) |
4319 cdm_manager_ = new RendererCdmManager(this); | 4343 cdm_manager_ = new RendererCdmManager(this); |
4320 return cdm_manager_; | 4344 return cdm_manager_; |
4321 } | 4345 } |
4322 #endif // defined(ENABLE_BROWSER_CDMS) | 4346 #endif // defined(ENABLE_BROWSER_CDMS) |
4323 | 4347 |
4324 } // namespace content | 4348 } // namespace content |
OLD | NEW |