| Index: cc/trees/layer_tree_host_unittest_proxy.cc
|
| diff --git a/cc/trees/layer_tree_host_unittest_proxy.cc b/cc/trees/layer_tree_host_unittest_proxy.cc
|
| index e00b0854adc3f399479447674052e2c131258d13..293c86409055e2e8989b7d245b1f5450ec96865d 100644
|
| --- a/cc/trees/layer_tree_host_unittest_proxy.cc
|
| +++ b/cc/trees/layer_tree_host_unittest_proxy.cc
|
| @@ -7,16 +7,15 @@
|
| #include "cc/test/fake_content_layer_client.h"
|
| #include "cc/test/fake_picture_layer.h"
|
| #include "cc/test/layer_tree_test.h"
|
| -#include "cc/trees/proxy_impl.h"
|
| -#include "cc/trees/proxy_main.h"
|
| -
|
| -#define PROXY_MAIN_THREADED_TEST_F(TEST_FIXTURE_NAME) \
|
| +#include "cc/trees/thread_proxy.h"
|
| +
|
| +#define THREAD_PROXY_TEST_F(TEST_FIXTURE_NAME) \
|
| TEST_F(TEST_FIXTURE_NAME, MultiThread) { Run(true); }
|
|
|
| -// Do common tests for single thread proxy and proxy main in threaded mode.
|
| +// Do common tests for single thread proxy and thread proxy.
|
| // TODO(simonhong): Add SINGLE_THREAD_PROXY_TEST_F
|
| #define PROXY_TEST_SCHEDULED_ACTION(TEST_FIXTURE_NAME) \
|
| - PROXY_MAIN_THREADED_TEST_F(TEST_FIXTURE_NAME);
|
| + THREAD_PROXY_TEST_F(TEST_FIXTURE_NAME);
|
|
|
| namespace cc {
|
|
|
| @@ -74,12 +73,12 @@
|
|
|
| PROXY_TEST_SCHEDULED_ACTION(ProxyTestScheduledActionsBasic);
|
|
|
| -class ProxyMainThreaded : public ProxyTest {
|
| - protected:
|
| - ProxyMainThreaded()
|
| +class ThreadProxyTest : public ProxyTest {
|
| + protected:
|
| + ThreadProxyTest()
|
| : update_check_layer_(
|
| FakePictureLayer::Create(layer_settings(), &client_)) {}
|
| - ~ProxyMainThreaded() override {}
|
| + ~ThreadProxyTest() override {}
|
|
|
| void SetupTree() override {
|
| layer_tree_host()->SetRootLayer(update_check_layer_);
|
| @@ -87,69 +86,83 @@
|
| client_.set_bounds(update_check_layer_->bounds());
|
| }
|
|
|
| + const ThreadProxy::MainThreadOnly& ThreadProxyMainOnly() const {
|
| + DCHECK(task_runner_provider());
|
| + DCHECK(task_runner_provider()->HasImplThread());
|
| + DCHECK(proxy());
|
| + return static_cast<const ThreadProxy*>(proxy())->main();
|
| + }
|
| +
|
| + const ThreadProxy::CompositorThreadOnly& ThreadProxyImplOnly() const {
|
| + DCHECK(task_runner_provider());
|
| + DCHECK(task_runner_provider()->HasImplThread());
|
| + DCHECK(proxy());
|
| + return static_cast<const ThreadProxy*>(proxy())->impl();
|
| + }
|
| +
|
| protected:
|
| FakeContentLayerClient client_;
|
| scoped_refptr<FakePictureLayer> update_check_layer_;
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreaded);
|
| -};
|
| -
|
| -class ProxyMainThreadedSetNeedsCommit : public ProxyMainThreaded {
|
| - protected:
|
| - ProxyMainThreadedSetNeedsCommit() {}
|
| - ~ProxyMainThreadedSetNeedsCommit() override {}
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTest);
|
| +};
|
| +
|
| +class ThreadProxyTestSetNeedsCommit : public ThreadProxyTest {
|
| + protected:
|
| + ThreadProxyTestSetNeedsCommit() {}
|
| + ~ThreadProxyTestSetNeedsCommit() override {}
|
|
|
| void BeginTest() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
|
|
| proxy()->SetNeedsCommit();
|
|
|
| - EXPECT_EQ(ProxyMain::COMMIT_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - }
|
| -
|
| - void DidBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::COMMIT_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + }
|
| +
|
| + void DidBeginMainFrame() override {
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| }
|
|
|
| void DidCommit() override {
|
| EXPECT_EQ(1, update_check_layer_->update_count());
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| - EndTest();
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreadedSetNeedsCommit);
|
| -};
|
| -
|
| -PROXY_MAIN_THREADED_TEST_F(ProxyMainThreadedSetNeedsCommit);
|
| -
|
| -class ProxyMainThreadedSetNeedsAnimate : public ProxyMainThreaded {
|
| - protected:
|
| - ProxyMainThreadedSetNeedsAnimate() {}
|
| - ~ProxyMainThreadedSetNeedsAnimate() override {}
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| + EndTest();
|
| + }
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsCommit);
|
| +};
|
| +
|
| +THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsCommit);
|
| +
|
| +class ThreadProxyTestSetNeedsAnimate : public ThreadProxyTest {
|
| + protected:
|
| + ThreadProxyTestSetNeedsAnimate() {}
|
| + ~ThreadProxyTestSetNeedsAnimate() override {}
|
|
|
| void BeginTest() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
|
|
| proxy()->SetNeedsAnimate();
|
|
|
| - EXPECT_EQ(ProxyMain::ANIMATE_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - }
|
| -
|
| - void DidBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::ANIMATE_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + }
|
| +
|
| + void DidBeginMainFrame() override {
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| }
|
|
|
| void DidCommit() override {
|
| @@ -158,31 +171,31 @@
|
| }
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreadedSetNeedsAnimate);
|
| -};
|
| -
|
| -PROXY_MAIN_THREADED_TEST_F(ProxyMainThreadedSetNeedsAnimate);
|
| -
|
| -class ProxyMainThreadedSetNeedsUpdateLayers : public ProxyMainThreaded {
|
| - protected:
|
| - ProxyMainThreadedSetNeedsUpdateLayers() {}
|
| - ~ProxyMainThreadedSetNeedsUpdateLayers() override {}
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsAnimate);
|
| +};
|
| +
|
| +THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsAnimate);
|
| +
|
| +class ThreadProxyTestSetNeedsUpdateLayers : public ThreadProxyTest {
|
| + protected:
|
| + ThreadProxyTestSetNeedsUpdateLayers() {}
|
| + ~ThreadProxyTestSetNeedsUpdateLayers() override {}
|
|
|
| void BeginTest() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
|
|
| proxy()->SetNeedsUpdateLayers();
|
|
|
| - EXPECT_EQ(ProxyMain::UPDATE_LAYERS_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - }
|
| -
|
| - void DidBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::UPDATE_LAYERS_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + }
|
| +
|
| + void DidBeginMainFrame() override {
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| }
|
|
|
| void DidCommit() override {
|
| @@ -191,40 +204,40 @@
|
| }
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreadedSetNeedsUpdateLayers);
|
| -};
|
| -
|
| -PROXY_MAIN_THREADED_TEST_F(ProxyMainThreadedSetNeedsUpdateLayers);
|
| -
|
| -class ProxyMainThreadedSetNeedsUpdateLayersWhileAnimating
|
| - : public ProxyMainThreaded {
|
| - protected:
|
| - ProxyMainThreadedSetNeedsUpdateLayersWhileAnimating() {}
|
| - ~ProxyMainThreadedSetNeedsUpdateLayersWhileAnimating() override {}
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsUpdateLayers);
|
| +};
|
| +
|
| +THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsUpdateLayers);
|
| +
|
| +class ThreadProxyTestSetNeedsUpdateLayersWhileAnimating
|
| + : public ThreadProxyTest {
|
| + protected:
|
| + ThreadProxyTestSetNeedsUpdateLayersWhileAnimating() {}
|
| + ~ThreadProxyTestSetNeedsUpdateLayersWhileAnimating() override {}
|
|
|
| void BeginTest() override { proxy()->SetNeedsAnimate(); }
|
|
|
| void WillBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::ANIMATE_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::ANIMATE_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->final_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::ANIMATE_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::ANIMATE_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().final_pipeline_stage);
|
|
|
| proxy()->SetNeedsUpdateLayers();
|
|
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::UPDATE_LAYERS_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->final_pipeline_stage());
|
| - }
|
| -
|
| - void DidBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::UPDATE_LAYERS_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().final_pipeline_stage);
|
| + }
|
| +
|
| + void DidBeginMainFrame() override {
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| }
|
|
|
| void DidCommit() override {
|
| @@ -233,39 +246,39 @@
|
| }
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreadedSetNeedsUpdateLayersWhileAnimating);
|
| -};
|
| -
|
| -PROXY_MAIN_THREADED_TEST_F(ProxyMainThreadedSetNeedsUpdateLayersWhileAnimating);
|
| -
|
| -class ProxyMainThreadedSetNeedsCommitWhileAnimating : public ProxyMainThreaded {
|
| - protected:
|
| - ProxyMainThreadedSetNeedsCommitWhileAnimating() {}
|
| - ~ProxyMainThreadedSetNeedsCommitWhileAnimating() override {}
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsUpdateLayersWhileAnimating);
|
| +};
|
| +
|
| +THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsUpdateLayersWhileAnimating);
|
| +
|
| +class ThreadProxyTestSetNeedsCommitWhileAnimating : public ThreadProxyTest {
|
| + protected:
|
| + ThreadProxyTestSetNeedsCommitWhileAnimating() {}
|
| + ~ThreadProxyTestSetNeedsCommitWhileAnimating() override {}
|
|
|
| void BeginTest() override { proxy()->SetNeedsAnimate(); }
|
|
|
| void WillBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::ANIMATE_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::ANIMATE_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->final_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::ANIMATE_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::ANIMATE_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().final_pipeline_stage);
|
|
|
| proxy()->SetNeedsCommit();
|
|
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::COMMIT_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->final_pipeline_stage());
|
| - }
|
| -
|
| - void DidBeginMainFrame() override {
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->max_requested_pipeline_stage());
|
| - EXPECT_EQ(ProxyMain::NO_PIPELINE_STAGE,
|
| - GetProxyMainForTest()->current_pipeline_stage());
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::COMMIT_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().final_pipeline_stage);
|
| + }
|
| +
|
| + void DidBeginMainFrame() override {
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().max_requested_pipeline_stage);
|
| + EXPECT_EQ(ThreadProxy::NO_PIPELINE_STAGE,
|
| + ThreadProxyMainOnly().current_pipeline_stage);
|
| }
|
|
|
| void DidCommit() override {
|
| @@ -274,15 +287,15 @@
|
| }
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreadedSetNeedsCommitWhileAnimating);
|
| -};
|
| -
|
| -PROXY_MAIN_THREADED_TEST_F(ProxyMainThreadedSetNeedsCommitWhileAnimating);
|
| -
|
| -class ProxyMainThreadedCommitWaitsForActivation : public ProxyMainThreaded {
|
| - protected:
|
| - ProxyMainThreadedCommitWaitsForActivation() : commits_completed_(0) {}
|
| - ~ProxyMainThreadedCommitWaitsForActivation() override {}
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsCommitWhileAnimating);
|
| +};
|
| +
|
| +THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsCommitWhileAnimating);
|
| +
|
| +class ThreadProxyTestCommitWaitsForActivation : public ThreadProxyTest {
|
| + protected:
|
| + ThreadProxyTestCommitWaitsForActivation() : commits_completed_(0) {}
|
| + ~ThreadProxyTestCommitWaitsForActivation() override {}
|
|
|
| void BeginTest() override { proxy()->SetNeedsCommit(); }
|
|
|
| @@ -291,25 +304,25 @@
|
| case 0:
|
| // The first commit does not wait for activation. Verify that the
|
| // completion event is cleared.
|
| - EXPECT_FALSE(GetProxyImplForTest()->HasCommitCompletionEvent());
|
| - EXPECT_FALSE(GetProxyImplForTest()->GetNextCommitWaitsForActivation());
|
| + EXPECT_FALSE(ThreadProxyImplOnly().commit_completion_event);
|
| + EXPECT_FALSE(ThreadProxyImplOnly().next_commit_waits_for_activation);
|
| break;
|
| case 1:
|
| // The second commit should be held until activation.
|
| - EXPECT_TRUE(GetProxyImplForTest()->HasCommitCompletionEvent());
|
| - EXPECT_TRUE(GetProxyImplForTest()->GetNextCommitWaitsForActivation());
|
| + EXPECT_TRUE(ThreadProxyImplOnly().commit_completion_event);
|
| + EXPECT_TRUE(ThreadProxyImplOnly().next_commit_waits_for_activation);
|
| break;
|
| case 2:
|
| // The third commit should not wait for activation.
|
| - EXPECT_FALSE(GetProxyImplForTest()->HasCommitCompletionEvent());
|
| - EXPECT_FALSE(GetProxyImplForTest()->GetNextCommitWaitsForActivation());
|
| + EXPECT_FALSE(ThreadProxyImplOnly().commit_completion_event);
|
| + EXPECT_FALSE(ThreadProxyImplOnly().next_commit_waits_for_activation);
|
| }
|
| }
|
|
|
| void DidActivateSyncTree() override {
|
| // The next_commit_waits_for_activation should have been cleared after the
|
| // sync tree is activated.
|
| - EXPECT_FALSE(GetProxyImplForTest()->GetNextCommitWaitsForActivation());
|
| + EXPECT_FALSE(ThreadProxyImplOnly().next_commit_waits_for_activation);
|
| }
|
|
|
| void DidCommit() override {
|
| @@ -336,9 +349,9 @@
|
| private:
|
| int commits_completed_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyMainThreadedCommitWaitsForActivation);
|
| -};
|
| -
|
| -PROXY_MAIN_THREADED_TEST_F(ProxyMainThreadedCommitWaitsForActivation);
|
| + DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestCommitWaitsForActivation);
|
| +};
|
| +
|
| +THREAD_PROXY_TEST_F(ThreadProxyTestCommitWaitsForActivation);
|
|
|
| } // namespace cc
|
|
|