OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/threaded_channel.h" | 5 #include "cc/trees/threaded_channel.h" |
6 | 6 |
7 #include "cc/test/layer_tree_test.h" | 7 #include "cc/test/layer_tree_test.h" |
8 #include "cc/trees/single_thread_proxy.h" | 8 #include "cc/trees/single_thread_proxy.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 | 10 |
11 namespace cc { | 11 namespace cc { |
12 | 12 |
13 // The ThreadedChannel tests are run only for threaded and direct mode. | 13 // The ThreadedChannel tests are run only for threaded and direct mode. |
14 class ThreadedChannelTest : public LayerTreeTest { | 14 class ThreadedChannelTest : public LayerTreeTest { |
15 protected: | 15 protected: |
16 ThreadedChannelTest() : calls_received_(0) {} | 16 ThreadedChannelTest() : thread_proxy_(nullptr), calls_received_(0) {} |
17 | 17 |
18 ~ThreadedChannelTest() override {} | 18 ~ThreadedChannelTest() override {} |
19 | 19 |
20 void BeginTest() override { | 20 void BeginTest() override { |
21 DCHECK(HasImplThread()); | 21 DCHECK(HasImplThread()); |
| 22 thread_proxy_ = static_cast<ThreadProxy*>(proxy()); |
22 BeginChannelTest(); | 23 BeginChannelTest(); |
23 }; | 24 }; |
24 virtual void BeginChannelTest() {} | 25 virtual void BeginChannelTest() {} |
25 | 26 |
26 void PostOnImplThread() { | 27 void PostOnImplThread() { |
27 ImplThreadTaskRunner()->PostTask( | 28 ImplThreadTaskRunner()->PostTask( |
28 FROM_HERE, base::Bind(&ThreadedChannelTest::StartTestOnImplThread, | 29 FROM_HERE, base::Bind(&ThreadedChannelTest::StartTestOnImplThread, |
29 base::Unretained(this))); | 30 base::Unretained(this))); |
30 } | 31 } |
31 | 32 |
32 virtual void StartTestOnImplThread() { | 33 virtual void StartTestOnImplThread() { |
33 DCHECK(task_runner_provider()->IsImplThread()); | 34 DCHECK(task_runner_provider()->IsImplThread()); |
34 } | 35 } |
35 | 36 |
36 void AfterTest() override {} | 37 void AfterTest() override {} |
37 | 38 |
| 39 // TODO(khushalsagar): Remove this once ProxyImpl is added to the |
| 40 // LayerTreeTest. |
| 41 ThreadProxy* thread_proxy_; |
38 int calls_received_; | 42 int calls_received_; |
39 | 43 |
40 private: | 44 private: |
41 DISALLOW_COPY_AND_ASSIGN(ThreadedChannelTest); | 45 DISALLOW_COPY_AND_ASSIGN(ThreadedChannelTest); |
42 }; | 46 }; |
43 | 47 |
44 class ThreadedChannelTestInitializationAndShutdown | 48 class ThreadedChannelTestInitializationAndShutdown |
45 : public ThreadedChannelTest { | 49 : public ThreadedChannelTest { |
| 50 void InitializeImplOnImpl() override { calls_received_++; } |
| 51 |
46 void SetVisibleOnImpl(bool visible) override { calls_received_++; } | 52 void SetVisibleOnImpl(bool visible) override { calls_received_++; } |
47 | 53 |
48 void ReceivedRequestNewOutputSurface() override { calls_received_++; } | 54 void ReceivedRequestNewOutputSurface() override { calls_received_++; } |
49 | 55 |
50 void InitializeOutputSurfaceOnImpl(OutputSurface* output_surface) override { | 56 void InitializeOutputSurfaceOnImpl(OutputSurface* output_surface) override { |
51 calls_received_++; | 57 calls_received_++; |
52 } | 58 } |
53 | 59 |
54 void ReceivedSetRendererCapabilitiesMainCopy( | 60 void ReceivedSetRendererCapabilitiesMainCopy( |
55 const RendererCapabilities& capabilities) override { | 61 const RendererCapabilities& capabilities) override { |
56 calls_received_++; | 62 calls_received_++; |
57 } | 63 } |
58 | 64 |
59 void ReceivedDidInitializeOutputSurface( | 65 void ReceivedDidInitializeOutputSurface( |
60 bool success, | 66 bool success, |
61 const RendererCapabilities& capabilities) override { | 67 const RendererCapabilities& capabilities) override { |
62 calls_received_++; | 68 calls_received_++; |
63 EndTest(); | 69 EndTest(); |
64 } | 70 } |
65 | 71 |
| 72 void WillCloseLayerTreeHostOnImpl() override { calls_received_++; } |
66 void FinishGLOnImpl() override { calls_received_++; } | 73 void FinishGLOnImpl() override { calls_received_++; } |
67 | 74 |
68 void AfterTest() override { EXPECT_EQ(6, calls_received_); } | 75 void AfterTest() override { EXPECT_EQ(8, calls_received_); } |
69 }; | 76 }; |
70 | 77 |
71 MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 78 MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
72 ThreadedChannelTestInitializationAndShutdown); | 79 ThreadedChannelTestInitializationAndShutdown); |
73 | 80 |
74 class ThreadedChannelTestThrottleFrameProduction : public ThreadedChannelTest { | 81 class ThreadedChannelTestThrottleFrameProduction : public ThreadedChannelTest { |
75 void BeginChannelTest() override { | 82 void BeginChannelTest() override { |
76 proxy()->SetThrottleFrameProduction(true); | 83 proxy()->SetThrottleFrameProduction(true); |
77 } | 84 } |
78 | 85 |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 void AfterTest() override { EXPECT_EQ(1, calls_received_); } | 239 void AfterTest() override { EXPECT_EQ(1, calls_received_); } |
233 }; | 240 }; |
234 | 241 |
235 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestBeginMainFrameAborted); | 242 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestBeginMainFrameAborted); |
236 | 243 |
237 class ThreadedChannelTestBeginMainFrameNotExpectedSoon | 244 class ThreadedChannelTestBeginMainFrameNotExpectedSoon |
238 : public ThreadedChannelTest { | 245 : public ThreadedChannelTest { |
239 void BeginChannelTest() override { PostOnImplThread(); } | 246 void BeginChannelTest() override { PostOnImplThread(); } |
240 | 247 |
241 void StartTestOnImplThread() override { | 248 void StartTestOnImplThread() override { |
242 GetProxyImplForTest()->SendBeginMainFrameNotExpectedSoon(); | 249 thread_proxy_->SendBeginMainFrameNotExpectedSoon(); |
243 } | 250 } |
244 | 251 |
245 void ReceivedBeginMainFrameNotExpectedSoon() override { | 252 void ReceivedBeginMainFrameNotExpectedSoon() override { |
246 calls_received_++; | 253 calls_received_++; |
247 EndTest(); | 254 EndTest(); |
248 } | 255 } |
249 | 256 |
250 void AfterTest() override { EXPECT_EQ(1, calls_received_); } | 257 void AfterTest() override { EXPECT_EQ(1, calls_received_); } |
251 }; | 258 }; |
252 | 259 |
253 MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 260 MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
254 ThreadedChannelTestBeginMainFrameNotExpectedSoon); | 261 ThreadedChannelTestBeginMainFrameNotExpectedSoon); |
255 | 262 |
256 class ThreadedChannelTestSetAnimationEvents : public ThreadedChannelTest { | 263 class ThreadedChannelTestSetAnimationEvents : public ThreadedChannelTest { |
257 void BeginChannelTest() override { PostOnImplThread(); } | 264 void BeginChannelTest() override { PostOnImplThread(); } |
258 | 265 |
259 void StartTestOnImplThread() override { | 266 void StartTestOnImplThread() override { |
260 scoped_ptr<AnimationEventsVector> events( | 267 scoped_ptr<AnimationEventsVector> events( |
261 make_scoped_ptr(new AnimationEventsVector)); | 268 make_scoped_ptr(new AnimationEventsVector)); |
262 GetProxyImplForTest()->PostAnimationEventsToMainThreadOnImplThread( | 269 thread_proxy_->PostAnimationEventsToMainThreadOnImplThread( |
263 std::move(events)); | 270 std::move(events)); |
264 } | 271 } |
265 | 272 |
266 void ReceivedSetAnimationEvents() override { | 273 void ReceivedSetAnimationEvents() override { |
267 calls_received_++; | 274 calls_received_++; |
268 EndTest(); | 275 EndTest(); |
269 } | 276 } |
270 | 277 |
271 void AfterTest() override { EXPECT_EQ(1, calls_received_); } | 278 void AfterTest() override { EXPECT_EQ(1, calls_received_); } |
272 }; | 279 }; |
273 | 280 |
274 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestSetAnimationEvents); | 281 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestSetAnimationEvents); |
275 | 282 |
276 class ThreadedChannelTestLoseOutputSurface : public ThreadedChannelTest { | 283 class ThreadedChannelTestLoseOutputSurface : public ThreadedChannelTest { |
277 void BeginChannelTest() override { PostOnImplThread(); } | 284 void BeginChannelTest() override { PostOnImplThread(); } |
278 | 285 |
279 void StartTestOnImplThread() override { | 286 void StartTestOnImplThread() override { |
280 GetProxyImplForTest()->DidLoseOutputSurfaceOnImplThread(); | 287 thread_proxy_->DidLoseOutputSurfaceOnImplThread(); |
281 } | 288 } |
282 | 289 |
283 void ReceivedDidLoseOutputSurface() override { | 290 void ReceivedDidLoseOutputSurface() override { |
284 calls_received_++; | 291 calls_received_++; |
285 EndTest(); | 292 EndTest(); |
286 } | 293 } |
287 | 294 |
288 void AfterTest() override { EXPECT_EQ(1, calls_received_); } | 295 void AfterTest() override { EXPECT_EQ(1, calls_received_); } |
289 }; | 296 }; |
290 | 297 |
291 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestLoseOutputSurface); | 298 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestLoseOutputSurface); |
292 | 299 |
293 class ThreadedChannelTestPageScaleAnimation : public ThreadedChannelTest { | 300 class ThreadedChannelTestPageScaleAnimation : public ThreadedChannelTest { |
294 void BeginChannelTest() override { PostOnImplThread(); } | 301 void BeginChannelTest() override { PostOnImplThread(); } |
295 | 302 |
296 void StartTestOnImplThread() override { | 303 void StartTestOnImplThread() override { |
297 GetProxyImplForTest()->DidCompletePageScaleAnimationOnImplThread(); | 304 thread_proxy_->DidCompletePageScaleAnimationOnImplThread(); |
298 } | 305 } |
299 | 306 |
300 void ReceivedDidCompletePageScaleAnimation() override { | 307 void ReceivedDidCompletePageScaleAnimation() override { |
301 calls_received_++; | 308 calls_received_++; |
302 EndTest(); | 309 EndTest(); |
303 } | 310 } |
304 | 311 |
305 void AfterTest() override { EXPECT_EQ(1, calls_received_); } | 312 void AfterTest() override { EXPECT_EQ(1, calls_received_); } |
306 }; | 313 }; |
307 | 314 |
308 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestPageScaleAnimation); | 315 MULTI_THREAD_DIRECT_RENDERER_TEST_F(ThreadedChannelTestPageScaleAnimation); |
309 | 316 |
310 } // namespace cc | 317 } // namespace cc |
OLD | NEW |