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

Unified 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: fix win compile 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 side-by-side diff with in-line comments
Download patch
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..ad09d14b81f61f40c8fcb47a162ab2b2fc47c09c
--- /dev/null
+++ b/content/renderer/android/synchronous_compositor_proxy.h
@@ -0,0 +1,124 @@
+// 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 "base/macros.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 blink
+
+namespace cc {
+class CompositorFrame;
+} // namespace cc
+
+namespace content {
+
+class SynchronousCompositorOutputSurface;
+struct SyncCompositorCommonBrowserParams;
+struct SyncCompositorCommonRendererParams;
+struct SyncCompositorDemandDrawHwParams;
+
+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:
+ void ProcessCommonParams(
+ const SyncCompositorCommonBrowserParams& common_params);
+ void PopulateCommonParams(SyncCompositorCommonRendererParams* params);
+
+ // IPC handlers.
+ void HandleInputEvent(
+ const SyncCompositorCommonBrowserParams& common_params,
+ const blink::WebInputEvent* event,
+ SyncCompositorCommonRendererParams* common_renderer_params,
+ InputEventAckState* ack);
+ void BeginFrame(const SyncCompositorCommonBrowserParams& common_params,
+ const cc::BeginFrameArgs& args,
+ SyncCompositorCommonRendererParams* common_renderer_params);
+ void OnComputeScroll(
+ const SyncCompositorCommonBrowserParams& common_params,
+ base::TimeTicks animation_time,
+ SyncCompositorCommonRendererParams* common_renderer_params);
+ void DemandDrawHw(const SyncCompositorCommonBrowserParams& common_params,
+ const SyncCompositorDemandDrawHwParams& params,
+ SyncCompositorCommonRendererParams* common_renderer_params,
+ cc::CompositorFrame* frame);
+
+ void DidActivatePendingTree();
+ void DeliverMessages();
+ void SendAsyncRendererStateIfNeeded();
+
+ 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_;
+
+ // From browser.
+ size_t bytes_limit_;
+
+ uint32_t 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_;
+
+ DISALLOW_COPY_AND_ASSIGN(SynchronousCompositorProxy);
+};
+
+} // namespace content
+
+#endif // CONTENT_RENDERER_ANDROID_SYNCHRONOUS_COMPOSITOR_PROXY_H_
« no previous file with comments | « content/renderer/android/synchronous_compositor_filter.cc ('k') | content/renderer/android/synchronous_compositor_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698