| Index: ui/compositor/layer_unittest.cc
|
| diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc
|
| index d9f5a7a08dbf68dc6e5dcf3d1528975b9df6ab49..ca3c2d6f2b9a4fbdbe25d620be8ec12e91212dc4 100644
|
| --- a/ui/compositor/layer_unittest.cc
|
| +++ b/ui/compositor/layer_unittest.cc
|
| @@ -727,7 +727,7 @@ TEST_F(LayerWithNullDelegateTest, SwitchLayerPreservesCCLayerState) {
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
|
| - EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
|
|
|
| cc::Layer* before_layer = l1->cc_layer_for_testing();
|
| @@ -744,7 +744,7 @@ TEST_F(LayerWithNullDelegateTest, SwitchLayerPreservesCCLayerState) {
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
|
| - EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
|
| EXPECT_FALSE(callback1_run);
|
|
|
| @@ -762,7 +762,7 @@ TEST_F(LayerWithNullDelegateTest, SwitchLayerPreservesCCLayerState) {
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
|
| - EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
|
| EXPECT_TRUE(callback2_run);
|
|
|
| @@ -781,7 +781,7 @@ TEST_F(LayerWithNullDelegateTest, SwitchLayerPreservesCCLayerState) {
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->DrawsContent());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->contents_opaque());
|
| EXPECT_TRUE(l1->cc_layer_for_testing()->force_render_surface());
|
| - EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| EXPECT_EQ(gfx::Size(4, 5), l1->cc_layer_for_testing()->bounds());
|
| EXPECT_FALSE(callback3_run);
|
|
|
| @@ -806,9 +806,9 @@ TEST_F(LayerWithNullDelegateTest, Visibility) {
|
| EXPECT_TRUE(l1->IsDrawn());
|
| EXPECT_TRUE(l2->IsDrawn());
|
| EXPECT_TRUE(l3->IsDrawn());
|
| - EXPECT_FALSE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_FALSE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_NE(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_NE(l2->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_NE(l3->cc_layer_for_testing()->opacity(), 0.f);
|
|
|
| compositor()->SetRootLayer(l1.get());
|
|
|
| @@ -818,25 +818,62 @@ TEST_F(LayerWithNullDelegateTest, Visibility) {
|
| EXPECT_FALSE(l1->IsDrawn());
|
| EXPECT_FALSE(l2->IsDrawn());
|
| EXPECT_FALSE(l3->IsDrawn());
|
| - EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_FALSE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_NE(l2->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_NE(l3->cc_layer_for_testing()->opacity(), 0.f);
|
|
|
| l3->SetVisible(false);
|
| EXPECT_FALSE(l1->IsDrawn());
|
| EXPECT_FALSE(l2->IsDrawn());
|
| EXPECT_FALSE(l3->IsDrawn());
|
| - EXPECT_TRUE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_TRUE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_NE(l2->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_EQ(l3->cc_layer_for_testing()->opacity(), 0.f);
|
|
|
| l1->SetVisible(true);
|
| EXPECT_TRUE(l1->IsDrawn());
|
| EXPECT_TRUE(l2->IsDrawn());
|
| EXPECT_FALSE(l3->IsDrawn());
|
| - EXPECT_FALSE(l1->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_FALSE(l2->cc_layer_for_testing()->hide_layer_and_subtree());
|
| - EXPECT_TRUE(l3->cc_layer_for_testing()->hide_layer_and_subtree());
|
| + EXPECT_NE(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_NE(l2->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_EQ(l3->cc_layer_for_testing()->opacity(), 0.f);
|
| +}
|
| +
|
| +TEST_F(LayerWithNullDelegateTest, CacheOpacityWhenLayerVisibilityChanges) {
|
| + scoped_ptr<Layer> l1(new Layer(LAYER_TEXTURED));
|
| +
|
| + NullLayerDelegate delegate;
|
| + l1->set_delegate(&delegate);
|
| +
|
| + // Initially, the layer should be fully opaque.
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 1.f);
|
| +
|
| + compositor()->SetRootLayer(l1.get());
|
| +
|
| + Draw();
|
| +
|
| + // When a layer is invisble, the corresponding cc_layer should be completely
|
| + // transparent, but the ui layer should store the original opacity of cc
|
| + // layer.
|
| + l1->SetVisible(false);
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_EQ(l1->opacity(), 1.f);
|
| +
|
| + // Any changes to opacity when the layer is invisble is cached by the ui
|
| + // layer and set on the corresponding cc layer only when it becomes visible.
|
| + l1->SetOpacity(0.5f);
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + EXPECT_EQ(l1->opacity(), 0.5f);
|
| + l1->SetVisible(true);
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.5f);
|
| +
|
| + // The original opacity should be restored when invisible layer becomes
|
| + // visible.
|
| + l1->SetOpacity(0.2f);
|
| + l1->SetVisible(false);
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.f);
|
| + l1->SetVisible(true);
|
| + EXPECT_EQ(l1->cc_layer_for_testing()->opacity(), 0.2f);
|
| }
|
|
|
| // Checks that stacking-related methods behave as advertised.
|
|
|