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

Side by Side Diff: content/renderer/android/synchronous_compositor_proxy.h

Issue 1408123005: Android Webview IPC-based sync compositing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 1 month 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
6 #define CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
7
8 #include "content/common/input/input_event_ack_state.h"
9 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s ource.h"
10 #include "content/renderer/android/synchronous_compositor_output_surface.h"
11 #include "content/renderer/input/input_handler_manager_client.h"
12 #include "content/renderer/input/synchronous_input_handler_proxy.h"
13 #include "ui/gfx/geometry/scroll_offset.h"
14 #include "ui/gfx/geometry/size_f.h"
15
16 namespace IPC {
17 class Message;
18 class Sender;
19 } // namespace IPC
20
21 namespace blink {
22 class WebInputEvent;
23 }
24
25 namespace cc {
26 class CompositorFrame;
27 } // namespace cc
28
29 namespace content {
30
31 class SynchronousCompositorOutputSurface;
32 struct CommonBrowserParams;
33 struct CommonRendererParams;
34 struct DemandDrawHwParams;
35
36 class SynchronousCompositorProxy
37 : public SynchronousInputHandler,
38 public SynchronousCompositorExternalBeginFrameSourceClient,
39 public SynchronousCompositorOutputSurfaceClient {
40 public:
41 SynchronousCompositorProxy(
42 int routing_id,
43 IPC::Sender* sender,
44 SynchronousCompositorOutputSurface* output_surface,
45 SynchronousCompositorExternalBeginFrameSource* begin_frame_source,
46 SynchronousInputHandlerProxy* input_handler_proxy,
47 InputHandlerManagerClient::Handler* handler);
48 ~SynchronousCompositorProxy() override;
49
50 // SynchronousInputHandler overrides.
51 void SetNeedsSynchronousAnimateInput() override;
52 void UpdateRootLayerState(const gfx::ScrollOffset& total_scroll_offset,
53 const gfx::ScrollOffset& max_scroll_offset,
54 const gfx::SizeF& scrollable_size,
55 float page_scale_factor,
56 float min_page_scale_factor,
57 float max_page_scale_factor) override;
58
59 // SynchronousCompositorExternalBeginFrameSourceClient overrides.
60 void OnNeedsBeginFramesChange(bool needs_begin_frames) override;
61
62 // SynchronousCompositorOutputSurfaceClient overrides.
63 void Invalidate() override;
64
65 void OnMessageReceived(const IPC::Message& message);
66 bool Send(IPC::Message* message);
67
68 private:
69 class ScopedInsideReceive;
70 void ProcessCommonParams(const CommonBrowserParams& common_params);
71 void ConstructCommonParams(CommonRendererParams* params);
72
73 // IPC handlers.
74 void HandleInputEvent(const CommonBrowserParams& common_params,
75 const blink::WebInputEvent* event,
76 CommonRendererParams* common_renderer_params,
77 InputEventAckState* ack);
78 void BeginFrame(const CommonBrowserParams& common_params,
79 const cc::BeginFrameArgs& args,
80 CommonRendererParams* common_renderer_params);
81 void OnComputeScroll(const CommonBrowserParams& common_params,
82 base::TimeTicks animation_time,
83 CommonRendererParams* common_renderer_params);
84 void DemandDrawHw(const CommonBrowserParams& common_params,
85 const DemandDrawHwParams& params,
86 CommonRendererParams* common_renderer_params,
87 cc::CompositorFrame* frame);
88
89 void DidActivatePendingTree();
90 void DeliverMessages();
91
92 const int routing_id_;
93 IPC::Sender* const sender_;
94 SynchronousCompositorOutputSurface* const output_surface_;
95 SynchronousCompositorExternalBeginFrameSource* const begin_frame_source_;
96 SynchronousInputHandlerProxy* const input_handler_proxy_;
97 InputHandlerManagerClient::Handler* const input_handler_;
98 bool inside_receive_; // TODO(boliu): versioning
99
100 // From browser.
101 size_t bytes_limit_;
102
103 unsigned version_;
104 gfx::ScrollOffset total_scroll_offset_; // Modified by both.
105 gfx::ScrollOffset max_scroll_offset_;
106 gfx::SizeF scrollable_size_;
107 float page_scale_factor_;
108 float min_page_scale_factor_;
109 float max_page_scale_factor_;
110 bool need_animate_scroll_;
111 bool need_invalidate_;
112 bool need_begin_frame_;
113 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.
114 };
115
116 } // namespace content
117
118 #endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698