Chromium Code Reviews| Index: cc/test/layer_tree_test.cc |
| diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc |
| index 2a0762d39cccda553f015b318ba79ea8711e8bd5..eebf51466747dcb0250a3f79fc2c9a0cc1088991 100644 |
| --- a/cc/test/layer_tree_test.cc |
| +++ b/cc/test/layer_tree_test.cc |
| @@ -46,6 +46,41 @@ base::TimeDelta TestHooks::LowFrequencyAnimationInterval() const { |
| return base::TimeDelta::FromMilliseconds(16); |
| } |
| +// Adapts ThreadProxy for test. Injects test hooks for testing. |
| +class ThreadProxyForTest : public ThreadProxy { |
| + public: |
| + static scoped_ptr<Proxy> Create( |
| + TestHooks* test_hooks, |
| + LayerTreeHost* host, |
| + scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
| + return make_scoped_ptr( |
| + new ThreadProxyForTest(test_hooks, |
| + host, |
| + impl_task_runner)).PassAs<Proxy>(); |
| + } |
| + |
| + const ThreadProxy::MainThreadOnly& main() const { |
| + return ThreadProxy::main(); |
| + } |
| + |
| + const ThreadProxy::CompositorThreadOnly& impl() const { |
| + return ThreadProxy::impl(); |
| + } |
| + |
| + virtual ~ThreadProxyForTest() {} |
| + |
| + private: |
| + TestHooks* test_hooks_; |
| + |
| + ThreadProxyForTest( |
| + TestHooks* test_hooks, |
| + LayerTreeHost* host, |
| + scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) |
| + : ThreadProxy(host, impl_task_runner), |
| + test_hooks_(test_hooks) { |
| + } |
| +}; |
| + |
| // Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks. |
| class LayerTreeHostImplForTesting : public LayerTreeHostImpl { |
| public: |
| @@ -315,6 +350,12 @@ class LayerTreeHostForTesting : public LayerTreeHost { |
| virtual void DidDeferCommit() OVERRIDE { test_hooks_->DidDeferCommit(); } |
| + virtual void InitializeThreaded( |
| + scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) OVERRIDE { |
| + InitializeProxy( |
| + ThreadProxyForTest::Create(test_hooks_, this, impl_task_runner)); |
| + } |
| + |
| private: |
| LayerTreeHostForTesting(TestHooks* test_hooks, |
| LayerTreeHostClient* client, |
| @@ -662,6 +703,18 @@ void LayerTreeTest::RunTestWithImplSidePainting() { |
| RunTest(true, false, true); |
| } |
| +const ThreadProxy::MainThreadOnly& |
| +LayerTreeTest::ThreadProxyMainOnly() const { |
| + DCHECK(proxy() && proxy()->HasImplThread()); |
|
brianderson
2014/05/14 21:12:07
Please split DCHECK into two separate DCHECKs.
simonhong
2014/05/15 01:32:07
Done.
|
| + return static_cast<ThreadProxyForTest*>(proxy())->main(); |
| +} |
| + |
| +const ThreadProxy::CompositorThreadOnly& |
| +LayerTreeTest::ThreadProxyImplOnly() const { |
| + DCHECK(proxy() && proxy()->HasImplThread()); |
|
brianderson
2014/05/14 21:12:07
Please split DCHECK into two separate DCHECKs.
simonhong
2014/05/15 01:32:07
Done.
|
| + return static_cast<ThreadProxyForTest*>(proxy())->impl(); |
| +} |
| + |
| scoped_ptr<OutputSurface> LayerTreeTest::CreateOutputSurface(bool fallback) { |
| scoped_ptr<FakeOutputSurface> output_surface = |
| CreateFakeOutputSurface(fallback); |