Index: cc/test/layer_tree_test.cc |
diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc |
index d68ec6744bf8f72135da6a993027cccc369c28b2..a99e2f25a80794cd9727f0ec729b2621740b7b63 100644 |
--- a/cc/test/layer_tree_test.cc |
+++ b/cc/test/layer_tree_test.cc |
@@ -30,10 +30,8 @@ |
#include "cc/trees/layer_tree_host_impl.h" |
#include "cc/trees/layer_tree_host_single_thread_client.h" |
#include "cc/trees/layer_tree_impl.h" |
-#include "cc/trees/proxy_impl.h" |
-#include "cc/trees/proxy_main.h" |
#include "cc/trees/single_thread_proxy.h" |
-#include "cc/trees/threaded_channel.h" |
+#include "cc/trees/thread_proxy.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "ui/gfx/geometry/size_conversions.h" |
@@ -95,8 +93,254 @@ |
layer_settings); |
} |
-// Creates a SingleThreadProxy that notifies the supplied |test_hooks| of |
-// various actions. |
+TestHooks::TestHooks() {} |
+ |
+TestHooks::~TestHooks() {} |
+ |
+DrawResult TestHooks::PrepareToDrawOnThread( |
+ LayerTreeHostImpl* host_impl, |
+ LayerTreeHostImpl::FrameData* frame_data, |
+ DrawResult draw_result) { |
+ return draw_result; |
+} |
+ |
+void TestHooks::CreateResourceAndTileTaskWorkerPool( |
+ LayerTreeHostImpl* host_impl, |
+ scoped_ptr<TileTaskWorkerPool>* tile_task_worker_pool, |
+ scoped_ptr<ResourcePool>* resource_pool) { |
+ host_impl->LayerTreeHostImpl::CreateResourceAndTileTaskWorkerPool( |
+ tile_task_worker_pool, resource_pool); |
+} |
+ |
+// Adapts ThreadProxy for test. Injects test hooks for testing. |
+class ThreadProxyForTest : public ThreadProxy { |
+ public: |
+ static scoped_ptr<Proxy> Create( |
+ TestHooks* test_hooks, |
+ LayerTreeHost* host, |
+ TaskRunnerProvider* task_runner_provider, |
+ scoped_ptr<BeginFrameSource> external_begin_frame_source) { |
+ return make_scoped_ptr( |
+ new ThreadProxyForTest(test_hooks, host, task_runner_provider, |
+ std::move(external_begin_frame_source))); |
+ } |
+ |
+ ~ThreadProxyForTest() override {} |
+ |
+ private: |
+ TestHooks* test_hooks_; |
+ |
+ void SetNeedsUpdateLayers() override { |
+ ThreadProxy::SetNeedsUpdateLayers(); |
+ test_hooks_->DidSetNeedsUpdateLayers(); |
+ } |
+ |
+ void ScheduledActionSendBeginMainFrame(const BeginFrameArgs& args) override { |
+ test_hooks_->ScheduledActionWillSendBeginMainFrame(); |
+ ThreadProxy::ScheduledActionSendBeginMainFrame(args); |
+ test_hooks_->ScheduledActionSendBeginMainFrame(); |
+ } |
+ |
+ DrawResult ScheduledActionDrawAndSwapIfPossible() override { |
+ DrawResult result = ThreadProxy::ScheduledActionDrawAndSwapIfPossible(); |
+ test_hooks_->ScheduledActionDrawAndSwapIfPossible(); |
+ return result; |
+ } |
+ |
+ void ScheduledActionCommit() override { |
+ ThreadProxy::ScheduledActionCommit(); |
+ test_hooks_->ScheduledActionCommit(); |
+ } |
+ |
+ void ScheduledActionBeginOutputSurfaceCreation() override { |
+ ThreadProxy::ScheduledActionBeginOutputSurfaceCreation(); |
+ test_hooks_->ScheduledActionBeginOutputSurfaceCreation(); |
+ } |
+ |
+ void ScheduledActionPrepareTiles() override { |
+ ThreadProxy::ScheduledActionPrepareTiles(); |
+ test_hooks_->ScheduledActionPrepareTiles(); |
+ } |
+ |
+ void ScheduledActionInvalidateOutputSurface() override { |
+ ThreadProxy::ScheduledActionInvalidateOutputSurface(); |
+ test_hooks_->ScheduledActionInvalidateOutputSurface(); |
+ } |
+ |
+ void SendBeginMainFrameNotExpectedSoon() override { |
+ ThreadProxy::SendBeginMainFrameNotExpectedSoon(); |
+ test_hooks_->SendBeginMainFrameNotExpectedSoon(); |
+ } |
+ |
+ void DidActivateSyncTree() override { |
+ ThreadProxy::DidActivateSyncTree(); |
+ test_hooks_->DidActivateSyncTree(); |
+ } |
+ |
+ void SetThrottleFrameProductionOnImpl(bool throttle) override { |
+ test_hooks_->SetThrottleFrameProductionOnImpl(throttle); |
+ ThreadProxy::SetThrottleFrameProductionOnImpl(throttle); |
+ } |
+ |
+ void InitializeOutputSurfaceOnImpl(OutputSurface* output_surface) override { |
+ test_hooks_->InitializeOutputSurfaceOnImpl(output_surface); |
+ ThreadProxy::InitializeOutputSurfaceOnImpl(output_surface); |
+ } |
+ |
+ void MainThreadHasStoppedFlingingOnImpl() override { |
+ test_hooks_->MainThreadHasStoppedFlingingOnImpl(); |
+ ThreadProxy::MainThreadHasStoppedFlingingOnImpl(); |
+ } |
+ |
+ void SetInputThrottledUntilCommitOnImpl(bool is_throttled) override { |
+ test_hooks_->SetInputThrottledUntilCommitOnImpl(is_throttled); |
+ ThreadProxy::SetInputThrottledUntilCommitOnImpl(is_throttled); |
+ } |
+ |
+ void UpdateTopControlsStateOnImpl(TopControlsState constraints, |
+ TopControlsState current, |
+ bool animate) override { |
+ test_hooks_->UpdateTopControlsStateOnImpl(constraints, current, animate); |
+ ThreadProxy::UpdateTopControlsStateOnImpl(constraints, current, animate); |
+ } |
+ |
+ void SetDeferCommitsOnImpl(bool defer_commits) const override { |
+ test_hooks_->SetDeferCommitsOnImpl(defer_commits); |
+ ThreadProxy::SetDeferCommitsOnImpl(defer_commits); |
+ } |
+ |
+ void BeginMainFrameAbortedOnImpl( |
+ CommitEarlyOutReason reason, |
+ base::TimeTicks main_thread_start_time) override { |
+ test_hooks_->BeginMainFrameAbortedOnImpl(reason); |
+ ThreadProxy::BeginMainFrameAbortedOnImpl(reason, main_thread_start_time); |
+ } |
+ |
+ void SetNeedsRedrawOnImpl(const gfx::Rect& damage_rect) override { |
+ test_hooks_->SetNeedsRedrawOnImpl(damage_rect); |
+ ThreadProxy::SetNeedsRedrawOnImpl(damage_rect); |
+ }; |
+ |
+ void SetNeedsCommitOnImpl() override { |
+ test_hooks_->SetNeedsCommitOnImpl(); |
+ ThreadProxy::SetNeedsCommitOnImpl(); |
+ } |
+ |
+ void FinishAllRenderingOnImpl(CompletionEvent* completion) override { |
+ test_hooks_->FinishAllRenderingOnImpl(); |
+ ThreadProxy::FinishAllRenderingOnImpl(completion); |
+ }; |
+ |
+ void SetVisibleOnImpl(bool visible) override { |
+ test_hooks_->SetVisibleOnImpl(visible); |
+ ThreadProxy::SetVisibleOnImpl(visible); |
+ } |
+ |
+ void ReleaseOutputSurfaceOnImpl(CompletionEvent* completion) override { |
+ test_hooks_->ReleaseOutputSurfaceOnImpl(); |
+ ThreadProxy::ReleaseOutputSurfaceOnImpl(completion); |
+ } |
+ |
+ void FinishGLOnImpl(CompletionEvent* completion) override { |
+ test_hooks_->FinishGLOnImpl(); |
+ ThreadProxy::FinishGLOnImpl(completion); |
+ } |
+ |
+ void StartCommitOnImpl(CompletionEvent* completion, |
+ LayerTreeHost* layer_tree_host, |
+ base::TimeTicks main_thread_start_time, |
+ bool hold_commit_for_activation) override { |
+ test_hooks_->StartCommitOnImpl(); |
+ ThreadProxy::StartCommitOnImpl(completion, layer_tree_host, |
+ main_thread_start_time, |
+ hold_commit_for_activation); |
+ } |
+ |
+ void InitializeImplOnImpl(CompletionEvent* completion, |
+ LayerTreeHost* layer_tree_host) override { |
+ ThreadProxy::InitializeImplOnImpl(completion, layer_tree_host); |
+ test_hooks_->InitializeImplOnImpl(); |
+ } |
+ |
+ void LayerTreeHostClosedOnImpl(CompletionEvent* completion) override { |
+ test_hooks_->WillCloseLayerTreeHostOnImpl(); |
+ ThreadProxy::LayerTreeHostClosedOnImpl(completion); |
+ } |
+ |
+ void DidCompleteSwapBuffers() override { |
+ test_hooks_->ReceivedDidCompleteSwapBuffers(); |
+ ThreadProxy::DidCompleteSwapBuffers(); |
+ } |
+ |
+ void SetRendererCapabilitiesMainCopy( |
+ const RendererCapabilities& capabilities) override { |
+ test_hooks_->ReceivedSetRendererCapabilitiesMainCopy(capabilities); |
+ ThreadProxy::SetRendererCapabilitiesMainCopy(capabilities); |
+ } |
+ |
+ void BeginMainFrameNotExpectedSoon() override { |
+ test_hooks_->ReceivedBeginMainFrameNotExpectedSoon(); |
+ ThreadProxy::BeginMainFrameNotExpectedSoon(); |
+ } |
+ |
+ void DidCommitAndDrawFrame() override { |
+ test_hooks_->ReceivedDidCommitAndDrawFrame(); |
+ ThreadProxy::DidCommitAndDrawFrame(); |
+ } |
+ |
+ void SetAnimationEvents(scoped_ptr<AnimationEventsVector> events) override { |
+ test_hooks_->ReceivedSetAnimationEvents(); |
+ ThreadProxy::SetAnimationEvents(std::move(events)); |
+ } |
+ |
+ void DidLoseOutputSurface() override { |
+ test_hooks_->ReceivedDidLoseOutputSurface(); |
+ ThreadProxy::DidLoseOutputSurface(); |
+ } |
+ |
+ void RequestNewOutputSurface() override { |
+ test_hooks_->ReceivedRequestNewOutputSurface(); |
+ ThreadProxy::RequestNewOutputSurface(); |
+ } |
+ |
+ void DidInitializeOutputSurface( |
+ bool success, |
+ const RendererCapabilities& capabilities) override { |
+ test_hooks_->ReceivedDidInitializeOutputSurface(success, capabilities); |
+ ThreadProxy::DidInitializeOutputSurface(success, capabilities); |
+ } |
+ |
+ void DidCompletePageScaleAnimation() override { |
+ test_hooks_->ReceivedDidCompletePageScaleAnimation(); |
+ ThreadProxy::DidCompletePageScaleAnimation(); |
+ } |
+ |
+ void PostFrameTimingEventsOnMain( |
+ scoped_ptr<FrameTimingTracker::CompositeTimingSet> composite_events, |
+ scoped_ptr<FrameTimingTracker::MainFrameTimingSet> main_frame_events) |
+ override { |
+ test_hooks_->ReceivedPostFrameTimingEventsOnMain(); |
+ ThreadProxy::PostFrameTimingEventsOnMain(std::move(composite_events), |
+ std::move(main_frame_events)); |
+ } |
+ |
+ void BeginMainFrame(scoped_ptr<BeginMainFrameAndCommitState> |
+ begin_main_frame_state) override { |
+ test_hooks_->ReceivedBeginMainFrame(); |
+ ThreadProxy::BeginMainFrame(std::move(begin_main_frame_state)); |
+ }; |
+ |
+ ThreadProxyForTest(TestHooks* test_hooks, |
+ LayerTreeHost* host, |
+ TaskRunnerProvider* task_runner_provider, |
+ scoped_ptr<BeginFrameSource> external_begin_frame_source) |
+ : ThreadProxy(host, |
+ task_runner_provider, |
+ std::move(external_begin_frame_source)), |
+ test_hooks_(test_hooks) {} |
+}; |
+ |
+// Adapts SingleThreadProxy for test. Injects test hooks for testing. |
class SingleThreadProxyForTest : public SingleThreadProxy { |
public: |
static scoped_ptr<Proxy> Create( |
@@ -113,6 +357,46 @@ |
~SingleThreadProxyForTest() override {} |
private: |
+ TestHooks* test_hooks_; |
+ |
+ void ScheduledActionSendBeginMainFrame(const BeginFrameArgs& args) override { |
+ test_hooks_->ScheduledActionWillSendBeginMainFrame(); |
+ SingleThreadProxy::ScheduledActionSendBeginMainFrame(args); |
+ test_hooks_->ScheduledActionSendBeginMainFrame(); |
+ } |
+ |
+ DrawResult ScheduledActionDrawAndSwapIfPossible() override { |
+ DrawResult result = |
+ SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible(); |
+ test_hooks_->ScheduledActionDrawAndSwapIfPossible(); |
+ return result; |
+ } |
+ |
+ void ScheduledActionCommit() override { |
+ SingleThreadProxy::ScheduledActionCommit(); |
+ test_hooks_->ScheduledActionCommit(); |
+ } |
+ |
+ void ScheduledActionBeginOutputSurfaceCreation() override { |
+ SingleThreadProxy::ScheduledActionBeginOutputSurfaceCreation(); |
+ test_hooks_->ScheduledActionBeginOutputSurfaceCreation(); |
+ } |
+ |
+ void ScheduledActionPrepareTiles() override { |
+ SingleThreadProxy::ScheduledActionPrepareTiles(); |
+ test_hooks_->ScheduledActionPrepareTiles(); |
+ } |
+ |
+ void ScheduledActionInvalidateOutputSurface() override { |
+ SingleThreadProxy::ScheduledActionInvalidateOutputSurface(); |
+ test_hooks_->ScheduledActionInvalidateOutputSurface(); |
+ } |
+ |
+ void SendBeginMainFrameNotExpectedSoon() override { |
+ SingleThreadProxy::SendBeginMainFrameNotExpectedSoon(); |
+ test_hooks_->SendBeginMainFrameNotExpectedSoon(); |
+ } |
+ |
SingleThreadProxyForTest( |
TestHooks* test_hooks, |
LayerTreeHost* host, |
@@ -124,46 +408,6 @@ |
task_runner_provider, |
std::move(external_begin_frame_source)), |
test_hooks_(test_hooks) {} |
- |
- void ScheduledActionSendBeginMainFrame(const BeginFrameArgs& args) override { |
- test_hooks_->ScheduledActionWillSendBeginMainFrame(); |
- SingleThreadProxy::ScheduledActionSendBeginMainFrame(args); |
- test_hooks_->ScheduledActionSendBeginMainFrame(); |
- } |
- |
- DrawResult ScheduledActionDrawAndSwapIfPossible() override { |
- DrawResult result = |
- SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible(); |
- test_hooks_->ScheduledActionDrawAndSwapIfPossible(); |
- return result; |
- } |
- |
- void ScheduledActionCommit() override { |
- SingleThreadProxy::ScheduledActionCommit(); |
- test_hooks_->ScheduledActionCommit(); |
- } |
- |
- void ScheduledActionBeginOutputSurfaceCreation() override { |
- SingleThreadProxy::ScheduledActionBeginOutputSurfaceCreation(); |
- test_hooks_->ScheduledActionBeginOutputSurfaceCreation(); |
- } |
- |
- void ScheduledActionPrepareTiles() override { |
- SingleThreadProxy::ScheduledActionPrepareTiles(); |
- test_hooks_->ScheduledActionPrepareTiles(); |
- } |
- |
- void ScheduledActionInvalidateOutputSurface() override { |
- SingleThreadProxy::ScheduledActionInvalidateOutputSurface(); |
- test_hooks_->ScheduledActionInvalidateOutputSurface(); |
- } |
- |
- void SendBeginMainFrameNotExpectedSoon() override { |
- SingleThreadProxy::SendBeginMainFrameNotExpectedSoon(); |
- test_hooks_->SendBeginMainFrameNotExpectedSoon(); |
- } |
- |
- TestHooks* test_hooks_; |
}; |
// Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks. |
@@ -456,10 +700,9 @@ |
scoped_ptr<Proxy> proxy; |
if (mode == CompositorMode::Threaded) { |
DCHECK(impl_task_runner.get()); |
- scoped_ptr<ProxyMain> proxy_main = ProxyMainForTest::CreateThreaded( |
+ proxy = ThreadProxyForTest::Create( |
test_hooks, layer_tree_host.get(), task_runner_provider.get(), |
std::move(external_begin_frame_source)); |
- proxy = std::move(proxy_main); |
} else { |
proxy = SingleThreadProxyForTest::Create( |
test_hooks, layer_tree_host.get(), client, task_runner_provider.get(), |
@@ -918,21 +1161,4 @@ |
return layer_tree_host_.get(); |
} |
-ProxyMainForTest* LayerTreeTest::GetProxyMainForTest() const { |
- DCHECK(HasImplThread()); |
- return static_cast<ProxyMainForTest*>(proxy()); |
-} |
- |
-ProxyImplForTest* LayerTreeTest::GetProxyImplForTest() const { |
- DCHECK(HasImplThread()); |
- ThreadedChannel* threaded_channel = |
- static_cast<ThreadedChannel*>(GetProxyMainForTest()->channel_main()); |
- ProxyImpl* proxy_impl = threaded_channel->GetProxyImplForTesting(); |
- |
- // We check for null ProxyImpl since ProxyImpl exists in the ThreadedChannel |
- // only after it is initialized. |
- DCHECK(proxy_impl); |
- return static_cast<ProxyImplForTest*>(proxy_impl); |
-} |
- |
} // namespace cc |