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

Side by Side Diff: content/browser/frame_host/render_widget_host_view_child_frame.cc

Issue 2242613003: Hoist SetNeedsBeginFrame messages up to the RWHostImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove base class call Created 4 years, 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/browser/frame_host/render_widget_host_view_child_frame.h" 5 #include "content/browser/frame_host/render_widget_host_view_child_frame.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 30 matching lines...) Expand all
41 41
42 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame( 42 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame(
43 RenderWidgetHost* widget_host) 43 RenderWidgetHost* widget_host)
44 : host_(RenderWidgetHostImpl::From(widget_host)), 44 : host_(RenderWidgetHostImpl::From(widget_host)),
45 next_surface_sequence_(1u), 45 next_surface_sequence_(1u),
46 last_output_surface_id_(0), 46 last_output_surface_id_(0),
47 current_surface_scale_factor_(1.f), 47 current_surface_scale_factor_(1.f),
48 ack_pending_count_(0), 48 ack_pending_count_(0),
49 frame_connector_(nullptr), 49 frame_connector_(nullptr),
50 begin_frame_source_(nullptr), 50 begin_frame_source_(nullptr),
51 observing_begin_frame_source_(false),
52 parent_surface_client_id_(0), 51 parent_surface_client_id_(0),
53 weak_factory_(this) { 52 weak_factory_(this) {
54 id_allocator_.reset(new cc::SurfaceIdAllocator(AllocateSurfaceClientId())); 53 id_allocator_.reset(new cc::SurfaceIdAllocator(AllocateSurfaceClientId()));
55 GetSurfaceManager()->RegisterSurfaceClientId(id_allocator_->client_id()); 54 GetSurfaceManager()->RegisterSurfaceClientId(id_allocator_->client_id());
56 RegisterSurfaceNamespaceId(); 55 RegisterSurfaceNamespaceId();
57 56
58 host_->SetView(this); 57 host_->SetView(this);
59 } 58 }
60 59
61 RenderWidgetHostViewChildFrame::~RenderWidgetHostViewChildFrame() { 60 RenderWidgetHostViewChildFrame::~RenderWidgetHostViewChildFrame() {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 parent_surface_client_id_, GetSurfaceClientId()); 102 parent_surface_client_id_, GetSurfaceClientId());
104 } 103 }
105 } 104 }
106 } 105 }
107 106
108 void RenderWidgetHostViewChildFrame::InitAsChild( 107 void RenderWidgetHostViewChildFrame::InitAsChild(
109 gfx::NativeView parent_view) { 108 gfx::NativeView parent_view) {
110 NOTREACHED(); 109 NOTREACHED();
111 } 110 }
112 111
113 bool RenderWidgetHostViewChildFrame::OnMessageReceived(
114 const IPC::Message& message) {
115 bool handled = true;
116 IPC_BEGIN_MESSAGE_MAP(RenderWidgetHostViewChildFrame, message)
117 IPC_MESSAGE_HANDLER(ViewHostMsg_SetNeedsBeginFrames, OnSetNeedsBeginFrames)
118 IPC_MESSAGE_UNHANDLED(handled = false)
119 IPC_END_MESSAGE_MAP()
120 return handled;
121 }
122
123 RenderWidgetHost* RenderWidgetHostViewChildFrame::GetRenderWidgetHost() const { 112 RenderWidgetHost* RenderWidgetHostViewChildFrame::GetRenderWidgetHost() const {
124 return host_; 113 return host_;
125 } 114 }
126 115
127 void RenderWidgetHostViewChildFrame::SetSize(const gfx::Size& size) { 116 void RenderWidgetHostViewChildFrame::SetSize(const gfx::Size& size) {
128 host_->WasResized(); 117 host_->WasResized();
129 } 118 }
130 119
131 void RenderWidgetHostViewChildFrame::SetBounds(const gfx::Rect& rect) { 120 void RenderWidgetHostViewChildFrame::SetBounds(const gfx::Rect& rect) {
132 SetSize(rect.size()); 121 SetSize(rect.size());
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
635 resources)); 624 resources));
636 return; 625 return;
637 } 626 }
638 627
639 std::copy(resources.begin(), resources.end(), 628 std::copy(resources.begin(), resources.end(),
640 std::back_inserter(surface_returned_resources_)); 629 std::back_inserter(surface_returned_resources_));
641 } 630 }
642 631
643 void RenderWidgetHostViewChildFrame::SetBeginFrameSource( 632 void RenderWidgetHostViewChildFrame::SetBeginFrameSource(
644 cc::BeginFrameSource* source) { 633 cc::BeginFrameSource* source) {
645 if (begin_frame_source_ && observing_begin_frame_source_) 634 bool needs_begin_frames = host_->needs_begin_frames();
635 if (begin_frame_source_ && needs_begin_frames)
646 begin_frame_source_->RemoveObserver(this); 636 begin_frame_source_->RemoveObserver(this);
647 begin_frame_source_ = source; 637 begin_frame_source_ = source;
648 if (begin_frame_source_ && observing_begin_frame_source_) 638 if (begin_frame_source_ && needs_begin_frames)
649 begin_frame_source_->AddObserver(this); 639 begin_frame_source_->AddObserver(this);
650 } 640 }
651 641
652 void RenderWidgetHostViewChildFrame::OnBeginFrame( 642 void RenderWidgetHostViewChildFrame::OnBeginFrame(
653 const cc::BeginFrameArgs& args) { 643 const cc::BeginFrameArgs& args) {
654 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); 644 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args));
655 last_begin_frame_args_ = args; 645 last_begin_frame_args_ = args;
656 } 646 }
657 647
658 const cc::BeginFrameArgs& 648 const cc::BeginFrameArgs&
659 RenderWidgetHostViewChildFrame::LastUsedBeginFrameArgs() const { 649 RenderWidgetHostViewChildFrame::LastUsedBeginFrameArgs() const {
660 return last_begin_frame_args_; 650 return last_begin_frame_args_;
661 } 651 }
662 652
663 void RenderWidgetHostViewChildFrame::OnBeginFrameSourcePausedChanged( 653 void RenderWidgetHostViewChildFrame::OnBeginFrameSourcePausedChanged(
664 bool paused) { 654 bool paused) {
665 // Only used on Android WebView. 655 // Only used on Android WebView.
666 } 656 }
667 657
668 void RenderWidgetHostViewChildFrame::OnSetNeedsBeginFrames( 658 void RenderWidgetHostViewChildFrame::SetNeedsBeginFrames(
669 bool needs_begin_frames) { 659 bool needs_begin_frames) {
no sievers 2016/08/22 18:13:56 I don't quite understand when this codepath is eve
670 if (observing_begin_frame_source_ == needs_begin_frames) 660 if (!begin_frame_source_)
671 return; 661 return;
672 662
673 observing_begin_frame_source_ = needs_begin_frames; 663 if (needs_begin_frames)
674 if (begin_frame_source_) { 664 begin_frame_source_->AddObserver(this);
675 if (observing_begin_frame_source_) 665 else
676 begin_frame_source_->AddObserver(this); 666 begin_frame_source_->RemoveObserver(this);
677 else
678 begin_frame_source_->RemoveObserver(this);
679 }
680 } 667 }
681 668
682 InputEventAckState RenderWidgetHostViewChildFrame::FilterInputEvent( 669 InputEventAckState RenderWidgetHostViewChildFrame::FilterInputEvent(
683 const blink::WebInputEvent& input_event) { 670 const blink::WebInputEvent& input_event) {
684 if (input_event.type == blink::WebInputEvent::GestureFlingStart) { 671 if (input_event.type == blink::WebInputEvent::GestureFlingStart) {
685 const blink::WebGestureEvent& gesture_event = 672 const blink::WebGestureEvent& gesture_event =
686 static_cast<const blink::WebGestureEvent&>(input_event); 673 static_cast<const blink::WebGestureEvent&>(input_event);
687 // Zero-velocity touchpad flings are an Aura-specific signal that the 674 // Zero-velocity touchpad flings are an Aura-specific signal that the
688 // touchpad scroll has ended, and should not be forwarded to the renderer. 675 // touchpad scroll has ended, and should not be forwarded to the renderer.
689 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad && 676 if (gesture_event.sourceDevice == blink::WebGestureDeviceTouchpad &&
(...skipping 29 matching lines...) Expand all
719 706
720 bool RenderWidgetHostViewChildFrame::IsChildFrameForTesting() const { 707 bool RenderWidgetHostViewChildFrame::IsChildFrameForTesting() const {
721 return true; 708 return true;
722 } 709 }
723 710
724 cc::SurfaceId RenderWidgetHostViewChildFrame::SurfaceIdForTesting() const { 711 cc::SurfaceId RenderWidgetHostViewChildFrame::SurfaceIdForTesting() const {
725 return surface_id_; 712 return surface_id_;
726 }; 713 };
727 714
728 } // namespace content 715 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698