#ifndef CC_TREES_PROXY_H_
#define CC_TREES_PROXY_H_
#include <memory>
#include <string>
#include "base/threading/platform_thread.h"
#include "base/time/time.h"
#include "cc/cc_export.h"
#include "cc/input/browser_controls_state.h"
#include "cc/trees/paint_holding_commit_trigger.h"
#include "cc/trees/paint_holding_reason.h"
#include "cc/trees/task_runner_provider.h"
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/common/surfaces/local_surface_id.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "url/gurl.h"
namespace gfx {
class Rect;
}
namespace cc {
class LayerTreeFrameSink;
class LayerTreeMutator;
class PaintWorkletLayerPainter;
class RenderFrameMetadataObserver;
class CC_EXPORT Proxy {
public:
virtual ~Proxy() {}
virtual bool IsStarted() const = 0;
virtual void SetLayerTreeFrameSink(
LayerTreeFrameSink* layer_tree_frame_sink) = 0;
virtual void ReleaseLayerTreeFrameSink() = 0;
virtual void SetVisible(bool visible) = 0;
#if BUILDFLAG(IS_OHOS)
virtual void SetPinchSmoothMode(bool isEnable) = 0;
#endif
virtual void SetNeedsAnimate() = 0;
virtual void SetNeedsUpdateLayers() = 0;
virtual void SetNeedsCommit() = 0;
virtual void SetNeedsRedraw(const gfx::Rect& damage_rect) = 0;
virtual void SetTargetLocalSurfaceId(
const viz::LocalSurfaceId& target_local_surface_id) = 0;
virtual bool RequestedAnimatePending() = 0;
virtual void SetDeferMainFrameUpdate(bool defer_main_frame_update) = 0;
virtual void SetPauseRendering(bool pause_rendering) = 0;
virtual void SetInputResponsePending() = 0;
virtual bool StartDeferringCommits(base::TimeDelta timeout,
PaintHoldingReason reason) = 0;
virtual void StopDeferringCommits(PaintHoldingCommitTrigger) = 0;
virtual bool IsDeferringCommits() const = 0;
virtual bool CommitRequested() const = 0;
virtual void Start() = 0;
virtual void Stop() = 0;
virtual void SetMutator(std::unique_ptr<LayerTreeMutator> mutator) = 0;
virtual void SetPaintWorkletLayerPainter(
std::unique_ptr<PaintWorkletLayerPainter> painter) = 0;
virtual void UpdateBrowserControlsState(BrowserControlsState constraints,
BrowserControlsState current,
bool animate) = 0;
virtual void RequestBeginMainFrameNotExpected(bool new_state) = 0;
virtual bool MainFrameWillHappenForTesting() = 0;
virtual void SetSourceURL(ukm::SourceId source_id, const GURL& url) = 0;
virtual void SetUkmSmoothnessDestination(
base::WritableSharedMemoryMapping ukm_smoothness_data) = 0;
virtual void SetRenderFrameObserver(
std::unique_ptr<RenderFrameMetadataObserver> observer) = 0;
virtual void CompositeImmediatelyForTest(base::TimeTicks frame_begin_time,
bool raster,
base::OnceClosure callback) = 0;
virtual double GetPercentDroppedFrames() const = 0;
};
}
#endif