Chromium Code Reviews| 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 |