OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 #ifndef CC_TEST_LAYER_TREE_TEST_H_ | 5 #ifndef CC_TEST_LAYER_TREE_TEST_H_ |
6 #define CC_TEST_LAYER_TREE_TEST_H_ | 6 #define CC_TEST_LAYER_TREE_TEST_H_ |
7 | 7 |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/threading/thread.h" | 9 #include "base/threading/thread.h" |
10 #include "cc/animation/animation_delegate.h" | 10 #include "cc/animation/animation_delegate.h" |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, | 50 virtual void InitializedRendererOnThread(LayerTreeHostImpl* host_impl, |
51 bool success) {} | 51 bool success) {} |
52 virtual DrawResult PrepareToDrawOnThread( | 52 virtual DrawResult PrepareToDrawOnThread( |
53 LayerTreeHostImpl* host_impl, | 53 LayerTreeHostImpl* host_impl, |
54 LayerTreeHostImpl::FrameData* frame_data, | 54 LayerTreeHostImpl::FrameData* frame_data, |
55 DrawResult draw_result); | 55 DrawResult draw_result); |
56 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) {} | 56 virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) {} |
57 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) {} | 57 virtual void SwapBuffersOnThread(LayerTreeHostImpl* host_impl, bool result) {} |
58 virtual void SwapBuffersCompleteOnThread(LayerTreeHostImpl* host_impl) {} | 58 virtual void SwapBuffersCompleteOnThread(LayerTreeHostImpl* host_impl) {} |
59 virtual void UpdateVisibleTilesOnThread(LayerTreeHostImpl* host_impl) {} | 59 virtual void UpdateVisibleTilesOnThread(LayerTreeHostImpl* host_impl) {} |
| 60 virtual void NotifyReadyToActivateOnThread(LayerTreeHostImpl* host_impl) {} |
| 61 virtual void NotifyReadyToDrawOnThread(LayerTreeHostImpl* host_impl) {} |
60 virtual void AnimateLayers(LayerTreeHostImpl* host_impl, | 62 virtual void AnimateLayers(LayerTreeHostImpl* host_impl, |
61 base::TimeTicks monotonic_time) {} | 63 base::TimeTicks monotonic_time) {} |
62 virtual void UpdateAnimationState(LayerTreeHostImpl* host_impl, | 64 virtual void UpdateAnimationState(LayerTreeHostImpl* host_impl, |
63 bool has_unfinished_animation) {} | 65 bool has_unfinished_animation) {} |
64 virtual void WillAnimateLayers(LayerTreeHostImpl* host_impl, | 66 virtual void WillAnimateLayers(LayerTreeHostImpl* host_impl, |
65 base::TimeTicks monotonic_time) {} | 67 base::TimeTicks monotonic_time) {} |
66 virtual void ApplyViewportDeltas(const gfx::Vector2d& inner_delta, | 68 virtual void ApplyViewportDeltas(const gfx::Vector2d& inner_delta, |
67 const gfx::Vector2d& outer_delta, | 69 const gfx::Vector2d& outer_delta, |
68 float scale, | 70 float scale, |
69 float top_controls_delta) {} | 71 float top_controls_delta) {} |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
228 }; | 230 }; |
229 | 231 |
230 } // namespace cc | 232 } // namespace cc |
231 | 233 |
232 #define SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | 234 #define SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
233 TEST_F(TEST_FIXTURE_NAME, RunSingleThread_DirectRenderer_MainThreadPaint) { \ | 235 TEST_F(TEST_FIXTURE_NAME, RunSingleThread_DirectRenderer_MainThreadPaint) { \ |
234 RunTest(false, false, false); \ | 236 RunTest(false, false, false); \ |
235 } \ | 237 } \ |
236 class SingleThreadDirectNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} | 238 class SingleThreadDirectNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
237 | 239 |
238 #define SINGLE_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ | 240 #define SINGLE_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
239 SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | |
240 TEST_F(TEST_FIXTURE_NAME, RunSingleThread_DirectRenderer_ImplSidePaint) { \ | 241 TEST_F(TEST_FIXTURE_NAME, RunSingleThread_DirectRenderer_ImplSidePaint) { \ |
241 RunTest(false, false, true); \ | 242 RunTest(false, false, true); \ |
242 } \ | 243 } \ |
243 class SingleThreadDirectNeedsSemicolon##TEST_FIXTURE_NAME {} | 244 class SingleThreadDirectImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
| 245 |
| 246 #define SINGLE_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ |
| 247 SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 248 SINGLE_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
244 | 249 |
245 #define SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | 250 #define SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
246 TEST_F(TEST_FIXTURE_NAME, \ | 251 TEST_F(TEST_FIXTURE_NAME, \ |
247 RunSingleThread_DelegatingRenderer_MainThreadPaint) { \ | 252 RunSingleThread_DelegatingRenderer_MainThreadPaint) { \ |
248 RunTest(false, true, false); \ | 253 RunTest(false, true, false); \ |
249 } \ | 254 } \ |
250 class SingleThreadDelegatingNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} | 255 class SingleThreadDelegatingNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
251 | 256 |
| 257 #define SINGLE_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
| 258 TEST_F(TEST_FIXTURE_NAME, \ |
| 259 RunSingleThread_DelegatingRenderer_ImplSidePaint) { \ |
| 260 RunTest(false, true, true); \ |
| 261 } \ |
| 262 class SingleThreadDelegatingImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
| 263 |
252 #define SINGLE_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ | 264 #define SINGLE_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ |
253 SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | 265 SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
254 TEST_F(TEST_FIXTURE_NAME, \ | 266 SINGLE_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
255 RunSingleThread_DelegatingRenderer_ImplSidePaint) { \ | 267 |
256 RunTest(false, true, true); \ | 268 #define SINGLE_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
257 } \ | 269 SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
258 class SingleThreadDelegatingNeedsSemicolon##TEST_FIXTURE_NAME {} | 270 SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) |
| 271 |
| 272 #define SINGLE_THREAD_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
| 273 SINGLE_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 274 SINGLE_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
259 | 275 |
260 #define SINGLE_THREAD_TEST_F(TEST_FIXTURE_NAME) \ | 276 #define SINGLE_THREAD_TEST_F(TEST_FIXTURE_NAME) \ |
261 SINGLE_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ | 277 SINGLE_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ |
262 SINGLE_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) | 278 SINGLE_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) |
263 | 279 |
264 #define SINGLE_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | |
265 SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | |
266 SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) | |
267 | |
268 #define MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | 280 #define MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
269 TEST_F(TEST_FIXTURE_NAME, RunMultiThread_DirectRenderer_MainThreadPaint) { \ | 281 TEST_F(TEST_FIXTURE_NAME, RunMultiThread_DirectRenderer_MainThreadPaint) { \ |
270 RunTest(true, false, false); \ | 282 RunTest(true, false, false); \ |
271 } \ | 283 } \ |
272 class MultiThreadDirectNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} | 284 class MultiThreadDirectNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
273 | 285 |
274 #define MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ | 286 #define MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
275 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | |
276 TEST_F(TEST_FIXTURE_NAME, RunMultiThread_DirectRenderer_ImplSidePaint) { \ | 287 TEST_F(TEST_FIXTURE_NAME, RunMultiThread_DirectRenderer_ImplSidePaint) { \ |
277 RunTest(true, false, true); \ | 288 RunTest(true, false, true); \ |
278 } \ | 289 } \ |
279 class MultiThreadDirectNeedsSemicolon##TEST_FIXTURE_NAME {} | 290 class MultiThreadDirectImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
| 291 |
| 292 #define MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ |
| 293 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 294 MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
280 | 295 |
281 #define MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | 296 #define MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
282 TEST_F(TEST_FIXTURE_NAME, \ | 297 TEST_F(TEST_FIXTURE_NAME, \ |
283 RunMultiThread_DelegatingRenderer_MainThreadPaint) { \ | 298 RunMultiThread_DelegatingRenderer_MainThreadPaint) { \ |
284 RunTest(true, true, false); \ | 299 RunTest(true, true, false); \ |
285 } \ | 300 } \ |
286 class MultiThreadDelegatingNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} | 301 class MultiThreadDelegatingNoImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
287 | 302 |
288 #define MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ | 303 #define MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
289 MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | |
290 TEST_F(TEST_FIXTURE_NAME, RunMultiThread_DelegatingRenderer_ImplSidePaint) { \ | 304 TEST_F(TEST_FIXTURE_NAME, RunMultiThread_DelegatingRenderer_ImplSidePaint) { \ |
291 RunTest(true, true, true); \ | 305 RunTest(true, true, true); \ |
292 } \ | 306 } \ |
293 class MultiThreadDelegatingNeedsSemicolon##TEST_FIXTURE_NAME {} | 307 class MultiThreadDelegatingImplNeedsSemicolon##TEST_FIXTURE_NAME {} |
| 308 |
| 309 #define MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ |
| 310 MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 311 MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
294 | 312 |
295 #define MULTI_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | 313 #define MULTI_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
296 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | 314 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
297 MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) | 315 MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) |
298 | 316 |
| 317 #define MULTI_THREAD_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
| 318 MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 319 MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
| 320 |
299 #define MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) \ | 321 #define MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) \ |
300 MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ | 322 MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ |
301 MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) | 323 MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) |
302 | 324 |
303 #define SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( \ | 325 #define SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( \ |
304 TEST_FIXTURE_NAME) \ | 326 TEST_FIXTURE_NAME) \ |
305 SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | 327 SINGLE_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
306 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) | 328 MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) |
307 | 329 |
| 330 #define SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
| 331 SINGLE_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 332 MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
| 333 |
308 #define SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ | 334 #define SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ |
309 SINGLE_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ | 335 SINGLE_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ |
310 MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) | 336 MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME) |
311 | 337 |
312 #define SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F( \ | 338 #define SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F( \ |
313 TEST_FIXTURE_NAME) \ | 339 TEST_FIXTURE_NAME) \ |
314 SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | 340 SINGLE_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
315 MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) | 341 MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) |
316 | 342 |
| 343 #define SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F( \ |
| 344 TEST_FIXTURE_NAME) \ |
| 345 SINGLE_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 346 MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
| 347 |
317 #define SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ | 348 #define SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) \ |
318 SINGLE_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ | 349 SINGLE_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ |
319 MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) | 350 MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) |
320 | 351 |
321 #define SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ | 352 #define SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME) \ |
322 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | 353 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
323 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) | 354 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_NOIMPL_TEST_F(TEST_FIXTURE_NAME) |
324 | 355 |
| 356 #define SINGLE_AND_MULTI_THREAD_IMPL_TEST_F(TEST_FIXTURE_NAME) \ |
| 357 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME); \ |
| 358 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_IMPL_TEST_F(TEST_FIXTURE_NAME) |
| 359 |
325 #define SINGLE_AND_MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) \ | 360 #define SINGLE_AND_MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) \ |
326 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ | 361 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F(TEST_FIXTURE_NAME); \ |
327 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) | 362 SINGLE_AND_MULTI_THREAD_DELEGATING_RENDERER_TEST_F(TEST_FIXTURE_NAME) |
328 | 363 |
329 // Some tests want to control when notify ready for activation occurs, | 364 // Some tests want to control when notify ready for activation occurs, |
330 // but this is not supported in the single-threaded case. | 365 // but this is not supported in the single-threaded case. |
331 #define SINGLE_AND_MULTI_THREAD_BLOCKNOTIFY_TEST_F(TEST_FIXTURE_NAME) \ | 366 #define SINGLE_AND_MULTI_THREAD_BLOCKNOTIFY_TEST_F(TEST_FIXTURE_NAME) \ |
332 SINGLE_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ | 367 SINGLE_THREAD_NOIMPL_TEST_F(TEST_FIXTURE_NAME); \ |
333 MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) | 368 MULTI_THREAD_TEST_F(TEST_FIXTURE_NAME) |
334 | 369 |
335 #endif // CC_TEST_LAYER_TREE_TEST_H_ | 370 #endif // CC_TEST_LAYER_TREE_TEST_H_ |
OLD | NEW |