blob: 299729ae7bef373ac0e14eb7be017c6094ef75a7 [file] [log] [blame]
// 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 CC_TEST_TEST_HOOKS_H_
#define CC_TEST_TEST_HOOKS_H_
#include "base/macros.h"
#include "cc/animation/animation_delegate.h"
#include "cc/trees/layer_tree_host.h"
#include "cc/trees/layer_tree_host_impl.h"
namespace cc {
namespace proto {
class CompositorMessageToImpl;
}
// Used by test stubs to notify the test when something interesting happens.
class TestHooks : public AnimationDelegate {
public:
TestHooks();
~TestHooks() override;
void ReadSettings(const LayerTreeSettings& settings);
virtual void CreateResourceAndRasterBufferProvider(
LayerTreeHostImpl* host_impl,
std::unique_ptr<RasterBufferProvider>* raster_buffer_provider,
std::unique_ptr<ResourcePool>* resource_pool);
virtual void WillBeginImplFrameOnThread(LayerTreeHostImpl* host_impl,
const BeginFrameArgs& args) {}
virtual void DidFinishImplFrameOnThread(LayerTreeHostImpl* host_impl) {}
virtual void BeginMainFrameAbortedOnThread(LayerTreeHostImpl* host_impl,
CommitEarlyOutReason reason) {}
virtual void WillPrepareTiles(LayerTreeHostImpl* host_impl) {}
virtual void BeginCommitOnThread(LayerTreeHostImpl* host_impl) {}
virtual void WillCommitCompleteOnThread(LayerTreeHostImpl* host_impl) {}
virtual void CommitCompleteOnThread(LayerTreeHostImpl* host_impl) {}
virtual void WillActivateTreeOnThread(LayerTreeHostImpl* host_impl) {}
virtual void DidActivateTreeOnThread(LayerTreeHostImpl* host_impl) {}
virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl,
bool success) {}
virtual DrawResult PrepareToDrawOnThread(
LayerTreeHostImpl* host_impl,
LayerTreeHostImpl::FrameData* frame_data,
DrawResult draw_result);
virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) {}
virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) {}
virtual void SwapBuffersCompleteOnThread(LayerTreeHostImpl* host_impl) {}
virtual void NotifyReadyToActivateOnThread(LayerTreeHostImpl* host_impl) {}
virtual void NotifyReadyToDrawOnThread(LayerTreeHostImpl* host_impl) {}
virtual void NotifyAllTileTasksCompleted(LayerTreeHostImpl* host_impl) {}
virtual void NotifyTileStateChangedOnThread(LayerTreeHostImpl* host_impl,
const Tile* tile) {}
virtual void AnimateLayers(LayerTreeHostImpl* host_impl,
base::TimeTicks monotonic_time) {}
virtual void UpdateAnimationState(LayerTreeHostImpl* host_impl,
bool has_unfinished_animation) {}
virtual void WillAnimateLayers(LayerTreeHostImpl* host_impl,
base::TimeTicks monotonic_time) {}
virtual void ApplyViewportDeltas(
const gfx::Vector2dF& inner_delta,
const gfx::Vector2dF& outer_delta,
const gfx::Vector2dF& elastic_overscroll_delta,
float scale,
float top_controls_delta) {}
virtual void BeginMainFrame(const BeginFrameArgs& args) {}
virtual void WillBeginMainFrame() {}
virtual void DidBeginMainFrame() {}
virtual void UpdateLayerTreeHost() {}
virtual void DidInitializeOutputSurface() {}
virtual void DidFailToInitializeOutputSurface() {}
virtual void DidAddAnimation() {}
virtual void WillCommit() {}
virtual void DidCommit() {}
virtual void DidCommitAndDrawFrame() {}
virtual void DidCompleteSwapBuffers() {}
virtual void DidSetVisibleOnImplTree(LayerTreeHostImpl* host_impl,
bool visible) {}
virtual void ScheduleComposite() {}
virtual void DidSetNeedsUpdateLayers() {}
virtual void DidActivateSyncTree() {}
// Hooks for SchedulerClient.
virtual void ScheduledActionWillSendBeginMainFrame() {}
virtual void ScheduledActionSendBeginMainFrame() {}
virtual void ScheduledActionDrawAndSwapIfPossible() {}
virtual void ScheduledActionCommit() {}
virtual void ScheduledActionBeginOutputSurfaceCreation() {}
virtual void ScheduledActionPrepareTiles() {}
virtual void ScheduledActionInvalidateOutputSurface() {}
virtual void SendBeginMainFrameNotExpectedSoon() {}
// Hooks for ProxyImpl
virtual void UpdateTopControlsStateOnImpl(TopControlsState constraints,
TopControlsState current,
bool animate) {}
virtual void InitializeOutputSurfaceOnImpl(OutputSurface* output_surface) {}
virtual void MainThreadHasStoppedFlingingOnImpl() {}
virtual void SetInputThrottledUntilCommitOnImpl(bool is_throttled) {}
virtual void SetDeferCommitsOnImpl(bool defer_commits) {}
virtual void BeginMainFrameAbortedOnImpl(CommitEarlyOutReason reason) {}
virtual void SetNeedsRedrawOnImpl(const gfx::Rect& damage_rect) {}
virtual void SetNeedsCommitOnImpl() {}
virtual void FinishAllRenderingOnImpl() {}
virtual void SetVisibleOnImpl(bool visible) {}
virtual void ReleaseOutputSurfaceOnImpl() {}
virtual void FinishGLOnImpl() {}
virtual void StartCommitOnImpl() {}
// Hooks for ProxyMain
virtual void ReceivedDidCompleteSwapBuffers() {}
virtual void ReceivedSetRendererCapabilitiesMainCopy(
const RendererCapabilities& capabilities) {}
virtual void ReceivedBeginMainFrameNotExpectedSoon() {}
virtual void ReceivedDidCommitAndDrawFrame() {}
virtual void ReceivedSetAnimationEvents() {}
virtual void ReceivedDidLoseOutputSurface() {}
virtual void ReceivedRequestNewOutputSurface() {}
virtual void ReceivedDidInitializeOutputSurface(
bool success,
const RendererCapabilities& capabilities) {}
virtual void ReceivedDidCompletePageScaleAnimation() {}
virtual void ReceivedPostFrameTimingEventsOnMain() {}
virtual void ReceivedBeginMainFrame() {}
// Implementation of AnimationDelegate:
void NotifyAnimationStarted(base::TimeTicks monotonic_time,
TargetProperty::Type target_property,
int group) override {}
void NotifyAnimationFinished(base::TimeTicks monotonic_time,
TargetProperty::Type target_property,
int group) override {}
void NotifyAnimationAborted(base::TimeTicks monotonic_time,
TargetProperty::Type target_property,
int group) override {}
void NotifyAnimationTakeover(base::TimeTicks monotonic_time,
TargetProperty::Type target_property,
double animation_start_time,
std::unique_ptr<AnimationCurve> curve) override {
}
virtual void RequestNewOutputSurface() = 0;
// Used to notify the test to create the Remote client LayerTreeHost on
// receiving a CompositorMessageToImpl of type INITIALIZE_IMPL.
virtual void CreateRemoteClientHost(
const proto::CompositorMessageToImpl& proto) {}
// Used to notify the test to destroy the Remote client LayerTreeHost on
// receiving a CompositorMessageToImpl of type CLOSE_IMPL.
virtual void DestroyRemoteClientHost() {}
};
} // namespace cc
#endif // CC_TEST_TEST_HOOKS_H_