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 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
108 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 108 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
109 #include "net/http/http_util.h" | 109 #include "net/http/http_util.h" |
110 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" | 110 #include "third_party/WebKit/public/platform/WebStorageQuotaCallbacks.h" |
111 #include "third_party/WebKit/public/platform/WebString.h" | 111 #include "third_party/WebKit/public/platform/WebString.h" |
112 #include "third_party/WebKit/public/platform/WebURL.h" | 112 #include "third_party/WebKit/public/platform/WebURL.h" |
113 #include "third_party/WebKit/public/platform/WebURLError.h" | 113 #include "third_party/WebKit/public/platform/WebURLError.h" |
114 #include "third_party/WebKit/public/platform/WebURLResponse.h" | 114 #include "third_party/WebKit/public/platform/WebURLResponse.h" |
115 #include "third_party/WebKit/public/platform/WebVector.h" | 115 #include "third_party/WebKit/public/platform/WebVector.h" |
116 #include "third_party/WebKit/public/web/WebColorSuggestion.h" | 116 #include "third_party/WebKit/public/web/WebColorSuggestion.h" |
117 #include "third_party/WebKit/public/web/WebDocument.h" | 117 #include "third_party/WebKit/public/web/WebDocument.h" |
118 #include "third_party/WebKit/public/web/WebFrameWidget.h" | |
118 #include "third_party/WebKit/public/web/WebGlyphCache.h" | 119 #include "third_party/WebKit/public/web/WebGlyphCache.h" |
119 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 120 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
120 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" | 121 #include "third_party/WebKit/public/web/WebMediaStreamRegistry.h" |
121 #include "third_party/WebKit/public/web/WebNavigationPolicy.h" | 122 #include "third_party/WebKit/public/web/WebNavigationPolicy.h" |
122 #include "third_party/WebKit/public/web/WebPlugin.h" | 123 #include "third_party/WebKit/public/web/WebPlugin.h" |
123 #include "third_party/WebKit/public/web/WebPluginParams.h" | 124 #include "third_party/WebKit/public/web/WebPluginParams.h" |
124 #include "third_party/WebKit/public/web/WebPluginPlaceholder.h" | 125 #include "third_party/WebKit/public/web/WebPluginPlaceholder.h" |
125 #include "third_party/WebKit/public/web/WebRange.h" | 126 #include "third_party/WebKit/public/web/WebRange.h" |
126 #include "third_party/WebKit/public/web/WebScriptSource.h" | 127 #include "third_party/WebKit/public/web/WebScriptSource.h" |
127 #include "third_party/WebKit/public/web/WebSearchableFormData.h" | 128 #include "third_party/WebKit/public/web/WebSearchableFormData.h" |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
493 // static | 494 // static |
494 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int32 routing_id) { | 495 RenderFrameImpl* RenderFrameImpl::FromRoutingID(int32 routing_id) { |
495 RoutingIDFrameMap::iterator iter = | 496 RoutingIDFrameMap::iterator iter = |
496 g_routing_id_frame_map.Get().find(routing_id); | 497 g_routing_id_frame_map.Get().find(routing_id); |
497 if (iter != g_routing_id_frame_map.Get().end()) | 498 if (iter != g_routing_id_frame_map.Get().end()) |
498 return iter->second; | 499 return iter->second; |
499 return NULL; | 500 return NULL; |
500 } | 501 } |
501 | 502 |
502 // static | 503 // static |
503 void RenderFrameImpl::CreateFrame(int routing_id, | 504 void RenderFrameImpl::CreateFrame( |
504 int parent_routing_id, | 505 int routing_id, |
505 int proxy_routing_id) { | 506 int parent_routing_id, |
507 int proxy_routing_id, | |
508 const FrameMsg_NewFrame_WidgetParams& params) { | |
506 // TODO(nasko): For now, this message is only sent for subframes, as the | 509 // TODO(nasko): For now, this message is only sent for subframes, as the |
507 // top level frame is created when the RenderView is created through the | 510 // top level frame is created when the RenderView is created through the |
508 // ViewMsg_New IPC. | 511 // ViewMsg_New IPC. |
509 CHECK_NE(MSG_ROUTING_NONE, parent_routing_id); | 512 CHECK_NE(MSG_ROUTING_NONE, parent_routing_id); |
510 | 513 |
511 blink::WebLocalFrame* web_frame; | 514 blink::WebLocalFrame* web_frame; |
512 RenderFrameImpl* render_frame; | 515 RenderFrameImpl* render_frame; |
513 if (proxy_routing_id == MSG_ROUTING_NONE) { | 516 if (proxy_routing_id == MSG_ROUTING_NONE) { |
514 RenderFrameProxy* parent_proxy = | 517 RenderFrameProxy* parent_proxy = |
515 RenderFrameProxy::FromRoutingID(parent_routing_id); | 518 RenderFrameProxy::FromRoutingID(parent_routing_id); |
516 // If the browser is sending a valid parent routing id, it should already | 519 // If the browser is sending a valid parent routing id, it should already |
517 // be created and registered. | 520 // be created and registered. |
518 CHECK(parent_proxy); | 521 CHECK(parent_proxy); |
519 blink::WebRemoteFrame* parent_web_frame = parent_proxy->web_frame(); | 522 blink::WebRemoteFrame* parent_web_frame = parent_proxy->web_frame(); |
520 | 523 |
521 // Create the RenderFrame and WebLocalFrame, linking the two. | 524 // Create the RenderFrame and WebLocalFrame, linking the two. |
522 render_frame = | 525 render_frame = |
523 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); | 526 RenderFrameImpl::Create(parent_proxy->render_view(), routing_id); |
524 web_frame = parent_web_frame->createLocalChild("", render_frame); | 527 web_frame = parent_web_frame->createLocalChild("", render_frame); |
525 } else { | 528 } else { |
526 RenderFrameProxy* proxy = | 529 RenderFrameProxy* proxy = |
527 RenderFrameProxy::FromRoutingID(proxy_routing_id); | 530 RenderFrameProxy::FromRoutingID(proxy_routing_id); |
528 CHECK(proxy); | 531 CHECK(proxy); |
529 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); | 532 render_frame = RenderFrameImpl::Create(proxy->render_view(), routing_id); |
530 web_frame = blink::WebLocalFrame::create(render_frame); | 533 web_frame = blink::WebLocalFrame::create(render_frame); |
531 render_frame->proxy_routing_id_ = proxy_routing_id; | 534 render_frame->proxy_routing_id_ = proxy_routing_id; |
532 web_frame->initializeToReplaceRemoteFrame(proxy->web_frame()); | 535 web_frame->initializeToReplaceRemoteFrame(proxy->web_frame()); |
533 } | 536 } |
534 render_frame->SetWebFrame(web_frame); | 537 render_frame->SetWebFrame(web_frame); |
538 | |
539 if (params.routing_id != MSG_ROUTING_NONE) { | |
Charlie Reis
2014/12/18 18:04:14
Can we add a check for --site-per-process here? I
kenrb
2015/01/05 21:15:31
Done.
| |
540 render_frame->render_widget_ = RenderWidget::CreateForFrame( | |
541 params.routing_id, params.surface_id, params.hidden, | |
542 render_frame->render_view_->screen_info(), web_frame); | |
543 // TODO(kenrb): Observing shouldn't be necessary when we sort out | |
544 // WasShown and WasHidden, separating page-level visibility from | |
545 // frame-level visibility. | |
546 render_frame->render_widget_->RegisterRenderFrame(render_frame); | |
547 } | |
548 | |
535 render_frame->Initialize(); | 549 render_frame->Initialize(); |
536 } | 550 } |
537 | 551 |
538 // static | 552 // static |
539 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { | 553 RenderFrame* RenderFrame::FromWebFrame(blink::WebFrame* web_frame) { |
540 return RenderFrameImpl::FromWebFrame(web_frame); | 554 return RenderFrameImpl::FromWebFrame(web_frame); |
541 } | 555 } |
542 | 556 |
543 // static | 557 // static |
544 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) { | 558 RenderFrameImpl* RenderFrameImpl::FromWebFrame(blink::WebFrame* web_frame) { |
(...skipping 2909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3454 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers_, OnStop()); | 3468 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers_, OnStop()); |
3455 | 3469 |
3456 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnStop()); | 3470 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnStop()); |
3457 } | 3471 } |
3458 | 3472 |
3459 void RenderFrameImpl::WasHidden() { | 3473 void RenderFrameImpl::WasHidden() { |
3460 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasHidden()); | 3474 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasHidden()); |
3461 } | 3475 } |
3462 | 3476 |
3463 void RenderFrameImpl::WasShown() { | 3477 void RenderFrameImpl::WasShown() { |
3478 // TODO(kenrb): Need to figure out how to do this better. Should | |
3479 // VisibilityState remain a page-level concept or move to frames? | |
3480 // The semantics of 'Show' might have to change here. | |
3481 if (render_widget_) { | |
3482 render_view()->webview()->setVisibilityState( | |
3483 blink::WebPageVisibilityStateVisible, false); | |
3484 } | |
3464 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); | 3485 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, WasShown()); |
3465 } | 3486 } |
3466 | 3487 |
3467 bool RenderFrameImpl::IsHidden() { | 3488 bool RenderFrameImpl::IsHidden() { |
3468 return GetRenderWidget()->is_hidden(); | 3489 return GetRenderWidget()->is_hidden(); |
3469 } | 3490 } |
3470 | 3491 |
3471 // Tell the embedding application that the URL of the active page has changed. | 3492 // Tell the embedding application that the URL of the active page has changed. |
3472 void RenderFrameImpl::SendDidCommitProvisionalLoad(blink::WebFrame* frame) { | 3493 void RenderFrameImpl::SendDidCommitProvisionalLoad(blink::WebFrame* frame) { |
3473 DCHECK(!frame_ || frame_ == frame); | 3494 DCHECK(!frame_ || frame_ == frame); |
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4289 | 4310 |
4290 #if defined(ENABLE_BROWSER_CDMS) | 4311 #if defined(ENABLE_BROWSER_CDMS) |
4291 RendererCdmManager* RenderFrameImpl::GetCdmManager() { | 4312 RendererCdmManager* RenderFrameImpl::GetCdmManager() { |
4292 if (!cdm_manager_) | 4313 if (!cdm_manager_) |
4293 cdm_manager_ = new RendererCdmManager(this); | 4314 cdm_manager_ = new RendererCdmManager(this); |
4294 return cdm_manager_; | 4315 return cdm_manager_; |
4295 } | 4316 } |
4296 #endif // defined(ENABLE_BROWSER_CDMS) | 4317 #endif // defined(ENABLE_BROWSER_CDMS) |
4297 | 4318 |
4298 } // namespace content | 4319 } // namespace content |
OLD | NEW |