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 #include "cc/layers/layer.h" | 5 #include "cc/layers/layer.h" |
6 | 6 |
7 #include "cc/animation/keyframed_animation_curve.h" | 7 #include "cc/animation/keyframed_animation_curve.h" |
8 #include "cc/base/math_util.h" | 8 #include "cc/base/math_util.h" |
9 #include "cc/layers/layer_impl.h" | 9 #include "cc/layers/layer_impl.h" |
10 #include "cc/resources/layer_painter.h" | 10 #include "cc/resources/layer_painter.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 namespace { | 37 namespace { |
38 | 38 |
39 class MockLayerTreeHost : public LayerTreeHost { | 39 class MockLayerTreeHost : public LayerTreeHost { |
40 public: | 40 public: |
41 explicit MockLayerTreeHost(LayerTreeHostClient* client) | 41 explicit MockLayerTreeHost(LayerTreeHostClient* client) |
42 : LayerTreeHost(client, LayerTreeSettings()) { | 42 : LayerTreeHost(client, LayerTreeSettings()) { |
43 Initialize(NULL); | 43 Initialize(NULL); |
44 } | 44 } |
45 | 45 |
46 MOCK_METHOD0(SetNeedsCommit, void()); | 46 MOCK_METHOD0(SetNeedsCommit, void()); |
| 47 MOCK_METHOD0(SetNeedsUpdateLayers, void()); |
47 MOCK_METHOD0(SetNeedsFullTreeSync, void()); | 48 MOCK_METHOD0(SetNeedsFullTreeSync, void()); |
48 }; | 49 }; |
49 | 50 |
50 class MockLayerPainter : public LayerPainter { | 51 class MockLayerPainter : public LayerPainter { |
51 public: | 52 public: |
52 virtual void Paint(SkCanvas* canvas, | 53 virtual void Paint(SkCanvas* canvas, |
53 gfx::Rect content_rect, | 54 gfx::Rect content_rect, |
54 gfx::RectF* opaque) OVERRIDE {} | 55 gfx::RectF* opaque) OVERRIDE {} |
55 }; | 56 }; |
56 | 57 |
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
460 EXPECT_EQ(parent_.get(), child3_->RootLayer()); | 461 EXPECT_EQ(parent_.get(), child3_->RootLayer()); |
461 EXPECT_EQ(grand_child3_.get(), child4->RootLayer()); | 462 EXPECT_EQ(grand_child3_.get(), child4->RootLayer()); |
462 EXPECT_EQ(parent_.get(), grand_child1_->RootLayer()); | 463 EXPECT_EQ(parent_.get(), grand_child1_->RootLayer()); |
463 EXPECT_EQ(parent_.get(), grand_child2_->RootLayer()); | 464 EXPECT_EQ(parent_.get(), grand_child2_->RootLayer()); |
464 EXPECT_EQ(grand_child3_.get(), grand_child3_->RootLayer()); | 465 EXPECT_EQ(grand_child3_.get(), grand_child3_->RootLayer()); |
465 } | 466 } |
466 | 467 |
467 TEST_F(LayerTest, CheckSetNeedsDisplayCausesCorrectBehavior) { | 468 TEST_F(LayerTest, CheckSetNeedsDisplayCausesCorrectBehavior) { |
468 // The semantics for SetNeedsDisplay which are tested here: | 469 // The semantics for SetNeedsDisplay which are tested here: |
469 // 1. sets NeedsDisplay flag appropriately. | 470 // 1. sets NeedsDisplay flag appropriately. |
470 // 2. indirectly calls SetNeedsCommit, exactly once for each call to | 471 // 2. indirectly calls SetNeedsUpdate, exactly once for each call to |
471 // SetNeedsDisplay. | 472 // SetNeedsDisplay. |
472 | 473 |
473 scoped_refptr<Layer> test_layer = Layer::Create(); | 474 scoped_refptr<Layer> test_layer = Layer::Create(); |
474 EXPECT_SET_NEEDS_FULL_TREE_SYNC( | 475 EXPECT_SET_NEEDS_FULL_TREE_SYNC( |
475 1, layer_tree_host_->SetRootLayer(test_layer)); | 476 1, layer_tree_host_->SetRootLayer(test_layer)); |
476 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetIsDrawable(true)); | 477 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetIsDrawable(true)); |
477 | 478 |
478 gfx::Size test_bounds = gfx::Size(501, 508); | 479 gfx::Size test_bounds = gfx::Size(501, 508); |
479 | 480 |
480 gfx::RectF dirty1 = gfx::RectF(10.f, 15.f, 1.f, 2.f); | 481 gfx::RectF dirty1 = gfx::RectF(10.f, 15.f, 1.f, 2.f); |
481 gfx::RectF dirty2 = gfx::RectF(20.f, 25.f, 3.f, 4.f); | 482 gfx::RectF dirty2 = gfx::RectF(20.f, 25.f, 3.f, 4.f); |
482 gfx::RectF empty_dirty_rect = gfx::RectF(40.f, 45.f, 0.f, 0.f); | 483 gfx::RectF empty_dirty_rect = gfx::RectF(40.f, 45.f, 0.f, 0.f); |
483 gfx::RectF out_of_bounds_dirty_rect = gfx::RectF(400.f, 405.f, 500.f, 502.f); | 484 gfx::RectF out_of_bounds_dirty_rect = gfx::RectF(400.f, 405.f, 500.f, 502.f); |
484 | 485 |
485 // Before anything, test_layer should not be dirty. | 486 // Before anything, test_layer should not be dirty. |
486 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); | 487 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); |
487 | 488 |
488 // This is just initialization, but SetNeedsCommit behavior is verified anyway | 489 // This is just initialization, but SetNeedsCommit behavior is verified anyway |
489 // to avoid warnings. | 490 // to avoid warnings. |
490 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetBounds(test_bounds)); | 491 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetBounds(test_bounds)); |
491 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); | 492 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); |
492 | 493 |
493 // The real test begins here. | 494 // The real test begins here. |
494 test_layer->ResetNeedsDisplayForTesting(); | 495 test_layer->ResetNeedsDisplayForTesting(); |
495 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); | 496 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); |
496 | 497 |
497 // Case 1: Layer should accept dirty rects that go beyond its bounds. | 498 // Case 1: Layer should accept dirty rects that go beyond its bounds. |
498 test_layer->ResetNeedsDisplayForTesting(); | 499 test_layer->ResetNeedsDisplayForTesting(); |
499 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); | 500 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); |
500 EXPECT_SET_NEEDS_COMMIT( | 501 EXPECT_SET_NEEDS_UPDATE( |
501 1, test_layer->SetNeedsDisplayRect(out_of_bounds_dirty_rect)); | 502 1, test_layer->SetNeedsDisplayRect(out_of_bounds_dirty_rect)); |
502 EXPECT_TRUE(test_layer->NeedsDisplayForTesting()); | 503 EXPECT_TRUE(test_layer->NeedsDisplayForTesting()); |
503 test_layer->ResetNeedsDisplayForTesting(); | 504 test_layer->ResetNeedsDisplayForTesting(); |
504 | 505 |
505 // Case 2: SetNeedsDisplay() without the dirty rect arg. | 506 // Case 2: SetNeedsDisplay() without the dirty rect arg. |
506 test_layer->ResetNeedsDisplayForTesting(); | 507 test_layer->ResetNeedsDisplayForTesting(); |
507 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); | 508 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); |
508 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetNeedsDisplay()); | 509 EXPECT_SET_NEEDS_UPDATE(1, test_layer->SetNeedsDisplay()); |
509 EXPECT_TRUE(test_layer->NeedsDisplayForTesting()); | 510 EXPECT_TRUE(test_layer->NeedsDisplayForTesting()); |
510 test_layer->ResetNeedsDisplayForTesting(); | 511 test_layer->ResetNeedsDisplayForTesting(); |
511 | 512 |
512 // Case 3: SetNeedsDisplay() with a non-drawable layer | 513 // Case 3: SetNeedsDisplay() with a non-drawable layer |
513 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetIsDrawable(false)); | 514 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetIsDrawable(false)); |
514 test_layer->ResetNeedsDisplayForTesting(); | 515 test_layer->ResetNeedsDisplayForTesting(); |
515 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); | 516 EXPECT_FALSE(test_layer->NeedsDisplayForTesting()); |
516 EXPECT_SET_NEEDS_COMMIT(0, test_layer->SetNeedsDisplayRect(dirty1)); | 517 EXPECT_SET_NEEDS_UPDATE(0, test_layer->SetNeedsDisplayRect(dirty1)); |
517 EXPECT_TRUE(test_layer->NeedsDisplayForTesting()); | 518 EXPECT_TRUE(test_layer->NeedsDisplayForTesting()); |
518 } | 519 } |
519 | 520 |
520 TEST_F(LayerTest, CheckPropertyChangeCausesCorrectBehavior) { | 521 TEST_F(LayerTest, CheckPropertyChangeCausesCorrectBehavior) { |
521 scoped_refptr<Layer> test_layer = Layer::Create(); | 522 scoped_refptr<Layer> test_layer = Layer::Create(); |
522 EXPECT_SET_NEEDS_FULL_TREE_SYNC( | 523 EXPECT_SET_NEEDS_FULL_TREE_SYNC( |
523 1, layer_tree_host_->SetRootLayer(test_layer)); | 524 1, layer_tree_host_->SetRootLayer(test_layer)); |
524 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetIsDrawable(true)); | 525 EXPECT_SET_NEEDS_COMMIT(1, test_layer->SetIsDrawable(true)); |
525 | 526 |
526 scoped_refptr<Layer> dummy_layer1 = Layer::Create(); | 527 scoped_refptr<Layer> dummy_layer1 = Layer::Create(); |
(...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1006 << "Flags: " << contents_opaque << ", " << layer_opaque << ", " | 1007 << "Flags: " << contents_opaque << ", " << layer_opaque << ", " |
1007 << host_opaque << "\n"; | 1008 << host_opaque << "\n"; |
1008 } | 1009 } |
1009 } | 1010 } |
1010 } | 1011 } |
1011 } | 1012 } |
1012 } | 1013 } |
1013 | 1014 |
1014 } // namespace | 1015 } // namespace |
1015 } // namespace cc | 1016 } // namespace cc |
OLD | NEW |