Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: cc/trees/threaded_channel_unittest.cc

Issue 2158973002: cc: Clean up LayerTreeTest and TestHooks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: proxy-impls: test Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/threaded_channel.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 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 "cc/trees/threaded_channel.h"
6
7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h"
9 #include "cc/animation/animation_events.h"
10 #include "cc/test/layer_tree_test.h"
11 #include "cc/trees/single_thread_proxy.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace cc {
15
16 // The ThreadedChannel tests are run only for threaded and direct mode.
17 class ThreadedChannelTest : public LayerTreeTest {
18 protected:
19 ThreadedChannelTest() : calls_received_(0) {}
20
21 ~ThreadedChannelTest() override {}
22
23 void BeginTest() override {
24 DCHECK(HasImplThread());
25 BeginChannelTest();
26 };
27 virtual void BeginChannelTest() {}
28
29 void PostOnImplThread() {
30 ImplThreadTaskRunner()->PostTask(
31 FROM_HERE, base::Bind(&ThreadedChannelTest::StartTestOnImplThread,
32 base::Unretained(this)));
33 }
34
35 virtual void StartTestOnImplThread() {
36 DCHECK(task_runner_provider()->IsImplThread());
37 }
38
39 void AfterTest() override {}
40
41 int calls_received_;
42
43 private:
44 DISALLOW_COPY_AND_ASSIGN(ThreadedChannelTest);
45 };
46
47 class ThreadedChannelTestInitializationAndShutdown
48 : public ThreadedChannelTest {
49 void SetVisibleOnImpl(bool visible) override { calls_received_++; }
50
51 void ReceivedRequestNewOutputSurface() override { calls_received_++; }
52
53 void InitializeOutputSurfaceOnImpl(OutputSurface* output_surface) override {
54 calls_received_++;
55 }
56
57 void ReceivedSetRendererCapabilitiesMainCopy(
58 const RendererCapabilities& capabilities) override {
59 calls_received_++;
60 }
61
62 void ReceivedDidInitializeOutputSurface(
63 bool success,
64 const RendererCapabilities& capabilities) override {
65 calls_received_++;
66 EndTest();
67 }
68
69 void FinishGLOnImpl() override { calls_received_++; }
70
71 void AfterTest() override { EXPECT_EQ(6, calls_received_); }
72 };
73
74 MULTI_THREAD_DIRECT_RENDERER_TEST_F(
75 ThreadedChannelTestInitializationAndShutdown);
76
77 class ThreadedChannelTestTopControlsState : public ThreadedChannelTest {
78 void BeginChannelTest() override {
79 proxy()->UpdateTopControlsState(TopControlsState::BOTH,
80 TopControlsState::BOTH, true);
81 }
82
83 void UpdateTopControlsStateOnImpl(TopControlsState constraints,
84 TopControlsState current,
85 bool animate) override {
86 calls_received_++;
87 EndTest();
88 }
89
90 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
91 };
92
93 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestTopControlsState);
94
95 class ThreadedChannelTestMainThreadStoppedFlinging
96 : public ThreadedChannelTest {
97 void BeginChannelTest() override { proxy()->MainThreadHasStoppedFlinging(); }
98
99 void MainThreadHasStoppedFlingingOnImpl() override {
100 calls_received_++;
101 EndTest();
102 }
103
104 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
105 };
106
107 MULTI_THREAD_DIRECT_RENDERER_TEST_F(
108 ThreadedChannelTestMainThreadStoppedFlinging);
109
110 class ThreadedChannelTestDeferCommits : public ThreadedChannelTest {
111 void BeginChannelTest() override { DispatchSetDeferCommits(true); }
112
113 void SetDeferCommitsOnImpl(bool defer_commits) override {
114 ASSERT_TRUE(defer_commits);
115 calls_received_++;
116 EndTest();
117 }
118
119 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
120 };
121
122 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestDeferCommits);
123
124 class ThreadedChannelTestInputThrottled : public ThreadedChannelTest {
125 void BeginChannelTest() override {
126 proxy()->NotifyInputThrottledUntilCommit();
127 }
128
129 void SetInputThrottledUntilCommitOnImpl(bool is_throttled) override {
130 calls_received_++;
131 EndTest();
132 }
133
134 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
135 };
136
137 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestInputThrottled);
138
139 class ThreadedChannelTestNeedsRedraw : public ThreadedChannelTest {
140 void BeginChannelTest() override { DispatchSetNeedsRedraw(); }
141
142 void SetNeedsRedrawOnImpl(const gfx::Rect& damage_rect) override {
143 calls_received_++;
144 EndTest();
145 }
146
147 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
148 };
149
150 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestNeedsRedraw);
151
152 class ThreadedChannelTestFinishAllRendering : public ThreadedChannelTest {
153 void BeginChannelTest() override { proxy()->FinishAllRendering(); }
154
155 void FinishAllRenderingOnImpl() override {
156 calls_received_++;
157 EndTest();
158 }
159
160 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
161 };
162
163 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestFinishAllRendering);
164
165 class ThreadedChannelTestReleaseOutputSurface : public ThreadedChannelTest {
166 void BeginChannelTest() override { proxy()->ReleaseOutputSurface(); }
167
168 void ReleaseOutputSurfaceOnImpl() override {
169 calls_received_++;
170 EndTest();
171 }
172
173 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
174 };
175
176 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestReleaseOutputSurface);
177
178 class ThreadedChannelTestCommit : public ThreadedChannelTest {
179 void BeginChannelTest() override { PostSetNeedsCommitToMainThread(); }
180
181 void SetNeedsCommitOnImpl() override { EXPECT_EQ(0, calls_received_++); }
182
183 void ReceivedBeginMainFrame() override { EXPECT_EQ(1, calls_received_++); }
184
185 void StartCommitOnImpl() override { EXPECT_EQ(2, calls_received_++); }
186
187 void ReceivedDidCommitAndDrawFrame() override {
188 EXPECT_EQ(3, calls_received_++);
189 }
190
191 void ReceivedDidCompleteSwapBuffers() override {
192 EXPECT_EQ(4, calls_received_++);
193 EndTest();
194 }
195
196 void AfterTest() override { EXPECT_EQ(5, calls_received_); }
197 };
198
199 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestCommit);
200
201 class ThreadedChannelTestBeginMainFrameAborted : public ThreadedChannelTest {
202 void BeginChannelTest() override { PostSetNeedsCommitToMainThread(); }
203
204 void ScheduledActionWillSendBeginMainFrame() override {
205 // Set visible to false to abort the commit.
206 MainThreadTaskRunner()->PostTask(
207 FROM_HERE,
208 base::Bind(&ThreadedChannelTestBeginMainFrameAborted::SetVisibleFalse,
209 base::Unretained(this)));
210 }
211
212 void SetVisibleFalse() { layer_tree_host()->SetVisible(false); }
213
214 void BeginMainFrameAbortedOnImpl(CommitEarlyOutReason reason) override {
215 calls_received_++;
216 EndTest();
217 }
218
219 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
220 };
221
222 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestBeginMainFrameAborted);
223
224 class ThreadedChannelTestBeginMainFrameNotExpectedSoon
225 : public ThreadedChannelTest {
226 void BeginChannelTest() override { PostOnImplThread(); }
227
228 void StartTestOnImplThread() override {
229 GetProxyImplForTest()->SendBeginMainFrameNotExpectedSoon();
230 }
231
232 void ReceivedBeginMainFrameNotExpectedSoon() override {
233 calls_received_++;
234 EndTest();
235 }
236
237 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
238 };
239
240 MULTI_THREAD_DIRECT_RENDERER_TEST_F(
241 ThreadedChannelTestBeginMainFrameNotExpectedSoon);
242
243 class ThreadedChannelTestSetAnimationEvents : public ThreadedChannelTest {
244 void BeginChannelTest() override { PostOnImplThread(); }
245
246 void StartTestOnImplThread() override {
247 std::unique_ptr<AnimationEvents> events(
248 base::WrapUnique(new AnimationEvents));
249 GetProxyImplForTest()->PostAnimationEventsToMainThreadOnImplThread(
250 std::move(events));
251 }
252
253 void ReceivedSetAnimationEvents() override {
254 calls_received_++;
255 EndTest();
256 }
257
258 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
259 };
260
261 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestSetAnimationEvents);
262
263 class ThreadedChannelTestLoseOutputSurface : public ThreadedChannelTest {
264 void BeginChannelTest() override { PostOnImplThread(); }
265
266 void StartTestOnImplThread() override {
267 GetProxyImplForTest()->DidLoseOutputSurfaceOnImplThread();
268 }
269
270 void ReceivedDidLoseOutputSurface() override {
271 calls_received_++;
272 EndTest();
273 }
274
275 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
276 };
277
278 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestLoseOutputSurface);
279
280 class ThreadedChannelTestPageScaleAnimation : public ThreadedChannelTest {
281 void BeginChannelTest() override { PostOnImplThread(); }
282
283 void StartTestOnImplThread() override {
284 GetProxyImplForTest()->DidCompletePageScaleAnimationOnImplThread();
285 }
286
287 void ReceivedDidCompletePageScaleAnimation() override {
288 calls_received_++;
289 EndTest();
290 }
291
292 void AfterTest() override { EXPECT_EQ(1, calls_received_); }
293 };
294
295 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestPageScaleAnimation);
296
297 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/threaded_channel.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698