Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / cc / trees / layer_tree_host_unittest_proxy.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/basictypes.h"
6 #include "base/compiler_specific.h"
7 #include "cc/test/layer_tree_test.h"
8 #include "cc/trees/thread_proxy.h"
9
10 #define THREAD_PROXY_NO_IMPL_TEST_F(TEST_FIXTURE_NAME) \
11   TEST_F(TEST_FIXTURE_NAME, Run_MainThreadPaint) {     \
12     Run(true, false);                                  \
13   }
14
15 #define THREAD_PROXY_TEST_F(TEST_FIXTURE_NAME)    \
16   THREAD_PROXY_NO_IMPL_TEST_F(TEST_FIXTURE_NAME); \
17   TEST_F(TEST_FIXTURE_NAME, Run_ImplSidePaint) {  \
18     Run(true, true);                              \
19   }
20
21 // Do common tests for single thread proxy and thread proxy.
22 // TODO(simonhong): Add SINGLE_THREAD_PROXY_TEST_F
23 #define PROXY_TEST_SCHEDULED_ACTION(TEST_FIXTURE_NAME) \
24   THREAD_PROXY_TEST_F(TEST_FIXTURE_NAME);
25
26 namespace cc {
27
28 class ProxyTest : public LayerTreeTest {
29  protected:
30   ProxyTest() {}
31   virtual ~ProxyTest() {}
32
33   void Run(bool threaded, bool impl_side_painting) {
34     // We don't need to care about delegating mode.
35     bool delegating_renderer = true;
36
37     RunTest(threaded, delegating_renderer, impl_side_painting);
38   }
39
40   void BeginTest() override {}
41   void AfterTest() override {}
42
43  private:
44   DISALLOW_COPY_AND_ASSIGN(ProxyTest);
45 };
46
47 class ProxyTestScheduledActionsBasic : public ProxyTest {
48  protected:
49   void BeginTest() override { proxy()->SetNeedsCommit(); }
50
51   void ScheduledActionBeginOutputSurfaceCreation() override {
52     EXPECT_EQ(0, action_phase_++);
53   }
54
55   void ScheduledActionSendBeginMainFrame() override {
56     EXPECT_EQ(1, action_phase_++);
57   }
58
59   void ScheduledActionCommit() override { EXPECT_EQ(2, action_phase_++); }
60
61   void ScheduledActionDrawAndSwapIfPossible() override {
62     EXPECT_EQ(3, action_phase_++);
63     EndTest();
64   }
65
66   void AfterTest() override { EXPECT_EQ(4, action_phase_); }
67
68   ProxyTestScheduledActionsBasic() : action_phase_(0) {
69   }
70   virtual ~ProxyTestScheduledActionsBasic() {}
71
72  private:
73   int action_phase_;
74
75   DISALLOW_COPY_AND_ASSIGN(ProxyTestScheduledActionsBasic);
76 };
77
78 PROXY_TEST_SCHEDULED_ACTION(ProxyTestScheduledActionsBasic);
79
80 class ThreadProxyTest : public ProxyTest {
81  protected:
82   ThreadProxyTest() {}
83   virtual ~ThreadProxyTest() {}
84
85   const ThreadProxy::MainThreadOnly& ThreadProxyMainOnly() const {
86     DCHECK(proxy());
87     DCHECK(proxy()->HasImplThread());
88     return static_cast<const ThreadProxy*>(proxy())->main();
89   }
90
91   const ThreadProxy::CompositorThreadOnly& ThreadProxyImplOnly() const {
92     DCHECK(proxy());
93     DCHECK(proxy()->HasImplThread());
94     return static_cast<const ThreadProxy*>(proxy())->impl();
95   }
96
97  private:
98   DISALLOW_COPY_AND_ASSIGN(ThreadProxyTest);
99 };
100
101 class ThreadProxyTestSetNeedsCommit : public ThreadProxyTest {
102  protected:
103   ThreadProxyTestSetNeedsCommit() {}
104   virtual ~ThreadProxyTestSetNeedsCommit() {}
105
106   void BeginTest() override {
107     EXPECT_FALSE(ThreadProxyMainOnly().commit_requested);
108     EXPECT_FALSE(ThreadProxyMainOnly().commit_request_sent_to_impl_thread);
109
110     proxy()->SetNeedsCommit();
111
112     EXPECT_TRUE(ThreadProxyMainOnly().commit_requested);
113     EXPECT_TRUE(ThreadProxyMainOnly().commit_request_sent_to_impl_thread);
114   }
115
116   void DidBeginMainFrame() override {
117     EXPECT_FALSE(ThreadProxyMainOnly().commit_requested);
118     EXPECT_FALSE(ThreadProxyMainOnly().commit_request_sent_to_impl_thread);
119
120     EndTest();
121   }
122
123  private:
124   DISALLOW_COPY_AND_ASSIGN(ThreadProxyTestSetNeedsCommit);
125 };
126
127 THREAD_PROXY_TEST_F(ThreadProxyTestSetNeedsCommit);
128
129 }  // namespace cc