| 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" | |
| 14 #include "content/renderer/android/synchronous_compositor_output_surface.h" | 13 #include "content/renderer/android/synchronous_compositor_output_surface.h" |
| 15 #include "content/renderer/input/input_handler_manager_client.h" | 14 #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 |
| 26 | 25 |
| 27 namespace blink { | 26 namespace blink { |
| 28 class WebInputEvent; | 27 class WebInputEvent; |
| 29 } // namespace blink | 28 } // namespace blink |
| 30 | 29 |
| 31 namespace cc { | 30 namespace cc { |
| 32 class CompositorFrame; | 31 class CompositorFrame; |
| 33 } // namespace cc | 32 } // namespace cc |
| 34 | 33 |
| 35 namespace content { | 34 namespace content { |
| 36 | 35 |
| 37 class SynchronousCompositorOutputSurface; | 36 class SynchronousCompositorOutputSurface; |
| 38 struct SyncCompositorCommonBrowserParams; | |
| 39 struct SyncCompositorCommonRendererParams; | 37 struct SyncCompositorCommonRendererParams; |
| 40 struct SyncCompositorDemandDrawHwParams; | 38 struct SyncCompositorDemandDrawHwParams; |
| 41 struct SyncCompositorDemandDrawSwParams; | 39 struct SyncCompositorDemandDrawSwParams; |
| 42 struct SyncCompositorSetSharedMemoryParams; | 40 struct SyncCompositorSetSharedMemoryParams; |
| 43 | 41 |
| 44 class SynchronousCompositorProxy | 42 class SynchronousCompositorProxy |
| 45 : public ui::SynchronousInputHandler, | 43 : public ui::SynchronousInputHandler, |
| 46 public SynchronousCompositorExternalBeginFrameSourceClient, | |
| 47 public SynchronousCompositorOutputSurfaceClient { | 44 public SynchronousCompositorOutputSurfaceClient { |
| 48 public: | 45 public: |
| 49 SynchronousCompositorProxy( | 46 SynchronousCompositorProxy( |
| 50 int routing_id, | 47 int routing_id, |
| 51 IPC::Sender* sender, | 48 IPC::Sender* sender, |
| 52 SynchronousCompositorExternalBeginFrameSource* begin_frame_source, | |
| 53 ui::SynchronousInputHandlerProxy* input_handler_proxy, | 49 ui::SynchronousInputHandlerProxy* input_handler_proxy, |
| 54 InputHandlerManagerClient::Handler* handler); | 50 InputHandlerManagerClient::Handler* handler); |
| 55 ~SynchronousCompositorProxy() override; | 51 ~SynchronousCompositorProxy() override; |
| 56 | 52 |
| 57 // ui::SynchronousInputHandler overrides. | 53 // ui::SynchronousInputHandler overrides. |
| 58 void SetNeedsSynchronousAnimateInput() override; | 54 void SetNeedsSynchronousAnimateInput() override; |
| 59 void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, | 55 void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, |
| 60 const gfx::ScrollOffset& max_scroll_offset, | 56 const gfx::ScrollOffset& max_scroll_offset, |
| 61 const gfx::SizeF& scrollable_size, | 57 const gfx::SizeF& scrollable_size, |
| 62 float page_scale_factor, | 58 float page_scale_factor, |
| 63 float min_page_scale_factor, | 59 float min_page_scale_factor, |
| 64 float max_page_scale_factor) override; | 60 float max_page_scale_factor) override; |
| 65 | 61 |
| 66 // SynchronousCompositorExternalBeginFrameSourceClient overrides. | |
| 67 void OnNeedsBeginFramesChange(bool needs_begin_frames) override; | |
| 68 | |
| 69 // SynchronousCompositorOutputSurfaceClient overrides. | 62 // SynchronousCompositorOutputSurfaceClient overrides. |
| 70 void DidActivatePendingTree() override; | 63 void DidActivatePendingTree() override; |
| 71 void Invalidate() override; | 64 void Invalidate() override; |
| 72 void SwapBuffers(uint32_t output_surface_id, | 65 void SwapBuffers(uint32_t output_surface_id, |
| 73 cc::CompositorFrame* frame) override; | 66 cc::CompositorFrame* frame) override; |
| 74 | 67 |
| 75 void SetOutputSurface(SynchronousCompositorOutputSurface* output_surface); | 68 void SetOutputSurface(SynchronousCompositorOutputSurface* output_surface); |
| 76 void OnMessageReceived(const IPC::Message& message); | 69 void OnMessageReceived(const IPC::Message& message); |
| 77 bool Send(IPC::Message* message); | 70 bool Send(IPC::Message* message); |
| 78 void DidOverscroll(const DidOverscrollParams& did_overscroll_params); | 71 void DidOverscroll(const DidOverscrollParams& did_overscroll_params); |
| 79 | 72 |
| 80 private: | 73 private: |
| 81 struct SharedMemoryWithSize; | 74 struct SharedMemoryWithSize; |
| 82 | 75 |
| 83 void ProcessCommonParams( | 76 // IPC handlers. |
| 84 const SyncCompositorCommonBrowserParams& common_params); | |
| 85 void PopulateCommonParams(SyncCompositorCommonRendererParams* params) const; | 77 void PopulateCommonParams(SyncCompositorCommonRendererParams* params) const; |
| 86 | |
| 87 // IPC handlers. | |
| 88 void HandleInputEvent( | 78 void HandleInputEvent( |
| 89 const SyncCompositorCommonBrowserParams& common_params, | |
| 90 const blink::WebInputEvent* event, | 79 const blink::WebInputEvent* event, |
| 91 SyncCompositorCommonRendererParams* common_renderer_params, | 80 SyncCompositorCommonRendererParams* common_renderer_params, |
| 92 InputEventAckState* ack); | 81 InputEventAckState* ack); |
| 93 void BeginFrame(const SyncCompositorCommonBrowserParams& common_params, | 82 void OnComputeScroll(base::TimeTicks animation_time); |
| 94 const cc::BeginFrameArgs& args, | 83 void DemandDrawHw(const SyncCompositorDemandDrawHwParams& params, |
| 95 SyncCompositorCommonRendererParams* common_renderer_params); | |
| 96 void OnComputeScroll(const SyncCompositorCommonBrowserParams& common_params, | |
| 97 base::TimeTicks animation_time); | |
| 98 void DemandDrawHw(const SyncCompositorCommonBrowserParams& common_params, | |
| 99 const SyncCompositorDemandDrawHwParams& params, | |
| 100 IPC::Message* reply_message); | 84 IPC::Message* reply_message); |
| 101 void SetSharedMemory( | 85 void SetSharedMemory( |
| 102 const SyncCompositorCommonBrowserParams& common_params, | |
| 103 const SyncCompositorSetSharedMemoryParams& params, | 86 const SyncCompositorSetSharedMemoryParams& params, |
| 104 bool* success, | 87 bool* success, |
| 105 SyncCompositorCommonRendererParams* common_renderer_params); | 88 SyncCompositorCommonRendererParams* common_renderer_params); |
| 106 void ZeroSharedMemory(); | 89 void ZeroSharedMemory(); |
| 107 void DemandDrawSw(const SyncCompositorCommonBrowserParams& common_params, | 90 void DemandDrawSw(const SyncCompositorDemandDrawSwParams& params, |
| 108 const SyncCompositorDemandDrawSwParams& params, | |
| 109 IPC::Message* reply_message); | 91 IPC::Message* reply_message); |
| 110 void SynchronouslyZoomBy( | 92 void SynchronouslyZoomBy( |
| 111 const SyncCompositorCommonBrowserParams& common_params, | |
| 112 float zoom_delta, | 93 float zoom_delta, |
| 113 const gfx::Point& anchor, | 94 const gfx::Point& anchor, |
| 114 SyncCompositorCommonRendererParams* common_renderer_params); | 95 SyncCompositorCommonRendererParams* common_renderer_params); |
| 115 void SetScroll(const gfx::ScrollOffset& total_scroll_offset); | 96 void SetScroll(const gfx::ScrollOffset& total_scroll_offset); |
| 116 | 97 |
| 117 void SwapBuffersHw(uint32_t output_surface_id, cc::CompositorFrame* frame); | 98 void SwapBuffersHw(uint32_t output_surface_id, cc::CompositorFrame* frame); |
| 118 void SendDemandDrawHwReply(cc::CompositorFrame* frame, | 99 void SendDemandDrawHwReply(cc::CompositorFrame* frame, |
| 119 uint32_t output_surface_id, | 100 uint32_t output_surface_id, |
| 120 IPC::Message* reply_message); | 101 IPC::Message* reply_message); |
| 121 void DoDemandDrawSw(const SyncCompositorDemandDrawSwParams& params); | 102 void DoDemandDrawSw(const SyncCompositorDemandDrawSwParams& params); |
| 122 void SwapBuffersSw(cc::CompositorFrame* frame); | 103 void SwapBuffersSw(cc::CompositorFrame* frame); |
| 123 void SendDemandDrawSwReply(bool success, | 104 void SendDemandDrawSwReply(bool success, |
| 124 cc::CompositorFrame* frame, | 105 cc::CompositorFrame* frame, |
| 125 IPC::Message* reply_message); | 106 IPC::Message* reply_message); |
| 126 void SendAsyncRendererStateIfNeeded(); | 107 void SendAsyncRendererStateIfNeeded(); |
| 127 | 108 |
| 128 const int routing_id_; | 109 const int routing_id_; |
| 129 IPC::Sender* const sender_; | 110 IPC::Sender* const sender_; |
| 130 SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_; | |
| 131 ui::SynchronousInputHandlerProxy* const input_handler_proxy_; | 111 ui::SynchronousInputHandlerProxy* const input_handler_proxy_; |
| 132 InputHandlerManagerClient::Handler* const input_handler_; | 112 InputHandlerManagerClient::Handler* const input_handler_; |
| 133 const bool use_in_process_zero_copy_software_draw_; | 113 const bool use_in_process_zero_copy_software_draw_; |
| 134 SynchronousCompositorOutputSurface* output_surface_; | 114 SynchronousCompositorOutputSurface* output_surface_; |
| 135 bool inside_receive_; | 115 bool inside_receive_; |
| 136 IPC::Message* hardware_draw_reply_; | 116 IPC::Message* hardware_draw_reply_; |
| 137 IPC::Message* software_draw_reply_; | 117 IPC::Message* software_draw_reply_; |
| 138 | 118 |
| 139 // From browser. | 119 // From browser. |
| 140 std::unique_ptr<SharedMemoryWithSize> software_draw_shm_; | 120 std::unique_ptr<SharedMemoryWithSize> software_draw_shm_; |
| 141 | 121 |
| 142 // To browser. | 122 // To browser. |
| 143 mutable uint32_t version_; // Mustable so PopulateCommonParams can be const. | 123 mutable uint32_t version_; // Mustable so PopulateCommonParams can be const. |
| 144 gfx::ScrollOffset total_scroll_offset_; // Modified by both. | 124 gfx::ScrollOffset total_scroll_offset_; // Modified by both. |
| 145 gfx::ScrollOffset max_scroll_offset_; | 125 gfx::ScrollOffset max_scroll_offset_; |
| 146 gfx::SizeF scrollable_size_; | 126 gfx::SizeF scrollable_size_; |
| 147 float page_scale_factor_; | 127 float page_scale_factor_; |
| 148 float min_page_scale_factor_; | 128 float min_page_scale_factor_; |
| 149 float max_page_scale_factor_; | 129 float max_page_scale_factor_; |
| 150 bool need_animate_scroll_; | 130 bool need_animate_scroll_; |
| 151 uint32_t need_invalidate_count_; | 131 uint32_t need_invalidate_count_; |
| 152 bool need_begin_frame_; | |
| 153 uint32_t did_activate_pending_tree_count_; | 132 uint32_t did_activate_pending_tree_count_; |
| 154 | 133 |
| 155 DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy); | 134 DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy); |
| 156 }; | 135 }; |
| 157 | 136 |
| 158 } // namespace content | 137 } // namespace content |
| 159 | 138 |
| 160 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ | 139 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |
| OLD | NEW |