diff options
author | simonhong@chromium.org <simonhong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 02:51:56 +0000 |
---|---|---|
committer | simonhong@chromium.org <simonhong@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-22 02:51:56 +0000 |
commit | 6f0fdcbf68437182793bebc39f2655a171f610df (patch) | |
tree | c598f3bbcbf855fbc0932fa118bf5168318482b5 /cc/trees/layer_tree_host_unittest_proxy.cc | |
parent | 46615311db334a3453bc0f50361816c6baa890ef (diff) | |
download | chromium_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.cc | 135 |
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 |