Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 616133002: Make RenderFrame(Host) own a RenderWidget(Host). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format, changed WebWidget creation Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698