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

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

Issue 616133002: Make RenderFrame(Host) own a RenderWidget(Host). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 DCHECK(opener_id != MSG_ROUTING_NONE); 441 DCHECK(opener_id != MSG_ROUTING_NONE);
442 scoped_refptr<RenderWidget> widget( 442 scoped_refptr<RenderWidget> widget(
443 new RenderWidget(popup_type, screen_info, false, false, false)); 443 new RenderWidget(popup_type, screen_info, false, false, false));
444 if (widget->Init(opener_id)) { // adds reference on success. 444 if (widget->Init(opener_id)) { // adds reference on success.
445 return widget.get(); 445 return widget.get();
446 } 446 }
447 return NULL; 447 return NULL;
448 } 448 }
449 449
450 // static 450 // static
451 RenderWidget* RenderWidget::CreateForFrame(
452 int routing_id, bool hidden, const blink::WebScreenInfo& screen_info) {
nasko 2014/10/01 16:37:14 style: params need to be on separate lines each
kenrb 2014/10/01 19:27:51 Done.
453 DCHECK(routing_id != MSG_ROUTING_NONE);
454 scoped_refptr<RenderWidget> widget(
455 new RenderWidget(blink::WebPopupTypeNone,
456 screen_info,
457 false,
458 hidden,
459 false));
460 widget->routing_id_ = routing_id;
461 //TODO(kenrb): Change CreateWebWidget to CreateWebFrameWidget before landing!
462 if (widget->DoInit(MSG_ROUTING_NONE,
463 RenderWidget::CreateWebWidget(widget.get()),
464 0))
nasko 2014/10/01 16:37:14 nit: s/0/nullptr/
kenrb 2014/10/01 19:27:51 Done.
465 return widget.get();
nasko 2014/10/01 16:37:14 style: {} needed because the if clause spans multi
kenrb 2014/10/01 19:27:51 Done.
466 return NULL;
467 }
468
469 // static
451 WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) { 470 WebWidget* RenderWidget::CreateWebWidget(RenderWidget* render_widget) {
452 switch (render_widget->popup_type_) { 471 switch (render_widget->popup_type_) {
453 case blink::WebPopupTypeNone: // Nothing to create. 472 case blink::WebPopupTypeNone: // Nothing to create.
454 break; 473 break;
455 case blink::WebPopupTypeSelect: 474 case blink::WebPopupTypeSelect:
456 case blink::WebPopupTypeSuggestion: 475 case blink::WebPopupTypeSuggestion:
457 return WebPopupMenu::create(render_widget); 476 return WebPopupMenu::create(render_widget);
458 case blink::WebPopupTypePage: 477 case blink::WebPopupTypePage:
459 return WebPagePopup::create(render_widget); 478 return WebPagePopup::create(render_widget);
460 default: 479 default:
(...skipping 12 matching lines...) Expand all
473 bool RenderWidget::DoInit(int32 opener_id, 492 bool RenderWidget::DoInit(int32 opener_id,
474 WebWidget* web_widget, 493 WebWidget* web_widget,
475 IPC::SyncMessage* create_widget_message) { 494 IPC::SyncMessage* create_widget_message) {
476 DCHECK(!webwidget_); 495 DCHECK(!webwidget_);
477 496
478 if (opener_id != MSG_ROUTING_NONE) 497 if (opener_id != MSG_ROUTING_NONE)
479 opener_id_ = opener_id; 498 opener_id_ = opener_id;
480 499
481 webwidget_ = web_widget; 500 webwidget_ = web_widget;
482 501
483 bool result = RenderThread::Get()->Send(create_widget_message); 502 bool result = true;
503 if (create_widget_message)
504 result = RenderThread::Get()->Send(create_widget_message);
505
484 if (result) { 506 if (result) {
485 RenderThread::Get()->AddRoute(routing_id_, this); 507 RenderThread::Get()->AddRoute(routing_id_, this);
486 // Take a reference on behalf of the RenderThread. This will be balanced 508 // Take a reference on behalf of the RenderThread. This will be balanced
487 // when we receive ViewMsg_Close. 509 // when we receive ViewMsg_Close.
488 AddRef(); 510 AddRef();
489 if (RenderThreadImpl::current()) { 511 if (RenderThreadImpl::current()) {
490 RenderThreadImpl::current()->WidgetCreated(); 512 RenderThreadImpl::current()->WidgetCreated();
491 if (is_hidden_) 513 if (is_hidden_)
492 RenderThreadImpl::current()->WidgetHidden(); 514 RenderThreadImpl::current()->WidgetHidden();
493 } 515 }
(...skipping 1687 matching lines...) Expand 10 before | Expand all | Expand 10 after
2181 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { 2203 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
2182 video_hole_frames_.AddObserver(frame); 2204 video_hole_frames_.AddObserver(frame);
2183 } 2205 }
2184 2206
2185 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { 2207 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
2186 video_hole_frames_.RemoveObserver(frame); 2208 video_hole_frames_.RemoveObserver(frame);
2187 } 2209 }
2188 #endif // defined(VIDEO_HOLE) 2210 #endif // defined(VIDEO_HOLE)
2189 2211
2190 } // namespace content 2212 } // namespace content
OLDNEW
« content/renderer/render_frame_impl.h ('K') | « content/renderer/render_widget.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698