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

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

Issue 1245863003: Initialize CompositorDependencies in RenderWidget's constructor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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/logging.h" 10 #include "base/logging.h"
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after
461 gfx::Rect RenderWidget::ScreenMetricsEmulator::AdjustValidationMessageAnchor( 461 gfx::Rect RenderWidget::ScreenMetricsEmulator::AdjustValidationMessageAnchor(
462 const gfx::Rect& anchor) { 462 const gfx::Rect& anchor) {
463 gfx::Rect scaled = gfx::ToEnclosedRect(gfx::ScaleRect(anchor, scale_)); 463 gfx::Rect scaled = gfx::ToEnclosedRect(gfx::ScaleRect(anchor, scale_));
464 scaled.set_x(scaled.x() + offset_.x()); 464 scaled.set_x(scaled.x() + offset_.x());
465 scaled.set_y(scaled.y() + offset_.y()); 465 scaled.set_y(scaled.y() + offset_.y());
466 return scaled; 466 return scaled;
467 } 467 }
468 468
469 // RenderWidget --------------------------------------------------------------- 469 // RenderWidget ---------------------------------------------------------------
470 470
471 RenderWidget::RenderWidget(blink::WebPopupType popup_type, 471 RenderWidget::RenderWidget(CompositorDependencies* compositor_deps,
472 blink::WebPopupType popup_type,
472 const blink::WebScreenInfo& screen_info, 473 const blink::WebScreenInfo& screen_info,
473 bool swapped_out, 474 bool swapped_out,
474 bool hidden, 475 bool hidden,
475 bool never_visible) 476 bool never_visible)
476 : routing_id_(MSG_ROUTING_NONE), 477 : routing_id_(MSG_ROUTING_NONE),
477 surface_id_(0), 478 surface_id_(0),
478 compositor_deps_(nullptr), 479 compositor_deps_(compositor_deps),
479 webwidget_(nullptr), 480 webwidget_(nullptr),
480 opener_id_(MSG_ROUTING_NONE), 481 opener_id_(MSG_ROUTING_NONE),
481 init_complete_(false), 482 init_complete_(false),
482 top_controls_shrink_blink_size_(false), 483 top_controls_shrink_blink_size_(false),
483 top_controls_height_(0.f), 484 top_controls_height_(0.f),
484 next_paint_flags_(0), 485 next_paint_flags_(0),
485 auto_resize_mode_(false), 486 auto_resize_mode_(false),
486 need_update_rect_for_auto_resize_(false), 487 need_update_rect_for_auto_resize_(false),
487 did_show_(false), 488 did_show_(false),
488 is_hidden_(hidden), 489 is_hidden_(hidden),
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 if (!is_swapped_out_ && RenderProcess::current()) 534 if (!is_swapped_out_ && RenderProcess::current())
534 RenderProcess::current()->ReleaseProcess(); 535 RenderProcess::current()->ReleaseProcess();
535 } 536 }
536 537
537 // static 538 // static
538 RenderWidget* RenderWidget::Create(int32 opener_id, 539 RenderWidget* RenderWidget::Create(int32 opener_id,
539 CompositorDependencies* compositor_deps, 540 CompositorDependencies* compositor_deps,
540 blink::WebPopupType popup_type, 541 blink::WebPopupType popup_type,
541 const blink::WebScreenInfo& screen_info) { 542 const blink::WebScreenInfo& screen_info) {
542 DCHECK(opener_id != MSG_ROUTING_NONE); 543 DCHECK(opener_id != MSG_ROUTING_NONE);
543 scoped_refptr<RenderWidget> widget( 544 scoped_refptr<RenderWidget> widget(new RenderWidget(
544 new RenderWidget(popup_type, screen_info, false, false, false)); 545 compositor_deps, popup_type, screen_info, false, false, false));
545 if (widget->Init(opener_id, compositor_deps)) { // adds reference on success. 546 if (widget->Init(opener_id)) { // adds reference on success.
546 return widget.get(); 547 return widget.get();
547 } 548 }
548 return NULL; 549 return NULL;
549 } 550 }
550 551
551 // static 552 // static
552 RenderWidget* RenderWidget::CreateForFrame( 553 RenderWidget* RenderWidget::CreateForFrame(
553 int routing_id, 554 int routing_id,
554 int surface_id, 555 int surface_id,
555 bool hidden, 556 bool hidden,
556 const blink::WebScreenInfo& screen_info, 557 const blink::WebScreenInfo& screen_info,
557 CompositorDependencies* compositor_deps, 558 CompositorDependencies* compositor_deps,
558 blink::WebLocalFrame* frame) { 559 blink::WebLocalFrame* frame) {
559 CHECK_NE(routing_id, MSG_ROUTING_NONE); 560 CHECK_NE(routing_id, MSG_ROUTING_NONE);
560 scoped_refptr<RenderWidget> widget(new RenderWidget( 561 scoped_refptr<RenderWidget> widget(
561 blink::WebPopupTypeNone, screen_info, false, hidden, false)); 562 new RenderWidget(compositor_deps, blink::WebPopupTypeNone, screen_info,
563 false, hidden, false));
562 widget->routing_id_ = routing_id; 564 widget->routing_id_ = routing_id;
563 widget->surface_id_ = surface_id; 565 widget->surface_id_ = surface_id;
564 widget->compositor_deps_ = compositor_deps;
565 widget->for_oopif_ = true; 566 widget->for_oopif_ = true;
566 // DoInit increments the reference count on |widget|, keeping it alive after 567 // DoInit increments the reference count on |widget|, keeping it alive after
567 // this function returns. 568 // this function returns.
568 if (widget->DoInit(MSG_ROUTING_NONE, compositor_deps, 569 if (widget->DoInit(MSG_ROUTING_NONE,
569 RenderWidget::CreateWebFrameWidget(widget.get(), frame), 570 RenderWidget::CreateWebFrameWidget(widget.get(), frame),
570 nullptr)) { 571 nullptr)) {
571 widget->CompleteInit(); 572 widget->CompleteInit();
572 return widget.get(); 573 return widget.get();
573 } 574 }
574 return nullptr; 575 return nullptr;
575 } 576 }
576 577
577 // static 578 // static
578 blink::WebWidget* RenderWidget::CreateWebFrameWidget( 579 blink::WebWidget* RenderWidget::CreateWebFrameWidget(
(...skipping 16 matching lines...) Expand all
595 } 596 }
596 597
597 void RenderWidget::CloseForFrame() { 598 void RenderWidget::CloseForFrame() {
598 // Close() must be called synchronously, since Blink objects are already in 599 // Close() must be called synchronously, since Blink objects are already in
599 // the process of being torn down. Deferring Close() to the message loop like 600 // the process of being torn down. Deferring Close() to the message loop like
600 // the normal case means that Close() will end up getting called when various 601 // the normal case means that Close() will end up getting called when various
601 // pointers, etc. are already nulled out or freed. 602 // pointers, etc. are already nulled out or freed.
602 CloseInternal(true); 603 CloseInternal(true);
603 } 604 }
604 605
605 bool RenderWidget::Init(int32 opener_id, 606 bool RenderWidget::Init(int32 opener_id) {
606 CompositorDependencies* compositor_deps) { 607 return DoInit(opener_id, RenderWidget::CreateWebWidget(this),
607 return DoInit(opener_id, compositor_deps, RenderWidget::CreateWebWidget(this),
608 new ViewHostMsg_CreateWidget(opener_id, popup_type_, 608 new ViewHostMsg_CreateWidget(opener_id, popup_type_,
609 &routing_id_, &surface_id_)); 609 &routing_id_, &surface_id_));
610 } 610 }
611 611
612 bool RenderWidget::DoInit(int32 opener_id, 612 bool RenderWidget::DoInit(int32 opener_id,
613 CompositorDependencies* compositor_deps,
614 WebWidget* web_widget, 613 WebWidget* web_widget,
615 IPC::SyncMessage* create_widget_message) { 614 IPC::SyncMessage* create_widget_message) {
616 DCHECK(!webwidget_); 615 DCHECK(!webwidget_);
617 616
618 if (opener_id != MSG_ROUTING_NONE) 617 if (opener_id != MSG_ROUTING_NONE)
619 opener_id_ = opener_id; 618 opener_id_ = opener_id;
620 619
621 compositor_deps_ = compositor_deps;
622 webwidget_ = web_widget; 620 webwidget_ = web_widget;
623 621
624 bool result = true; 622 bool result = true;
625 if (create_widget_message) 623 if (create_widget_message)
626 result = RenderThread::Get()->Send(create_widget_message); 624 result = RenderThread::Get()->Send(create_widget_message);
627 625
628 if (result) { 626 if (result) {
629 RenderThread::Get()->AddRoute(routing_id_, this); 627 RenderThread::Get()->AddRoute(routing_id_, this);
630 // Take a reference on behalf of the RenderThread. This will be balanced 628 // Take a reference on behalf of the RenderThread. This will be balanced
631 // when we receive ViewMsg_Close. 629 // when we receive ViewMsg_Close.
(...skipping 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after
2461 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) { 2459 void RenderWidget::RegisterVideoHoleFrame(RenderFrameImpl* frame) {
2462 video_hole_frames_.AddObserver(frame); 2460 video_hole_frames_.AddObserver(frame);
2463 } 2461 }
2464 2462
2465 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) { 2463 void RenderWidget::UnregisterVideoHoleFrame(RenderFrameImpl* frame) {
2466 video_hole_frames_.RemoveObserver(frame); 2464 video_hole_frames_.RemoveObserver(frame);
2467 } 2465 }
2468 #endif // defined(VIDEO_HOLE) 2466 #endif // defined(VIDEO_HOLE)
2469 2467
2470 } // namespace content 2468 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698