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

Unified Diff: cc/trees/layer_tree_host_interface.h

Issue 2317753002: cc: Abstract the LayerTreeHost. (Closed)
Patch Set: Rebase Created 4 years, 3 months 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
« no previous file with comments | « cc/trees/layer_tree_host_common_unittest.cc ('k') | cc/trees/layer_tree_host_pixeltest_readback.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_interface.h
diff --git a/cc/trees/layer_tree_host_interface.h b/cc/trees/layer_tree_host_interface.h
new file mode 100644
index 0000000000000000000000000000000000000000..7308787b5ab10b1e31cc8ecbad4aba058a1c0c7f
--- /dev/null
+++ b/cc/trees/layer_tree_host_interface.h
@@ -0,0 +1,186 @@
+// Copyright 2016 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 CC_TREES_LAYER_TREE_HOST_INTERFACE_H_
+#define CC_TREES_LAYER_TREE_HOST_INTERFACE_H_
+
+#include "base/macros.h"
+#include "cc/base/cc_export.h"
+#include "cc/debug/micro_benchmark.h"
+#include "cc/input/top_controls_state.h"
+
+namespace base {
+class TimeTicks;
+} // namespace base
+
+namespace gfx {
+class Rect;
+} // namespace gfx
+
+namespace cc {
+class InputHandler;
+class LayerTree;
+class LayerTreeDebugState;
+class LayerTreeMutator;
+class LayerTreeSettings;
+class OutputSurface;
+class SwapPromiseMonitor;
+class TaskRunnerProvider;
+
+// TODO(khushalsagar): Will be renamed to LayerTreeHost.
+class CC_EXPORT LayerTreeHostInterface {
+ public:
+ virtual ~LayerTreeHostInterface() {}
+
+ // Returns the process global unique identifier for this LayerTreeHost.
+ virtual int GetId() const = 0;
+
+ // The current source frame number. This is incremented for each main frame
+ // update(commit) pushed to the compositor thread.
+ virtual int SourceFrameNumber() const = 0;
+
+ // Returns the LayerTree that holds the main frame state pushed to the
+ // LayerTreeImpl on commit.
+ virtual LayerTree* GetLayerTree() = 0;
+ virtual const LayerTree* GetLayerTree() const = 0;
+
+ // Returns the TaskRunnerProvider used to access the main and compositor
+ // thread task runners.
+ virtual TaskRunnerProvider* GetTaskRunnerProvider() const = 0;
+
+ // Returns the settings used by this host.
+ virtual const LayerTreeSettings& GetSettings() const = 0;
+
+ // Sets the client id used to generate the SurfaceId that uniquely identifies
+ // the Surfaces produced by this compositor.
+ virtual void SetSurfaceClientId(uint32_t client_id) = 0;
+
+ // Sets the LayerTreeMutator interface used to directly mutate the compositor
+ // state on the compositor thread. (Compositor-Worker)
+ virtual void SetLayerTreeMutator(
+ std::unique_ptr<LayerTreeMutator> mutator) = 0;
+
+ // Call this function when you expect there to be a swap buffer.
+ // See swap_promise.h for how to use SwapPromise.
+ virtual void QueueSwapPromise(std::unique_ptr<SwapPromise> swap_promise) = 0;
+
+ // Sets whether the content is suitable to use Gpu Rasterization.
+ virtual void SetHasGpuRasterizationTrigger(bool has_trigger) = 0;
+
+ // Visibility and OutputSurface -------------------------------
+
+ virtual void SetVisible(bool visible) = 0;
+ virtual bool IsVisible() const = 0;
+
+ // Called in response to an OutputSurface request made to the client using
+ // LayerTreeHostClient::RequestNewOutputSurface. The client will be informed
+ // of the OutputSurface initialization status using DidInitializaOutputSurface
+ // or DidFailToInitializeOutputSurface. The request is completed when the host
+ // successfully initializes an OutputSurface.
+ virtual void SetOutputSurface(
+ std::unique_ptr<OutputSurface> output_surface) = 0;
+
+ // Forces the host to immediately release all references to the OutputSurface,
+ // if any. Can be safely called any time.
+ virtual std::unique_ptr<OutputSurface> ReleaseOutputSurface() = 0;
+
+ // Frame Scheduling (main and compositor frames) requests -------
+
+ // Requests a main frame update even if no content has changed. This is used,
+ // for instance in the case of RequestAnimationFrame from blink to ensure the
+ // main frame update is run on the next tick without pre-emptively forcing a
+ // full commit synchronization or layer updates.
+ virtual void SetNeedsAnimate() = 0;
+
+ // Requests a main frame update and also ensure that the host pulls layer
+ // updates from the client, even if no content might have changed, without
+ // forcing a full commit synchronization.
+ virtual void SetNeedsUpdateLayers() = 0;
+
+ // Requests that the next main frame update performs a full commit
+ // synchronization.
+ virtual void SetNeedsCommit() = 0;
+
+ // Returns true if a main frame (for any pipeline stage above) has been
+ // requested.
+ virtual bool BeginMainFrameRequested() const = 0;
+
+ // Returns true if a main frame with commit synchronization has been
+ // requested.
+ virtual bool CommitRequested() const = 0;
+
+ // Enables/disables the compositor from requesting main frame updates from the
+ // client.
+ virtual void SetDeferCommits(bool defer_commits) = 0;
+
+ // Synchronously performs a main frame update and layer updates. Used only in
+ // single threaded mode when the compositor's internal scheduling is disabled.
+ virtual void LayoutAndUpdateLayers() = 0;
+
+ // Synchronously performs a complete main frame update, commit and compositor
+ // frame. Used only in single threaded mode when the compositor's internal
+ // scheduling is disabled.
+ virtual void Composite(base::TimeTicks frame_begin_time) = 0;
+
+ // Requests a redraw (compositor frame) for the complete viewport.
+ virtual void SetNeedsRedraw() = 0;
+
+ // Requests a redraw (compositor frame) for the given rect.
+ virtual void SetNeedsRedrawRect(const gfx::Rect& damage_rect) = 0;
+
+ // Requests a main frame (including layer updates) and ensures that this main
+ // frame results in a redraw for the complete viewport when producing the
+ // CompositorFrame.
+ virtual void SetNextCommitForcesRedraw() = 0;
+
+ // Input Handling ---------------------------------------------
+
+ // Notifies the compositor that input from the browser is being throttled till
+ // the next commit. The compositor will prioritize activation of the pending
+ // tree so a commit can be performed.
+ virtual void NotifyInputThrottledUntilCommit() = 0;
+
+ // Sets the state of the top controls. (Used for URL bar animations on
+ // android).
+ virtual void UpdateTopControlsState(TopControlsState constraints,
+ TopControlsState current,
+ bool animate) = 0;
+
+ // Returns a reference to the InputHandler used to respond to input events on
+ // the compositor thread.
+ virtual const base::WeakPtr<InputHandler>& GetInputHandler() const = 0;
+
+ // Informs the compositor that an active fling gesture being processed on the
+ // main thread has been finished.
+ virtual void DidStopFlinging() = 0;
+
+ // Debugging and benchmarks ---------------------------------
+ virtual void SetDebugState(const LayerTreeDebugState& debug_state) = 0;
+ virtual const LayerTreeDebugState& GetDebugState() const = 0;
+
+ // Returns the id of the benchmark on success, 0 otherwise.
+ virtual int ScheduleMicroBenchmark(
+ const std::string& benchmark_name,
+ std::unique_ptr<base::Value> value,
+ const MicroBenchmark::DoneCallback& callback) = 0;
+
+ // Returns true if the message was successfully delivered and handled.
+ virtual bool SendMessageToMicroBenchmark(
+ int id,
+ std::unique_ptr<base::Value> value) = 0;
+
+ // Methods used internally in cc. These are not intended to be a part of the
+ // public API for use by the embedder ----------------------
+
+ // When a SwapPromiseMonitor is created on the main thread, it calls
+ // InsertSwapPromiseMonitor() to register itself with LayerTreeHost.
+ // When the monitor is destroyed, it calls RemoveSwapPromiseMonitor()
+ // to unregister itself.
+ virtual void InsertSwapPromiseMonitor(SwapPromiseMonitor* monitor) = 0;
+ virtual void RemoveSwapPromiseMonitor(SwapPromiseMonitor* monitor) = 0;
+};
+
+} // namespace cc
+
+#endif // CC_TREES_LAYER_TREE_HOST_INTERFACE_H_
« no previous file with comments | « cc/trees/layer_tree_host_common_unittest.cc ('k') | cc/trees/layer_tree_host_pixeltest_readback.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698