summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-27 21:27:50 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-27 21:27:50 +0000
commit5e4ee8636457de2a384cdfb27f40185949389273 (patch)
tree10a787329416c10bb6d7d62ce33c5c9620718a82
parent13aec6c49895d337eff5119622bdff814b0b4200 (diff)
downloadchromium_src-5e4ee8636457de2a384cdfb27f40185949389273.zip
chromium_src-5e4ee8636457de2a384cdfb27f40185949389273.tar.gz
chromium_src-5e4ee8636457de2a384cdfb27f40185949389273.tar.bz2
Fix visibility on WebLayer
A change in the UI code exposed this bug where we were not setting the opacity properly on the web layer in certain cases. BUG=None TEST=chrome/aura Review URL: http://codereview.chromium.org/8400014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107627 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ui/gfx/compositor/layer.cc8
-rw-r--r--ui/gfx/compositor/layer_unittest.cc14
2 files changed, 18 insertions, 4 deletions
diff --git a/ui/gfx/compositor/layer.cc b/ui/gfx/compositor/layer.cc
index 2868f4d..a075137 100644
--- a/ui/gfx/compositor/layer.cc
+++ b/ui/gfx/compositor/layer.cc
@@ -186,6 +186,10 @@ void Layer::SetVisible(bool visible) {
bool was_drawn = IsDrawn();
visible_ = visible;
+#if defined(USE_WEBKIT_COMPOSITOR)
+ // TODO(piman): Expose a visibility flag on WebLayer.
+ web_layer_.setOpacity(visible_ ? opacity_ : 0.f);
+#endif
bool is_drawn = IsDrawn();
if (was_drawn == is_drawn)
return;
@@ -193,10 +197,6 @@ void Layer::SetVisible(bool visible) {
if (!is_drawn)
DropTextures();
SetNeedsToRecomputeHole();
-#if defined(USE_WEBKIT_COMPOSITOR)
- // TODO(piman): Expose a visibility flag on WebLayer.
- web_layer_.setOpacity(visible_ ? opacity_ : 0.f);
-#endif
}
bool Layer::IsDrawn() const {
diff --git a/ui/gfx/compositor/layer_unittest.cc b/ui/gfx/compositor/layer_unittest.cc
index ae63345..a5e64feb 100644
--- a/ui/gfx/compositor/layer_unittest.cc
+++ b/ui/gfx/compositor/layer_unittest.cc
@@ -867,6 +867,11 @@ TEST_F(LayerWithNullDelegateTest, Visibility) {
EXPECT_TRUE(l1->IsDrawn());
EXPECT_TRUE(l2->IsDrawn());
EXPECT_TRUE(l3->IsDrawn());
+#if defined(USE_WEBKIT_COMPOSITOR)
+ EXPECT_EQ(1.f, l1->web_layer().opacity());
+ EXPECT_EQ(1.f, l2->web_layer().opacity());
+ EXPECT_EQ(1.f, l3->web_layer().opacity());
+#endif
compositor()->SetRootLayer(l1.get());
@@ -876,16 +881,25 @@ TEST_F(LayerWithNullDelegateTest, Visibility) {
EXPECT_FALSE(l1->IsDrawn());
EXPECT_FALSE(l2->IsDrawn());
EXPECT_FALSE(l3->IsDrawn());
+#if defined(USE_WEBKIT_COMPOSITOR)
+ EXPECT_EQ(0.f, l1->web_layer().opacity());
+#endif
l3->SetVisible(false);
EXPECT_FALSE(l1->IsDrawn());
EXPECT_FALSE(l2->IsDrawn());
EXPECT_FALSE(l3->IsDrawn());
+#if defined(USE_WEBKIT_COMPOSITOR)
+ EXPECT_EQ(0.f, l3->web_layer().opacity());
+#endif
l1->SetVisible(true);
EXPECT_TRUE(l1->IsDrawn());
EXPECT_TRUE(l2->IsDrawn());
EXPECT_FALSE(l3->IsDrawn());
+#if defined(USE_WEBKIT_COMPOSITOR)
+ EXPECT_EQ(1.f, l1->web_layer().opacity());
+#endif
}
} // namespace ui