Chromium Code Reviews| Index: content/renderer/android/synchronous_compositor_proxy.h |
| diff --git a/content/renderer/android/synchronous_compositor_proxy.h b/content/renderer/android/synchronous_compositor_proxy.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2e88dd34d403a4e05d01de9e1198413bb36d70c6 |
| --- /dev/null |
| +++ b/content/renderer/android/synchronous_compositor_proxy.h |
| @@ -0,0 +1,118 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |
| +#define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |
| + |
| +#include "content/common/input/input_event_ack_state.h" |
| +#include "content/renderer/android/synchronous_compositor_external_begin_frame_source.h" |
| +#include "content/renderer/android/synchronous_compositor_output_surface.h" |
| +#include "content/renderer/input/input_handler_manager_client.h" |
| +#include "content/renderer/input/synchronous_input_handler_proxy.h" |
| +#include "ui/gfx/geometry/scroll_offset.h" |
| +#include "ui/gfx/geometry/size_f.h" |
| + |
| +namespace IPC { |
| +class Message; |
| +class Sender; |
| +} // namespace IPC |
| + |
| +namespace blink { |
| +class WebInputEvent; |
| +} |
| + |
| +namespace cc { |
| +class CompositorFrame; |
| +} // namespace cc |
| + |
| +namespace content { |
| + |
| +class SynchronousCompositorOutputSurface; |
| +struct CommonBrowserParams; |
| +struct CommonRendererParams; |
| +struct DemandDrawHwParams; |
| + |
| +class SynchronousCompositorProxy |
| + : public SynchronousInputHandler, |
| + public SynchronousCompositorExternalBeginFrameSourceClient, |
| + public SynchronousCompositorOutputSurfaceClient { |
| + public: |
| + SynchronousCompositorProxy( |
| + int routing_id, |
| + IPC::Sender* sender, |
| + SynchronousCompositorOutputSurface* output_surface, |
| + SynchronousCompositorExternalBeginFrameSource* begin_frame_source, |
| + SynchronousInputHandlerProxy* input_handler_proxy, |
| + InputHandlerManagerClient::Handler* handler); |
| + ~SynchronousCompositorProxy() override; |
| + |
| + // SynchronousInputHandler overrides. |
| + void SetNeedsSynchronousAnimateInput() override; |
| + void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset, |
| + const gfx::ScrollOffset& max_scroll_offset, |
| + const gfx::SizeF& scrollable_size, |
| + float page_scale_factor, |
| + float min_page_scale_factor, |
| + float max_page_scale_factor) override; |
| + |
| + // SynchronousCompositorExternalBeginFrameSourceClient overrides. |
| + void OnNeedsBeginFramesChange(bool needs_begin_frames) override; |
| + |
| + // SynchronousCompositorOutputSurfaceClient overrides. |
| + void Invalidate() override; |
| + |
| + void OnMessageReceived(const IPC::Message& message); |
| + bool Send(IPC::Message* message); |
| + |
| + private: |
| + class ScopedInsideReceive; |
| + void ProcessCommonParams(const CommonBrowserParams& common_params); |
| + void ConstructCommonParams(CommonRendererParams* params); |
| + |
| + // IPC handlers. |
| + void HandleInputEvent(const CommonBrowserParams& common_params, |
| + const blink::WebInputEvent* event, |
| + CommonRendererParams* common_renderer_params, |
| + InputEventAckState* ack); |
| + void BeginFrame(const CommonBrowserParams& common_params, |
| + const cc::BeginFrameArgs& args, |
| + CommonRendererParams* common_renderer_params); |
| + void OnComputeScroll(const CommonBrowserParams& common_params, |
| + base::TimeTicks animation_time, |
| + CommonRendererParams* common_renderer_params); |
| + void DemandDrawHw(const CommonBrowserParams& common_params, |
| + const DemandDrawHwParams& params, |
| + CommonRendererParams* common_renderer_params, |
| + cc::CompositorFrame* frame); |
| + |
| + void DidActivatePendingTree(); |
| + void DeliverMessages(); |
| + |
| + const int routing_id_; |
| + IPC::Sender* const sender_; |
| + SynchronousCompositorOutputSurface* const output_surface_; |
| + SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_; |
| + SynchronousInputHandlerProxy* const input_handler_proxy_; |
| + InputHandlerManagerClient::Handler* const input_handler_; |
| + bool inside_receive_; // TODO(boliu): versioning |
| + |
| + // From browser. |
| + size_t bytes_limit_; |
| + |
| + unsigned version_; |
| + gfx::ScrollOffset total_scroll_offset_; // Modified by both. |
| + gfx::ScrollOffset max_scroll_offset_; |
| + gfx::SizeF scrollable_size_; |
| + float page_scale_factor_; |
| + float min_page_scale_factor_; |
| + float max_page_scale_factor_; |
| + bool need_animate_scroll_; |
| + bool need_invalidate_; |
| + bool need_begin_frame_; |
| + bool did_activate_pending_tree_; |
|
no sievers
2015/10/29 01:37:01
nit: DISALLOW_COPY_AND_ASSIGN();
boliu
2015/10/29 04:24:44
Done.
|
| +}; |
| + |
| +} // namespace content |
| + |
| +#endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_ |