OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |