summaryrefslogtreecommitdiffstats
path: root/cc/trees/layer_tree_host_unittest_proxy.cc
diff options
context:
space:
mode:
authorsimonhong@chromium.org <simonhong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-22 02:51:56 +0000
committersimonhong@chromium.org <simonhong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-22 02:51:56 +0000
commit6f0fdcbf68437182793bebc39f2655a171f610df (patch)
treec598f3bbcbf855fbc0932fa118bf5168318482b5 /cc/trees/layer_tree_host_unittest_proxy.cc
parent46615311db334a3453bc0f50361816c6baa890ef (diff)
downloadchromium_src-6f0fdcbf68437182793bebc39f2655a171f610df.zip
chromium_src-6f0fdcbf68437182793bebc39f2655a171f610df.tar.gz
chromium_src-6f0fdcbf68437182793bebc39f2655a171f610df.tar.bz2
cc: Add testing stubs for proxy test
This is initial patch for proxy unittests. New testing stubs are added to LayerTreeTest. R=brianderson@chromium.org, danakj@chomium.org BUG=356832 TEST=*ProxyTest* Review URL: https://codereview.chromium.org/242783003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272051 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/trees/layer_tree_host_unittest_proxy.cc')
-rw-r--r--cc/trees/layer_tree_host_unittest_proxy.cc135
1 files changed, 135 insertions, 0 deletions
diff --git a/cc/trees/layer_tree_host_unittest_proxy.cc b/cc/trees/layer_tree_host_unittest_proxy.cc
new file mode 100644
index 0000000..4f79311
--- /dev/null
+++ b/cc/trees/layer_tree_host_unittest_proxy.cc
@@ -0,0 +1,135 @@
+// Copyright 2014 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.
+
+#include "base/basictypes.h"
+#include "base/compiler_specific.h"
+#include "cc/test/layer_tree_test.h"
+#include "cc/trees/thread_proxy.h"
+
+#define THREAD_PROXY_NO_IMPL_TEST_F(TEST_FIXTURE_NAME) \
+ TEST_F(TEST_FIXTURE_NAME, Run_MainThreadPaint) { \
+ Run(true, false); \
+ }
+
+#define THREAD_PROXY_TEST_F(TEST_FIXTURE_NAME) \
+ THREAD_PROXY_NO_IMPL_TEST_F(TEST_FIXTURE_NAME); \
+ TEST_F(TEST_FIXTURE_NAME, Run_ImplSidePaint) { \
+ Run(true, true); \
+ }
+
+// 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) \
+ THREAD_PROXY_TEST_F(TEST_FIXTURE_NAME);
+
+namespace cc {
+
+class ProxyTest : public LayerTreeTest {
+ protected:
+ ProxyTest() {}
+ virtual ~ProxyTest() {}
+
+ void Run(bool threaded, bool impl_side_painting) {
+ // We don't need to care about delegating mode.
+ bool delegating_renderer = true;
+
+ RunTest(threaded, delegating_renderer, impl_side_painting);
+ }
+
+ virtual void BeginTest() OVERRIDE {}
+ virtual void AfterTest() OVERRIDE {}
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ProxyTest);
+};
+
+class ProxyTestScheduledActionsBasic : public ProxyTest {
+ protected:
+ virtual void BeginTest() OVERRIDE {
+ proxy()->SetNeedsCommit();
+ }
+
+ virtual void ScheduledActionBeginOutputSurfaceCreation() OVERRIDE {
+ EXPECT_EQ(0, action_phase_++);
+ }
+
+ virtual void ScheduledActionSendBeginMainFrame() OVERRIDE {
+ EXPECT_EQ(1, action_phase_++);
+ }
+
+ virtual void ScheduledActionCommit() OVERRIDE {
+ EXPECT_EQ(2, action_phase_++);
+ }
+
+ virtual void ScheduledActionDrawAndSwapIfPossible() OVERRIDE {
+ EXPECT_EQ(3, action_phase_++);
+ EndTest();
+ }
+
+ virtual void AfterTest() OVERRIDE {
+ EXPECT_EQ(4, action_phase_);
+ }
+
+ ProxyTestScheduledActionsBasic() : action_phase_(0) {
+ }
+ virtual ~ProxyTestScheduledActionsBasic() {}
+
+ private:
+ int action_phase_;
+
+ DISALLOW_COPY_AND_ASSIGN(ProxyTestScheduledActionsBasic);
+};
+
+PROXY_TEST_SCHEDULED_ACTION(ProxyTestScheduledActionsBasic);
+
+class ThreadProxyTest : public ProxyTest {
+ protected:
+ ThreadProxyTest() {}
+ virtual ~ThreadProxyTest() {}
+
+ const ThreadProxy::MainThreadOnly& ThreadProxyMainOnly() const {
+ DCHECK(proxy());
+ DCHECK(proxy()->HasImplThread());
+ return static_cast<const ThreadProxy*>(proxy())->main();
+ }
+
+ const ThreadProxy::CompositorThreadOnly& ThreadProxyImplOnly() const {
+ DCHECK(proxy());
+ DCHECK(proxy()->HasImplThread());
+ return static_cast<const ThreadProxy*>(proxy())->impl();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ThreadProxyTest);
+};
+
+class ThreadProxyTestSetNeedsCommit : public ThreadProxyTest {
+ protected:
+ ThreadProxyTestSetNeedsCommit() {}
+ virtual ~ThreadProxyTestSetNeedsCommit() {}
+
+ virtual void BeginTest() OVERRIDE {
+ EXPECT_FALSE(ThreadProxyMainOnly().commit_requested);
+ EXPECT_FALSE(ThreadProxyMainOnly().commit_request_sent_to_impl_thread);
+
+ proxy()->SetNeedsCommit();
+
+ EXPECT_TRUE(ThreadProxyMainOnly().commit_requested);
+ EXPECT_TRUE(ThreadProxyMainOnly().commit_request_sent_to_impl_thread);
+ }
+
+ virtual void DidBeginMainFrame() OVERRIDE {
+ EXPECT_FALSE(ThreadProxyMainOnly().commit_requested);
+ EXPECT_FALSE(ThreadProxyMainOnly().commit_request_sent_to_impl_thread);
+
+ EndTest();
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsCommit);
+};
+
+THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsCommit);
+
+} // namespace cc