| Index: cc/test/layer_tree_test.cc
|
| diff --git a/cc/test/layer_tree_test.cc b/cc/test/layer_tree_test.cc
|
| index a40a8c72bf6b8140c638207e3b3d00d80b77e4dd..d02b5104b29bc3d52323c43645d1808142e6b849 100644
|
| --- a/cc/test/layer_tree_test.cc
|
| +++ b/cc/test/layer_tree_test.cc
|
| @@ -79,13 +79,14 @@ class ThreadProxyForTest : public ThreadProxy {
|
|
|
| ~ThreadProxyForTest() override {}
|
|
|
| - void test() {
|
| - test_hooks_->Layout();
|
| - }
|
| -
|
| private:
|
| TestHooks* test_hooks_;
|
|
|
| + void WillBeginImplFrame(const BeginFrameArgs& args) override {
|
| + ThreadProxy::WillBeginImplFrame(args);
|
| + test_hooks_->WillBeginImplFrame(args);
|
| + }
|
| +
|
| void ScheduledActionSendBeginMainFrame() override {
|
| test_hooks_->ScheduledActionWillSendBeginMainFrame();
|
| ThreadProxy::ScheduledActionSendBeginMainFrame();
|
| @@ -130,6 +131,74 @@ class ThreadProxyForTest : public ThreadProxy {
|
| test_hooks_(test_hooks) {}
|
| };
|
|
|
| +// Adapts ThreadProxy for test. Injects test hooks for testing.
|
| +class SingleThreadProxyForTest : public SingleThreadProxy {
|
| + public:
|
| + static scoped_ptr<Proxy> Create(
|
| + TestHooks* test_hooks,
|
| + LayerTreeHost* host,
|
| + LayerTreeHostSingleThreadClient* client,
|
| + scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| + scoped_ptr<BeginFrameSource> external_begin_frame_source) {
|
| + return make_scoped_ptr(new SingleThreadProxyForTest(
|
| + test_hooks, host, client, main_task_runner,
|
| + external_begin_frame_source.Pass()));
|
| + }
|
| +
|
| + ~SingleThreadProxyForTest() override {}
|
| +
|
| + private:
|
| + TestHooks* test_hooks_;
|
| +
|
| + void WillBeginImplFrame(const BeginFrameArgs& args) override {
|
| + SingleThreadProxy::WillBeginImplFrame(args);
|
| + test_hooks_->WillBeginImplFrame(args);
|
| + }
|
| +
|
| + void ScheduledActionSendBeginMainFrame() override {
|
| + test_hooks_->ScheduledActionWillSendBeginMainFrame();
|
| + SingleThreadProxy::ScheduledActionSendBeginMainFrame();
|
| + test_hooks_->ScheduledActionSendBeginMainFrame();
|
| + }
|
| +
|
| + DrawResult ScheduledActionDrawAndSwapIfPossible() override {
|
| + DrawResult result =
|
| + SingleThreadProxy::ScheduledActionDrawAndSwapIfPossible();
|
| + test_hooks_->ScheduledActionDrawAndSwapIfPossible();
|
| + return result;
|
| + }
|
| +
|
| + void ScheduledActionAnimate() override {
|
| + SingleThreadProxy::ScheduledActionAnimate();
|
| + test_hooks_->ScheduledActionAnimate();
|
| + }
|
| +
|
| + void ScheduledActionCommit() override {
|
| + SingleThreadProxy::ScheduledActionCommit();
|
| + test_hooks_->ScheduledActionCommit();
|
| + }
|
| +
|
| + void ScheduledActionBeginOutputSurfaceCreation() override {
|
| + SingleThreadProxy::ScheduledActionBeginOutputSurfaceCreation();
|
| + test_hooks_->ScheduledActionBeginOutputSurfaceCreation();
|
| + }
|
| +
|
| + void ScheduledActionPrepareTiles() override {
|
| + SingleThreadProxy::ScheduledActionPrepareTiles();
|
| + test_hooks_->ScheduledActionPrepareTiles();
|
| + }
|
| +
|
| + SingleThreadProxyForTest(
|
| + TestHooks* test_hooks,
|
| + LayerTreeHost* host,
|
| + LayerTreeHostSingleThreadClient* client,
|
| + scoped_refptr<base::SingleThreadTaskRunner> main_task_runner,
|
| + scoped_ptr<BeginFrameSource> external_begin_frame_source)
|
| + : SingleThreadProxy(host, client, main_task_runner,
|
| + external_begin_frame_source.Pass()),
|
| + test_hooks_(test_hooks) {}
|
| +};
|
| +
|
| // Adapts LayerTreeHostImpl for test. Runs real code, then invokes test hooks.
|
| class LayerTreeHostImplForTesting : public LayerTreeHostImpl {
|
| public:
|
| @@ -402,11 +471,13 @@ class LayerTreeHostForTesting : public LayerTreeHost {
|
| impl_task_runner,
|
| external_begin_frame_source.Pass()));
|
| } else {
|
| - layer_tree_host->InitializeForTesting(SingleThreadProxy::Create(
|
| - layer_tree_host.get(),
|
| - client,
|
| - main_task_runner,
|
| - external_begin_frame_source.Pass()));
|
| + layer_tree_host->InitializeForTesting(
|
| + SingleThreadProxyForTest::Create(
|
| + test_hooks,
|
| + layer_tree_host.get(),
|
| + client,
|
| + main_task_runner,
|
| + external_begin_frame_source.Pass()));
|
| }
|
| return layer_tree_host.Pass();
|
| }
|
| @@ -431,8 +502,6 @@ class LayerTreeHostForTesting : public LayerTreeHost {
|
|
|
| void set_test_started(bool started) { test_started_ = started; }
|
|
|
| - void DidDeferCommit() override { test_hooks_->DidDeferCommit(); }
|
| -
|
| private:
|
| LayerTreeHostForTesting(TestHooks* test_hooks,
|
| LayerTreeHostClient* client,
|
| @@ -524,6 +593,13 @@ void LayerTreeTest::PostAddLongAnimationToMainThread(
|
| 1.0));
|
| }
|
|
|
| +void LayerTreeTest::PostSetDeferCommitsToMainThread(bool defer_commits) {
|
| + main_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&LayerTreeTest::DispatchSetDeferCommits,
|
| + main_thread_weak_ptr_, defer_commits));
|
| +}
|
| +
|
| void LayerTreeTest::PostSetNeedsCommitToMainThread() {
|
| main_task_runner_->PostTask(FROM_HERE,
|
| base::Bind(&LayerTreeTest::DispatchSetNeedsCommit,
|
| @@ -655,6 +731,13 @@ void LayerTreeTest::DispatchAddAnimation(Layer* layer_to_receive_animation,
|
| }
|
| }
|
|
|
| +void LayerTreeTest::DispatchSetDeferCommits(bool defer_commits) {
|
| + DCHECK(!proxy() || proxy()->IsMainThread());
|
| +
|
| + if (layer_tree_host_)
|
| + layer_tree_host_->SetDeferCommits(defer_commits);
|
| +}
|
| +
|
| void LayerTreeTest::DispatchSetNeedsCommit() {
|
| DCHECK(!proxy() || proxy()->IsMainThread());
|
|
|
|
|