OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/layers/layer_iterator.h" | 5 #include "cc/layers/layer_iterator.h" |
6 #include "cc/output/copy_output_request.h" | 6 #include "cc/output/copy_output_request.h" |
7 #include "cc/output/copy_output_result.h" | 7 #include "cc/output/copy_output_result.h" |
8 #include "cc/test/fake_content_layer.h" | |
9 #include "cc/test/fake_content_layer_client.h" | 8 #include "cc/test/fake_content_layer_client.h" |
10 #include "cc/test/fake_output_surface.h" | 9 #include "cc/test/fake_output_surface.h" |
| 10 #include "cc/test/fake_picture_layer.h" |
11 #include "cc/test/layer_tree_test.h" | 11 #include "cc/test/layer_tree_test.h" |
12 #include "cc/trees/layer_tree_impl.h" | 12 #include "cc/trees/layer_tree_impl.h" |
13 #include "gpu/GLES2/gl2extchromium.h" | 13 #include "gpu/GLES2/gl2extchromium.h" |
14 | 14 |
15 namespace cc { | 15 namespace cc { |
16 namespace { | 16 namespace { |
17 | 17 |
18 // These tests only use direct rendering, as there is no output to copy for | 18 // These tests only use direct rendering, as there is no output to copy for |
19 // delegated renderers. | 19 // delegated renderers. |
20 class LayerTreeHostCopyRequestTest : public LayerTreeTest {}; | 20 class LayerTreeHostCopyRequestTest : public LayerTreeTest {}; |
21 | 21 |
22 class LayerTreeHostCopyRequestTestMultipleRequests | 22 class LayerTreeHostCopyRequestTestMultipleRequests |
23 : public LayerTreeHostCopyRequestTest { | 23 : public LayerTreeHostCopyRequestTest { |
24 protected: | 24 protected: |
25 void SetupTree() override { | 25 void SetupTree() override { |
26 root = FakeContentLayer::Create(layer_settings(), &client_); | 26 root = FakePictureLayer::Create(layer_settings(), &client_); |
27 root->SetBounds(gfx::Size(20, 20)); | 27 root->SetBounds(gfx::Size(20, 20)); |
28 | 28 |
29 child = FakeContentLayer::Create(layer_settings(), &client_); | 29 child = FakePictureLayer::Create(layer_settings(), &client_); |
30 child->SetBounds(gfx::Size(10, 10)); | 30 child->SetBounds(gfx::Size(10, 10)); |
31 root->AddChild(child); | 31 root->AddChild(child); |
32 | 32 |
33 layer_tree_host()->SetRootLayer(root); | 33 layer_tree_host()->SetRootLayer(root); |
34 LayerTreeHostCopyRequestTest::SetupTree(); | 34 LayerTreeHostCopyRequestTest::SetupTree(); |
35 } | 35 } |
36 | 36 |
37 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 37 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
38 | 38 |
39 void DidCommitAndDrawFrame() override { WaitForCallback(); } | 39 void DidCommitAndDrawFrame() override { WaitForCallback(); } |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 107 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
108 if (use_gl_renderer_) | 108 if (use_gl_renderer_) |
109 return FakeOutputSurface::Create3d(); | 109 return FakeOutputSurface::Create3d(); |
110 return FakeOutputSurface::CreateSoftware( | 110 return FakeOutputSurface::CreateSoftware( |
111 make_scoped_ptr(new SoftwareOutputDevice)); | 111 make_scoped_ptr(new SoftwareOutputDevice)); |
112 } | 112 } |
113 | 113 |
114 bool use_gl_renderer_; | 114 bool use_gl_renderer_; |
115 std::vector<gfx::Size> callbacks_; | 115 std::vector<gfx::Size> callbacks_; |
116 FakeContentLayerClient client_; | 116 FakeContentLayerClient client_; |
117 scoped_refptr<FakeContentLayer> root; | 117 scoped_refptr<FakePictureLayer> root; |
118 scoped_refptr<FakeContentLayer> child; | 118 scoped_refptr<FakePictureLayer> child; |
119 }; | 119 }; |
120 | 120 |
121 // Readback can't be done with a delegating renderer. | 121 // Readback can't be done with a delegating renderer. |
122 // Disabled due to flake: http://crbug.com/448521 | 122 // Disabled due to flake: http://crbug.com/448521 |
123 TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, | 123 TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, |
124 DISABLED_GLRenderer_RunSingleThread) { | 124 DISABLED_GLRenderer_RunSingleThread) { |
125 use_gl_renderer_ = true; | 125 use_gl_renderer_ = true; |
126 RunTest(false, false, false); | 126 RunTest(false, false, false); |
127 } | 127 } |
128 | 128 |
(...skipping 12 matching lines...) Expand all Loading... |
141 TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, | 141 TEST_F(LayerTreeHostCopyRequestTestMultipleRequests, |
142 SoftwareRenderer_RunMultiThread_MainThreadPainting) { | 142 SoftwareRenderer_RunMultiThread_MainThreadPainting) { |
143 use_gl_renderer_ = false; | 143 use_gl_renderer_ = false; |
144 RunTest(true, false, false); | 144 RunTest(true, false, false); |
145 } | 145 } |
146 | 146 |
147 class LayerTreeHostCopyRequestTestLayerDestroyed | 147 class LayerTreeHostCopyRequestTestLayerDestroyed |
148 : public LayerTreeHostCopyRequestTest { | 148 : public LayerTreeHostCopyRequestTest { |
149 protected: | 149 protected: |
150 void SetupTree() override { | 150 void SetupTree() override { |
151 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 151 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
152 root_->SetBounds(gfx::Size(20, 20)); | 152 root_->SetBounds(gfx::Size(20, 20)); |
153 | 153 |
154 main_destroyed_ = FakeContentLayer::Create(layer_settings(), &client_); | 154 main_destroyed_ = FakePictureLayer::Create(layer_settings(), &client_); |
155 main_destroyed_->SetBounds(gfx::Size(15, 15)); | 155 main_destroyed_->SetBounds(gfx::Size(15, 15)); |
156 root_->AddChild(main_destroyed_); | 156 root_->AddChild(main_destroyed_); |
157 | 157 |
158 impl_destroyed_ = FakeContentLayer::Create(layer_settings(), &client_); | 158 impl_destroyed_ = FakePictureLayer::Create(layer_settings(), &client_); |
159 impl_destroyed_->SetBounds(gfx::Size(10, 10)); | 159 impl_destroyed_->SetBounds(gfx::Size(10, 10)); |
160 root_->AddChild(impl_destroyed_); | 160 root_->AddChild(impl_destroyed_); |
161 | 161 |
162 layer_tree_host()->SetRootLayer(root_); | 162 layer_tree_host()->SetRootLayer(root_); |
163 LayerTreeHostCopyRequestTest::SetupTree(); | 163 LayerTreeHostCopyRequestTest::SetupTree(); |
164 } | 164 } |
165 | 165 |
166 void BeginTest() override { | 166 void BeginTest() override { |
167 callback_count_ = 0; | 167 callback_count_ = 0; |
168 PostSetNeedsCommitToMainThread(); | 168 PostSetNeedsCommitToMainThread(); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { | 222 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { |
223 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); | 223 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
224 EXPECT_TRUE(result->IsEmpty()); | 224 EXPECT_TRUE(result->IsEmpty()); |
225 ++callback_count_; | 225 ++callback_count_; |
226 } | 226 } |
227 | 227 |
228 void AfterTest() override {} | 228 void AfterTest() override {} |
229 | 229 |
230 int callback_count_; | 230 int callback_count_; |
231 FakeContentLayerClient client_; | 231 FakeContentLayerClient client_; |
232 scoped_refptr<FakeContentLayer> root_; | 232 scoped_refptr<FakePictureLayer> root_; |
233 scoped_refptr<FakeContentLayer> main_destroyed_; | 233 scoped_refptr<FakePictureLayer> main_destroyed_; |
234 scoped_refptr<FakeContentLayer> impl_destroyed_; | 234 scoped_refptr<FakePictureLayer> impl_destroyed_; |
235 }; | 235 }; |
236 | 236 |
237 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestLayerDestroyed); | 237 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostCopyRequestTestLayerDestroyed); |
238 | 238 |
239 class LayerTreeHostCopyRequestTestInHiddenSubtree | 239 class LayerTreeHostCopyRequestTestInHiddenSubtree |
240 : public LayerTreeHostCopyRequestTest { | 240 : public LayerTreeHostCopyRequestTest { |
241 protected: | 241 protected: |
242 void SetupTree() override { | 242 void SetupTree() override { |
243 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 243 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
244 root_->SetBounds(gfx::Size(20, 20)); | 244 root_->SetBounds(gfx::Size(20, 20)); |
245 | 245 |
246 grand_parent_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 246 grand_parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
247 grand_parent_layer_->SetBounds(gfx::Size(15, 15)); | 247 grand_parent_layer_->SetBounds(gfx::Size(15, 15)); |
248 root_->AddChild(grand_parent_layer_); | 248 root_->AddChild(grand_parent_layer_); |
249 | 249 |
250 // parent_layer_ owns a render surface. | 250 // parent_layer_ owns a render surface. |
251 parent_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 251 parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
252 parent_layer_->SetBounds(gfx::Size(15, 15)); | 252 parent_layer_->SetBounds(gfx::Size(15, 15)); |
253 parent_layer_->SetForceRenderSurface(true); | 253 parent_layer_->SetForceRenderSurface(true); |
254 grand_parent_layer_->AddChild(parent_layer_); | 254 grand_parent_layer_->AddChild(parent_layer_); |
255 | 255 |
256 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 256 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
257 copy_layer_->SetBounds(gfx::Size(10, 10)); | 257 copy_layer_->SetBounds(gfx::Size(10, 10)); |
258 parent_layer_->AddChild(copy_layer_); | 258 parent_layer_->AddChild(copy_layer_); |
259 | 259 |
260 layer_tree_host()->SetRootLayer(root_); | 260 layer_tree_host()->SetRootLayer(root_); |
261 LayerTreeHostCopyRequestTest::SetupTree(); | 261 LayerTreeHostCopyRequestTest::SetupTree(); |
262 } | 262 } |
263 | 263 |
264 void AddCopyRequest(Layer* layer) { | 264 void AddCopyRequest(Layer* layer) { |
265 layer->RequestCopyOfOutput( | 265 layer->RequestCopyOfOutput( |
266 CopyOutputRequest::CreateBitmapRequest(base::Bind( | 266 CopyOutputRequest::CreateBitmapRequest(base::Bind( |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 case 6: | 319 case 6: |
320 EndTest(); | 320 EndTest(); |
321 break; | 321 break; |
322 } | 322 } |
323 } | 323 } |
324 | 324 |
325 void AfterTest() override {} | 325 void AfterTest() override {} |
326 | 326 |
327 int callback_count_; | 327 int callback_count_; |
328 FakeContentLayerClient client_; | 328 FakeContentLayerClient client_; |
329 scoped_refptr<FakeContentLayer> root_; | 329 scoped_refptr<FakePictureLayer> root_; |
330 scoped_refptr<FakeContentLayer> grand_parent_layer_; | 330 scoped_refptr<FakePictureLayer> grand_parent_layer_; |
331 scoped_refptr<FakeContentLayer> parent_layer_; | 331 scoped_refptr<FakePictureLayer> parent_layer_; |
332 scoped_refptr<FakeContentLayer> copy_layer_; | 332 scoped_refptr<FakePictureLayer> copy_layer_; |
333 }; | 333 }; |
334 | 334 |
335 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 335 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F( |
336 LayerTreeHostCopyRequestTestInHiddenSubtree); | 336 LayerTreeHostCopyRequestTestInHiddenSubtree); |
337 | 337 |
338 class LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest | 338 class LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest |
339 : public LayerTreeHostCopyRequestTest { | 339 : public LayerTreeHostCopyRequestTest { |
340 protected: | 340 protected: |
341 void SetupTree() override { | 341 void SetupTree() override { |
342 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 342 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
343 root_->SetBounds(gfx::Size(20, 20)); | 343 root_->SetBounds(gfx::Size(20, 20)); |
344 | 344 |
345 grand_parent_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 345 grand_parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
346 grand_parent_layer_->SetBounds(gfx::Size(15, 15)); | 346 grand_parent_layer_->SetBounds(gfx::Size(15, 15)); |
347 grand_parent_layer_->SetHideLayerAndSubtree(true); | 347 grand_parent_layer_->SetHideLayerAndSubtree(true); |
348 root_->AddChild(grand_parent_layer_); | 348 root_->AddChild(grand_parent_layer_); |
349 | 349 |
350 // parent_layer_ owns a render surface. | 350 // parent_layer_ owns a render surface. |
351 parent_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 351 parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
352 parent_layer_->SetBounds(gfx::Size(15, 15)); | 352 parent_layer_->SetBounds(gfx::Size(15, 15)); |
353 parent_layer_->SetForceRenderSurface(true); | 353 parent_layer_->SetForceRenderSurface(true); |
354 grand_parent_layer_->AddChild(parent_layer_); | 354 grand_parent_layer_->AddChild(parent_layer_); |
355 | 355 |
356 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 356 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
357 copy_layer_->SetBounds(gfx::Size(10, 10)); | 357 copy_layer_->SetBounds(gfx::Size(10, 10)); |
358 parent_layer_->AddChild(copy_layer_); | 358 parent_layer_->AddChild(copy_layer_); |
359 | 359 |
360 layer_tree_host()->SetRootLayer(root_); | 360 layer_tree_host()->SetRootLayer(root_); |
361 LayerTreeHostCopyRequestTest::SetupTree(); | 361 LayerTreeHostCopyRequestTest::SetupTree(); |
362 } | 362 } |
363 | 363 |
364 void BeginTest() override { | 364 void BeginTest() override { |
365 did_draw_ = false; | 365 did_draw_ = false; |
366 PostSetNeedsCommitToMainThread(); | 366 PostSetNeedsCommitToMainThread(); |
(...skipping 29 matching lines...) Expand all Loading... |
396 EXPECT_TRUE(renderer->HasAllocatedResourcesForTesting( | 396 EXPECT_TRUE(renderer->HasAllocatedResourcesForTesting( |
397 copy_layer->render_surface()->GetRenderPassId())); | 397 copy_layer->render_surface()->GetRenderPassId())); |
398 | 398 |
399 did_draw_ = true; | 399 did_draw_ = true; |
400 } | 400 } |
401 | 401 |
402 void AfterTest() override { EXPECT_TRUE(did_draw_); } | 402 void AfterTest() override { EXPECT_TRUE(did_draw_); } |
403 | 403 |
404 FakeContentLayerClient client_; | 404 FakeContentLayerClient client_; |
405 bool did_draw_; | 405 bool did_draw_; |
406 scoped_refptr<FakeContentLayer> root_; | 406 scoped_refptr<FakePictureLayer> root_; |
407 scoped_refptr<FakeContentLayer> grand_parent_layer_; | 407 scoped_refptr<FakePictureLayer> grand_parent_layer_; |
408 scoped_refptr<FakeContentLayer> parent_layer_; | 408 scoped_refptr<FakePictureLayer> parent_layer_; |
409 scoped_refptr<FakeContentLayer> copy_layer_; | 409 scoped_refptr<FakePictureLayer> copy_layer_; |
410 }; | 410 }; |
411 | 411 |
412 // No output to copy for delegated renderers. | 412 // No output to copy for delegated renderers. |
413 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 413 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
414 LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest); | 414 LayerTreeHostTestHiddenSurfaceNotAllocatedForSubtreeCopyRequest); |
415 | 415 |
416 class LayerTreeHostCopyRequestTestClippedOut | 416 class LayerTreeHostCopyRequestTestClippedOut |
417 : public LayerTreeHostCopyRequestTest { | 417 : public LayerTreeHostCopyRequestTest { |
418 protected: | 418 protected: |
419 void SetupTree() override { | 419 void SetupTree() override { |
420 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 420 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
421 root_->SetBounds(gfx::Size(20, 20)); | 421 root_->SetBounds(gfx::Size(20, 20)); |
422 | 422 |
423 parent_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 423 parent_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
424 parent_layer_->SetBounds(gfx::Size(15, 15)); | 424 parent_layer_->SetBounds(gfx::Size(15, 15)); |
425 parent_layer_->SetMasksToBounds(true); | 425 parent_layer_->SetMasksToBounds(true); |
426 root_->AddChild(parent_layer_); | 426 root_->AddChild(parent_layer_); |
427 | 427 |
428 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 428 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
429 copy_layer_->SetPosition(gfx::Point(15, 15)); | 429 copy_layer_->SetPosition(gfx::Point(15, 15)); |
430 copy_layer_->SetBounds(gfx::Size(10, 10)); | 430 copy_layer_->SetBounds(gfx::Size(10, 10)); |
431 parent_layer_->AddChild(copy_layer_); | 431 parent_layer_->AddChild(copy_layer_); |
432 | 432 |
433 layer_tree_host()->SetRootLayer(root_); | 433 layer_tree_host()->SetRootLayer(root_); |
434 LayerTreeHostCopyRequestTest::SetupTree(); | 434 LayerTreeHostCopyRequestTest::SetupTree(); |
435 } | 435 } |
436 | 436 |
437 void BeginTest() override { | 437 void BeginTest() override { |
438 PostSetNeedsCommitToMainThread(); | 438 PostSetNeedsCommitToMainThread(); |
439 | 439 |
440 copy_layer_->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( | 440 copy_layer_->RequestCopyOfOutput(CopyOutputRequest::CreateBitmapRequest( |
441 base::Bind(&LayerTreeHostCopyRequestTestClippedOut::CopyOutputCallback, | 441 base::Bind(&LayerTreeHostCopyRequestTestClippedOut::CopyOutputCallback, |
442 base::Unretained(this)))); | 442 base::Unretained(this)))); |
443 } | 443 } |
444 | 444 |
445 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { | 445 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { |
446 // We should still get a callback with no output if the copy requested layer | 446 // We should still get a callback with no output if the copy requested layer |
447 // was completely clipped away. | 447 // was completely clipped away. |
448 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); | 448 EXPECT_TRUE(layer_tree_host()->proxy()->IsMainThread()); |
449 EXPECT_EQ(gfx::Size().ToString(), result->size().ToString()); | 449 EXPECT_EQ(gfx::Size().ToString(), result->size().ToString()); |
450 EndTest(); | 450 EndTest(); |
451 } | 451 } |
452 | 452 |
453 void AfterTest() override {} | 453 void AfterTest() override {} |
454 | 454 |
455 FakeContentLayerClient client_; | 455 FakeContentLayerClient client_; |
456 scoped_refptr<FakeContentLayer> root_; | 456 scoped_refptr<FakePictureLayer> root_; |
457 scoped_refptr<FakeContentLayer> parent_layer_; | 457 scoped_refptr<FakePictureLayer> parent_layer_; |
458 scoped_refptr<FakeContentLayer> copy_layer_; | 458 scoped_refptr<FakePictureLayer> copy_layer_; |
459 }; | 459 }; |
460 | 460 |
461 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 461 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
462 LayerTreeHostCopyRequestTestClippedOut); | 462 LayerTreeHostCopyRequestTestClippedOut); |
463 | 463 |
464 class LayerTreeHostTestAsyncTwoReadbacksWithoutDraw | 464 class LayerTreeHostTestAsyncTwoReadbacksWithoutDraw |
465 : public LayerTreeHostCopyRequestTest { | 465 : public LayerTreeHostCopyRequestTest { |
466 protected: | 466 protected: |
467 void SetupTree() override { | 467 void SetupTree() override { |
468 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 468 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
469 root_->SetBounds(gfx::Size(20, 20)); | 469 root_->SetBounds(gfx::Size(20, 20)); |
470 | 470 |
471 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 471 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
472 copy_layer_->SetBounds(gfx::Size(10, 10)); | 472 copy_layer_->SetBounds(gfx::Size(10, 10)); |
473 root_->AddChild(copy_layer_); | 473 root_->AddChild(copy_layer_); |
474 | 474 |
475 layer_tree_host()->SetRootLayer(root_); | 475 layer_tree_host()->SetRootLayer(root_); |
476 LayerTreeHostCopyRequestTest::SetupTree(); | 476 LayerTreeHostCopyRequestTest::SetupTree(); |
477 } | 477 } |
478 | 478 |
479 void AddCopyRequest(Layer* layer) { | 479 void AddCopyRequest(Layer* layer) { |
480 layer->RequestCopyOfOutput( | 480 layer->RequestCopyOfOutput( |
481 CopyOutputRequest::CreateBitmapRequest(base::Bind( | 481 CopyOutputRequest::CreateBitmapRequest(base::Bind( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 | 518 |
519 if (callback_count_ == 2) | 519 if (callback_count_ == 2) |
520 EndTest(); | 520 EndTest(); |
521 } | 521 } |
522 | 522 |
523 void AfterTest() override { EXPECT_TRUE(saw_copy_request_); } | 523 void AfterTest() override { EXPECT_TRUE(saw_copy_request_); } |
524 | 524 |
525 bool saw_copy_request_; | 525 bool saw_copy_request_; |
526 int callback_count_; | 526 int callback_count_; |
527 FakeContentLayerClient client_; | 527 FakeContentLayerClient client_; |
528 scoped_refptr<FakeContentLayer> root_; | 528 scoped_refptr<FakePictureLayer> root_; |
529 scoped_refptr<FakeContentLayer> copy_layer_; | 529 scoped_refptr<FakePictureLayer> copy_layer_; |
530 }; | 530 }; |
531 | 531 |
532 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 532 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F( |
533 LayerTreeHostTestAsyncTwoReadbacksWithoutDraw); | 533 LayerTreeHostTestAsyncTwoReadbacksWithoutDraw); |
534 | 534 |
535 class LayerTreeHostCopyRequestTestLostOutputSurface | 535 class LayerTreeHostCopyRequestTestLostOutputSurface |
536 : public LayerTreeHostCopyRequestTest { | 536 : public LayerTreeHostCopyRequestTest { |
537 protected: | 537 protected: |
538 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 538 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
539 if (!first_context_provider_.get()) { | 539 if (!first_context_provider_.get()) { |
540 first_context_provider_ = TestContextProvider::Create(); | 540 first_context_provider_ = TestContextProvider::Create(); |
541 return FakeOutputSurface::Create3d(first_context_provider_); | 541 return FakeOutputSurface::Create3d(first_context_provider_); |
542 } | 542 } |
543 | 543 |
544 EXPECT_FALSE(second_context_provider_.get()); | 544 EXPECT_FALSE(second_context_provider_.get()); |
545 second_context_provider_ = TestContextProvider::Create(); | 545 second_context_provider_ = TestContextProvider::Create(); |
546 return FakeOutputSurface::Create3d(second_context_provider_); | 546 return FakeOutputSurface::Create3d(second_context_provider_); |
547 } | 547 } |
548 | 548 |
549 void SetupTree() override { | 549 void SetupTree() override { |
550 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 550 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
551 root_->SetBounds(gfx::Size(20, 20)); | 551 root_->SetBounds(gfx::Size(20, 20)); |
552 | 552 |
553 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 553 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
554 copy_layer_->SetBounds(gfx::Size(10, 10)); | 554 copy_layer_->SetBounds(gfx::Size(10, 10)); |
555 root_->AddChild(copy_layer_); | 555 root_->AddChild(copy_layer_); |
556 | 556 |
557 layer_tree_host()->SetRootLayer(root_); | 557 layer_tree_host()->SetRootLayer(root_); |
558 LayerTreeHostCopyRequestTest::SetupTree(); | 558 LayerTreeHostCopyRequestTest::SetupTree(); |
559 } | 559 } |
560 | 560 |
561 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 561 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
562 | 562 |
563 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { | 563 void CopyOutputCallback(scoped_ptr<CopyOutputResult> result) { |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 EndTest(); | 645 EndTest(); |
646 } | 646 } |
647 | 647 |
648 void AfterTest() override {} | 648 void AfterTest() override {} |
649 | 649 |
650 scoped_refptr<TestContextProvider> first_context_provider_; | 650 scoped_refptr<TestContextProvider> first_context_provider_; |
651 scoped_refptr<TestContextProvider> second_context_provider_; | 651 scoped_refptr<TestContextProvider> second_context_provider_; |
652 size_t num_textures_without_readback_; | 652 size_t num_textures_without_readback_; |
653 size_t num_textures_after_loss_; | 653 size_t num_textures_after_loss_; |
654 FakeContentLayerClient client_; | 654 FakeContentLayerClient client_; |
655 scoped_refptr<FakeContentLayer> root_; | 655 scoped_refptr<FakePictureLayer> root_; |
656 scoped_refptr<FakeContentLayer> copy_layer_; | 656 scoped_refptr<FakePictureLayer> copy_layer_; |
657 scoped_ptr<CopyOutputResult> result_; | 657 scoped_ptr<CopyOutputResult> result_; |
658 }; | 658 }; |
659 | 659 |
660 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 660 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F( |
661 LayerTreeHostCopyRequestTestLostOutputSurface); | 661 LayerTreeHostCopyRequestTestLostOutputSurface); |
662 | 662 |
663 class LayerTreeHostCopyRequestTestCountTextures | 663 class LayerTreeHostCopyRequestTestCountTextures |
664 : public LayerTreeHostCopyRequestTest { | 664 : public LayerTreeHostCopyRequestTest { |
665 protected: | 665 protected: |
666 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { | 666 scoped_ptr<FakeOutputSurface> CreateFakeOutputSurface() override { |
667 context_provider_ = TestContextProvider::Create(); | 667 context_provider_ = TestContextProvider::Create(); |
668 return FakeOutputSurface::Create3d(context_provider_); | 668 return FakeOutputSurface::Create3d(context_provider_); |
669 } | 669 } |
670 | 670 |
671 void SetupTree() override { | 671 void SetupTree() override { |
672 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 672 client_.set_fill_with_nonsolid_color(true); |
| 673 |
| 674 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
673 root_->SetBounds(gfx::Size(20, 20)); | 675 root_->SetBounds(gfx::Size(20, 20)); |
674 | 676 |
675 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 677 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
676 copy_layer_->SetBounds(gfx::Size(10, 10)); | 678 copy_layer_->SetBounds(gfx::Size(10, 10)); |
677 root_->AddChild(copy_layer_); | 679 root_->AddChild(copy_layer_); |
678 | 680 |
679 layer_tree_host()->SetRootLayer(root_); | 681 layer_tree_host()->SetRootLayer(root_); |
680 LayerTreeHostCopyRequestTest::SetupTree(); | 682 LayerTreeHostCopyRequestTest::SetupTree(); |
681 } | 683 } |
682 | 684 |
683 void BeginTest() override { | 685 void BeginTest() override { |
684 num_textures_without_readback_ = 0; | 686 num_textures_without_readback_ = 0; |
685 num_textures_with_readback_ = 0; | 687 num_textures_with_readback_ = 0; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
721 } | 723 } |
722 } | 724 } |
723 | 725 |
724 virtual void DoEndTest() { EndTest(); } | 726 virtual void DoEndTest() { EndTest(); } |
725 | 727 |
726 scoped_refptr<TestContextProvider> context_provider_; | 728 scoped_refptr<TestContextProvider> context_provider_; |
727 size_t num_textures_without_readback_; | 729 size_t num_textures_without_readback_; |
728 size_t num_textures_with_readback_; | 730 size_t num_textures_with_readback_; |
729 unsigned waited_sync_point_after_readback_; | 731 unsigned waited_sync_point_after_readback_; |
730 FakeContentLayerClient client_; | 732 FakeContentLayerClient client_; |
731 scoped_refptr<FakeContentLayer> root_; | 733 scoped_refptr<FakePictureLayer> root_; |
732 scoped_refptr<FakeContentLayer> copy_layer_; | 734 scoped_refptr<FakePictureLayer> copy_layer_; |
733 }; | 735 }; |
734 | 736 |
735 class LayerTreeHostCopyRequestTestCreatesTexture | 737 class LayerTreeHostCopyRequestTestCreatesTexture |
736 : public LayerTreeHostCopyRequestTestCountTextures { | 738 : public LayerTreeHostCopyRequestTestCountTextures { |
737 protected: | 739 protected: |
738 void RequestCopy(Layer* layer) override { | 740 void RequestCopy(Layer* layer) override { |
739 // Request a normal texture copy. This should create a new texture. | 741 // Request a normal texture copy. This should create a new texture. |
740 copy_layer_->RequestCopyOfOutput( | 742 copy_layer_->RequestCopyOfOutput( |
741 CopyOutputRequest::CreateRequest(base::Bind( | 743 CopyOutputRequest::CreateRequest(base::Bind( |
742 &LayerTreeHostCopyRequestTestCreatesTexture::CopyOutputCallback, | 744 &LayerTreeHostCopyRequestTestCreatesTexture::CopyOutputCallback, |
(...skipping 13 matching lines...) Expand all Loading... |
756 } | 758 } |
757 | 759 |
758 void AfterTest() override { | 760 void AfterTest() override { |
759 // No sync point was needed. | 761 // No sync point was needed. |
760 EXPECT_EQ(0u, waited_sync_point_after_readback_); | 762 EXPECT_EQ(0u, waited_sync_point_after_readback_); |
761 // Except the copy to have made another texture. | 763 // Except the copy to have made another texture. |
762 EXPECT_EQ(num_textures_without_readback_ + 1, num_textures_with_readback_); | 764 EXPECT_EQ(num_textures_without_readback_ + 1, num_textures_with_readback_); |
763 } | 765 } |
764 }; | 766 }; |
765 | 767 |
766 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 768 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F( |
767 LayerTreeHostCopyRequestTestCreatesTexture); | 769 LayerTreeHostCopyRequestTestCreatesTexture); |
768 | 770 |
769 class LayerTreeHostCopyRequestTestProvideTexture | 771 class LayerTreeHostCopyRequestTestProvideTexture |
770 : public LayerTreeHostCopyRequestTestCountTextures { | 772 : public LayerTreeHostCopyRequestTestCountTextures { |
771 protected: | 773 protected: |
772 void BeginTest() override { | 774 void BeginTest() override { |
773 external_context_provider_ = TestContextProvider::Create(); | 775 external_context_provider_ = TestContextProvider::Create(); |
774 EXPECT_TRUE(external_context_provider_->BindToCurrentThread()); | 776 EXPECT_TRUE(external_context_provider_->BindToCurrentThread()); |
775 LayerTreeHostCopyRequestTestCountTextures::BeginTest(); | 777 LayerTreeHostCopyRequestTestCountTextures::BeginTest(); |
776 } | 778 } |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 // TextureMailbox. | 811 // TextureMailbox. |
810 EXPECT_EQ(sync_point_, waited_sync_point_after_readback_); | 812 EXPECT_EQ(sync_point_, waited_sync_point_after_readback_); |
811 // Except the copy to have *not* made another texture. | 813 // Except the copy to have *not* made another texture. |
812 EXPECT_EQ(num_textures_without_readback_, num_textures_with_readback_); | 814 EXPECT_EQ(num_textures_without_readback_, num_textures_with_readback_); |
813 } | 815 } |
814 | 816 |
815 scoped_refptr<TestContextProvider> external_context_provider_; | 817 scoped_refptr<TestContextProvider> external_context_provider_; |
816 unsigned sync_point_; | 818 unsigned sync_point_; |
817 }; | 819 }; |
818 | 820 |
819 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_NOIMPL_TEST_F( | 821 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_IMPL_TEST_F( |
820 LayerTreeHostCopyRequestTestProvideTexture); | 822 LayerTreeHostCopyRequestTestProvideTexture); |
821 | 823 |
822 class LayerTreeHostCopyRequestTestDestroyBeforeCopy | 824 class LayerTreeHostCopyRequestTestDestroyBeforeCopy |
823 : public LayerTreeHostCopyRequestTest { | 825 : public LayerTreeHostCopyRequestTest { |
824 protected: | 826 protected: |
825 void SetupTree() override { | 827 void SetupTree() override { |
826 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 828 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
827 root_->SetBounds(gfx::Size(20, 20)); | 829 root_->SetBounds(gfx::Size(20, 20)); |
828 | 830 |
829 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 831 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
830 copy_layer_->SetBounds(gfx::Size(10, 10)); | 832 copy_layer_->SetBounds(gfx::Size(10, 10)); |
831 root_->AddChild(copy_layer_); | 833 root_->AddChild(copy_layer_); |
832 | 834 |
833 layer_tree_host()->SetRootLayer(root_); | 835 layer_tree_host()->SetRootLayer(root_); |
834 LayerTreeHostCopyRequestTest::SetupTree(); | 836 LayerTreeHostCopyRequestTest::SetupTree(); |
835 } | 837 } |
836 | 838 |
837 void BeginTest() override { | 839 void BeginTest() override { |
838 callback_count_ = 0; | 840 callback_count_ = 0; |
839 PostSetNeedsCommitToMainThread(); | 841 PostSetNeedsCommitToMainThread(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
882 EXPECT_EQ(1, callback_count_); | 884 EXPECT_EQ(1, callback_count_); |
883 // We should not have crashed. | 885 // We should not have crashed. |
884 EndTest(); | 886 EndTest(); |
885 } | 887 } |
886 } | 888 } |
887 | 889 |
888 void AfterTest() override {} | 890 void AfterTest() override {} |
889 | 891 |
890 int callback_count_; | 892 int callback_count_; |
891 FakeContentLayerClient client_; | 893 FakeContentLayerClient client_; |
892 scoped_refptr<FakeContentLayer> root_; | 894 scoped_refptr<FakePictureLayer> root_; |
893 scoped_refptr<FakeContentLayer> copy_layer_; | 895 scoped_refptr<FakePictureLayer> copy_layer_; |
894 }; | 896 }; |
895 | 897 |
896 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 898 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
897 LayerTreeHostCopyRequestTestDestroyBeforeCopy); | 899 LayerTreeHostCopyRequestTestDestroyBeforeCopy); |
898 | 900 |
899 class LayerTreeHostCopyRequestTestShutdownBeforeCopy | 901 class LayerTreeHostCopyRequestTestShutdownBeforeCopy |
900 : public LayerTreeHostCopyRequestTest { | 902 : public LayerTreeHostCopyRequestTest { |
901 protected: | 903 protected: |
902 void SetupTree() override { | 904 void SetupTree() override { |
903 root_ = FakeContentLayer::Create(layer_settings(), &client_); | 905 root_ = FakePictureLayer::Create(layer_settings(), &client_); |
904 root_->SetBounds(gfx::Size(20, 20)); | 906 root_->SetBounds(gfx::Size(20, 20)); |
905 | 907 |
906 copy_layer_ = FakeContentLayer::Create(layer_settings(), &client_); | 908 copy_layer_ = FakePictureLayer::Create(layer_settings(), &client_); |
907 copy_layer_->SetBounds(gfx::Size(10, 10)); | 909 copy_layer_->SetBounds(gfx::Size(10, 10)); |
908 root_->AddChild(copy_layer_); | 910 root_->AddChild(copy_layer_); |
909 | 911 |
910 layer_tree_host()->SetRootLayer(root_); | 912 layer_tree_host()->SetRootLayer(root_); |
911 LayerTreeHostCopyRequestTest::SetupTree(); | 913 LayerTreeHostCopyRequestTest::SetupTree(); |
912 } | 914 } |
913 | 915 |
914 void BeginTest() override { | 916 void BeginTest() override { |
915 callback_count_ = 0; | 917 callback_count_ = 0; |
916 PostSetNeedsCommitToMainThread(); | 918 PostSetNeedsCommitToMainThread(); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
953 base::Bind(&LayerTreeHostCopyRequestTestShutdownBeforeCopy::EndTest, | 955 base::Bind(&LayerTreeHostCopyRequestTestShutdownBeforeCopy::EndTest, |
954 base::Unretained(this))); | 956 base::Unretained(this))); |
955 break; | 957 break; |
956 } | 958 } |
957 } | 959 } |
958 | 960 |
959 void AfterTest() override { EXPECT_EQ(1, callback_count_); } | 961 void AfterTest() override { EXPECT_EQ(1, callback_count_); } |
960 | 962 |
961 int callback_count_; | 963 int callback_count_; |
962 FakeContentLayerClient client_; | 964 FakeContentLayerClient client_; |
963 scoped_refptr<FakeContentLayer> root_; | 965 scoped_refptr<FakePictureLayer> root_; |
964 scoped_refptr<FakeContentLayer> copy_layer_; | 966 scoped_refptr<FakePictureLayer> copy_layer_; |
965 }; | 967 }; |
966 | 968 |
967 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 969 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
968 LayerTreeHostCopyRequestTestShutdownBeforeCopy); | 970 LayerTreeHostCopyRequestTestShutdownBeforeCopy); |
969 | 971 |
970 class LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest | 972 class LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest |
971 : public LayerTreeHostCopyRequestTest { | 973 : public LayerTreeHostCopyRequestTest { |
972 protected: | 974 protected: |
973 void SetupTree() override { | 975 void SetupTree() override { |
974 scoped_refptr<FakeContentLayer> root = | 976 scoped_refptr<FakePictureLayer> root = |
975 FakeContentLayer::Create(layer_settings(), &client_); | 977 FakePictureLayer::Create(layer_settings(), &client_); |
976 root->SetBounds(gfx::Size(20, 20)); | 978 root->SetBounds(gfx::Size(20, 20)); |
977 | 979 |
978 child_ = FakeContentLayer::Create(layer_settings(), &client_); | 980 child_ = FakePictureLayer::Create(layer_settings(), &client_); |
979 child_->SetBounds(gfx::Size(10, 10)); | 981 child_->SetBounds(gfx::Size(10, 10)); |
980 root->AddChild(child_); | 982 root->AddChild(child_); |
981 child_->SetHideLayerAndSubtree(true); | 983 child_->SetHideLayerAndSubtree(true); |
982 | 984 |
983 layer_tree_host()->SetRootLayer(root); | 985 layer_tree_host()->SetRootLayer(root); |
984 LayerTreeHostCopyRequestTest::SetupTree(); | 986 LayerTreeHostCopyRequestTest::SetupTree(); |
985 } | 987 } |
986 | 988 |
987 void BeginTest() override { | 989 void BeginTest() override { |
988 num_draws_ = 0; | 990 num_draws_ = 0; |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 TryEndTest(); | 1069 TryEndTest(); |
1068 } | 1070 } |
1069 | 1071 |
1070 void TryEndTest() { | 1072 void TryEndTest() { |
1071 if (draw_happened_ && copy_happened_) | 1073 if (draw_happened_ && copy_happened_) |
1072 EndTest(); | 1074 EndTest(); |
1073 } | 1075 } |
1074 | 1076 |
1075 void AfterTest() override {} | 1077 void AfterTest() override {} |
1076 | 1078 |
1077 scoped_refptr<FakeContentLayer> child_; | 1079 scoped_refptr<FakePictureLayer> child_; |
1078 FakeContentLayerClient client_; | 1080 FakeContentLayerClient client_; |
1079 int num_draws_; | 1081 int num_draws_; |
1080 bool copy_happened_; | 1082 bool copy_happened_; |
1081 bool draw_happened_; | 1083 bool draw_happened_; |
1082 }; | 1084 }; |
1083 | 1085 |
1084 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( | 1086 SINGLE_AND_MULTI_THREAD_DIRECT_RENDERER_TEST_F( |
1085 LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest); | 1087 LayerTreeHostCopyRequestTestMultipleDrawsHiddenCopyRequest); |
1086 | 1088 |
1087 } // namespace | 1089 } // namespace |
1088 } // namespace cc | 1090 } // namespace cc |
OLD | NEW |