OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ | 5 #ifndef CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |
6 #define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ | 6 #define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "content/common/input/input_event_ack_state.h" | 12 #include "content/common/input/input_event_ack_state.h" |
13 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s
ource.h" | 13 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s
ource.h" |
14 #include "content/renderer/android/synchronous_compositor_output_surface.h" | 14 #include "content/renderer/android/synchronous_compositor_output_surface.h" |
15 #include "content/renderer/input/input_handler_manager_client.h" | |
16 #include "ui/events/blink/synchronous_input_handler_proxy.h" | 15 #include "ui/events/blink/synchronous_input_handler_proxy.h" |
17 #include "ui/gfx/geometry/scroll_offset.h" | 16 #include "ui/gfx/geometry/scroll_offset.h" |
18 #include "ui/gfx/geometry/size_f.h" | 17 #include "ui/gfx/geometry/size_f.h" |
19 | 18 |
20 class SkCanvas; | 19 class SkCanvas; |
21 | 20 |
22 namespace IPC { | 21 namespace IPC { |
23 class Message; | 22 class Message; |
24 class Sender; | 23 class Sender; |
25 } // namespace IPC | 24 } // namespace IPC |
(...skipping 17 matching lines...) Expand all Loading... |
43 | 42 |
44 class SynchronousCompositorProxy | 43 class SynchronousCompositorProxy |
45 : public ui::SynchronousInputHandler, | 44 : public ui::SynchronousInputHandler, |
46 public SynchronousCompositorExternalBeginFrameSourceClient, | 45 public SynchronousCompositorExternalBeginFrameSourceClient, |
47 public SynchronousCompositorOutputSurfaceClient { | 46 public SynchronousCompositorOutputSurfaceClient { |
48 public: | 47 public: |
49 SynchronousCompositorProxy( | 48 SynchronousCompositorProxy( |
50 int routing_id, | 49 int routing_id, |
51 IPC::Sender* sender, | 50 IPC::Sender* sender, |
52 SynchronousCompositorExternalBeginFrameSource* begin_frame_source, | 51 SynchronousCompositorExternalBeginFrameSource* begin_frame_source, |
53 ui::SynchronousInputHandlerProxy* input_handler_proxy, | 52 ui::SynchronousInputHandlerProxy* input_handler_proxy); |
54 InputHandlerManagerClient::Handler* handler); | |
55 ~SynchronousCompositorProxy() override; | 53 ~SynchronousCompositorProxy() override; |
56 | 54 |
57 // ui::SynchronousInputHandler overrides. | 55 // ui::SynchronousInputHandler overrides. |
58 void SetNeedsSynchronousAnimateInput() override; | 56 void SetNeedsSynchronousAnimateInput() override; |
59 void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, | 57 void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, |
60 const gfx::ScrollOffset& max_scroll_offset, | 58 const gfx::ScrollOffset& max_scroll_offset, |
61 const gfx::SizeF& scrollable_size, | 59 const gfx::SizeF& scrollable_size, |
62 float page_scale_factor, | 60 float page_scale_factor, |
63 float min_page_scale_factor, | 61 float min_page_scale_factor, |
64 float max_page_scale_factor) override; | 62 float max_page_scale_factor) override; |
65 | 63 |
66 // SynchronousCompositorExternalBeginFrameSourceClient overrides. | 64 // SynchronousCompositorExternalBeginFrameSourceClient overrides. |
67 void OnNeedsBeginFramesChange(bool needs_begin_frames) override; | 65 void OnNeedsBeginFramesChange(bool needs_begin_frames) override; |
68 | 66 |
69 // SynchronousCompositorOutputSurfaceClient overrides. | 67 // SynchronousCompositorOutputSurfaceClient overrides. |
70 void DidActivatePendingTree() override; | 68 void DidActivatePendingTree() override; |
71 void Invalidate() override; | 69 void Invalidate() override; |
72 void SwapBuffers(uint32_t output_surface_id, | 70 void SwapBuffers(uint32_t output_surface_id, |
73 cc::CompositorFrame* frame) override; | 71 cc::CompositorFrame* frame) override; |
74 | 72 |
75 void SetOutputSurface(SynchronousCompositorOutputSurface* output_surface); | 73 void SetOutputSurface(SynchronousCompositorOutputSurface* output_surface); |
76 void OnMessageReceived(const IPC::Message& message); | 74 void OnMessageReceived(const IPC::Message& message); |
77 bool Send(IPC::Message* message); | 75 bool Send(IPC::Message* message); |
78 void DidOverscroll(const DidOverscrollParams& did_overscroll_params); | |
79 | 76 |
80 private: | 77 private: |
81 struct SharedMemoryWithSize; | 78 struct SharedMemoryWithSize; |
82 | 79 |
83 void ProcessCommonParams( | 80 void ProcessCommonParams( |
84 const SyncCompositorCommonBrowserParams& common_params); | 81 const SyncCompositorCommonBrowserParams& common_params); |
85 void PopulateCommonParams(SyncCompositorCommonRendererParams* params) const; | 82 void PopulateCommonParams(SyncCompositorCommonRendererParams* params) const; |
86 | 83 |
87 // IPC handlers. | 84 // IPC handlers. |
88 void HandleInputEvent( | |
89 const SyncCompositorCommonBrowserParams& common_params, | |
90 const blink::WebInputEvent* event, | |
91 SyncCompositorCommonRendererParams* common_renderer_params, | |
92 InputEventAckState* ack); | |
93 void BeginFrame(const SyncCompositorCommonBrowserParams& common_params, | 85 void BeginFrame(const SyncCompositorCommonBrowserParams& common_params, |
94 const cc::BeginFrameArgs& args, | 86 const cc::BeginFrameArgs& args, |
95 SyncCompositorCommonRendererParams* common_renderer_params); | 87 SyncCompositorCommonRendererParams* common_renderer_params); |
96 void OnComputeScroll(const SyncCompositorCommonBrowserParams& common_params, | 88 void OnComputeScroll(const SyncCompositorCommonBrowserParams& common_params, |
97 base::TimeTicks animation_time); | 89 base::TimeTicks animation_time); |
98 void DemandDrawHw(const SyncCompositorCommonBrowserParams& common_params, | 90 void DemandDrawHw(const SyncCompositorCommonBrowserParams& common_params, |
99 const SyncCompositorDemandDrawHwParams& params, | 91 const SyncCompositorDemandDrawHwParams& params, |
100 IPC::Message* reply_message); | 92 IPC::Message* reply_message); |
101 void SetSharedMemory( | 93 void SetSharedMemory( |
102 const SyncCompositorCommonBrowserParams& common_params, | 94 const SyncCompositorCommonBrowserParams& common_params, |
(...skipping 19 matching lines...) Expand all Loading... |
122 void SwapBuffersSw(cc::CompositorFrame* frame); | 114 void SwapBuffersSw(cc::CompositorFrame* frame); |
123 void SendDemandDrawSwReply(bool success, | 115 void SendDemandDrawSwReply(bool success, |
124 cc::CompositorFrame* frame, | 116 cc::CompositorFrame* frame, |
125 IPC::Message* reply_message); | 117 IPC::Message* reply_message); |
126 void SendAsyncRendererStateIfNeeded(); | 118 void SendAsyncRendererStateIfNeeded(); |
127 | 119 |
128 const int routing_id_; | 120 const int routing_id_; |
129 IPC::Sender* const sender_; | 121 IPC::Sender* const sender_; |
130 SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_; | 122 SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_; |
131 ui::SynchronousInputHandlerProxy* const input_handler_proxy_; | 123 ui::SynchronousInputHandlerProxy* const input_handler_proxy_; |
132 InputHandlerManagerClient::Handler* const input_handler_; | |
133 const bool use_in_process_zero_copy_software_draw_; | 124 const bool use_in_process_zero_copy_software_draw_; |
134 SynchronousCompositorOutputSurface* output_surface_; | 125 SynchronousCompositorOutputSurface* output_surface_; |
135 bool inside_receive_; | 126 bool inside_receive_; |
136 IPC::Message* hardware_draw_reply_; | 127 IPC::Message* hardware_draw_reply_; |
137 IPC::Message* software_draw_reply_; | 128 IPC::Message* software_draw_reply_; |
138 | 129 |
139 // From browser. | 130 // From browser. |
140 std::unique_ptr<SharedMemoryWithSize> software_draw_shm_; | 131 std::unique_ptr<SharedMemoryWithSize> software_draw_shm_; |
141 | 132 |
142 // To browser. | 133 // To browser. |
143 mutable uint32_t version_; // Mustable so PopulateCommonParams can be const. | 134 mutable uint32_t version_; // Mustable so PopulateCommonParams can be const. |
144 gfx::ScrollOffset total_scroll_offset_; // Modified by both. | 135 gfx::ScrollOffset total_scroll_offset_; // Modified by both. |
145 gfx::ScrollOffset max_scroll_offset_; | 136 gfx::ScrollOffset max_scroll_offset_; |
146 gfx::SizeF scrollable_size_; | 137 gfx::SizeF scrollable_size_; |
147 float page_scale_factor_; | 138 float page_scale_factor_; |
148 float min_page_scale_factor_; | 139 float min_page_scale_factor_; |
149 float max_page_scale_factor_; | 140 float max_page_scale_factor_; |
150 bool need_animate_scroll_; | 141 bool need_animate_scroll_; |
151 uint32_t need_invalidate_count_; | 142 uint32_t need_invalidate_count_; |
152 bool need_begin_frame_; | 143 bool need_begin_frame_; |
153 uint32_t did_activate_pending_tree_count_; | 144 uint32_t did_activate_pending_tree_count_; |
154 | 145 |
155 DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy); | 146 DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy); |
156 }; | 147 }; |
157 | 148 |
158 } // namespace content | 149 } // namespace content |
159 | 150 |
160 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ | 151 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |
OLD | NEW |