Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(600)

Unified Diff: chrome/browser/ui/ash/ash_keyboard_controller_proxy_unittest.cc

Issue 134133003: Fix VK animation related issues (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: kevers' review Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/ash/ash_keyboard_controller_proxy_unittest.cc
diff --git a/chrome/browser/ui/ash/ash_keyboard_controller_proxy_unittest.cc b/chrome/browser/ui/ash/ash_keyboard_controller_proxy_unittest.cc
index 4f4da622d0a6af17a49ea7ee7c29df5d394037de..159c986b2b0c1b3b813a4d2f79c33168cc37f9db 100644
--- a/chrome/browser/ui/ash/ash_keyboard_controller_proxy_unittest.cc
+++ b/chrome/browser/ui/ash/ash_keyboard_controller_proxy_unittest.cc
@@ -131,7 +131,7 @@ TEST_F(AshKeyboardControllerProxyTest, VirtualKeyboardContainerAnimation) {
// animation starts.
EXPECT_TRUE(keyboard_container->IsVisible());
EXPECT_TRUE(proxy()->GetKeyboardWindow()->IsVisible());
- EXPECT_EQ(0.0, layer->opacity());
+ float show_start_opacity = layer->opacity();
gfx::Transform transform;
transform.Translate(0, proxy()->GetKeyboardWindow()->bounds().height());
EXPECT_EQ(transform, layer->transform());
@@ -139,18 +139,47 @@ TEST_F(AshKeyboardControllerProxyTest, VirtualKeyboardContainerAnimation) {
RunAnimationForLayer(layer);
EXPECT_TRUE(keyboard_container->IsVisible());
EXPECT_TRUE(proxy()->GetKeyboardWindow()->IsVisible());
- EXPECT_EQ(1.0, layer->opacity());
+ float show_end_opacity = layer->opacity();
+ EXPECT_LT(show_start_opacity, show_end_opacity);
EXPECT_EQ(gfx::Transform(), layer->transform());
HideKeyboard(keyboard_container);
- // Keyboard container and window should be visible before hide animation
- // finishes.
- EXPECT_TRUE(keyboard_container->IsVisible());
+ // Keyboard container window is not visible but its layer should keep visible
+ // until hide animation finishes. Otherwise, user can not see hide animation.
+ EXPECT_FALSE(keyboard_container->IsVisible());
+ EXPECT_TRUE(keyboard_container->layer()->visible());
EXPECT_TRUE(proxy()->GetKeyboardWindow()->IsVisible());
+ float hide_start_opacity = layer->opacity();
RunAnimationForLayer(layer);
EXPECT_FALSE(keyboard_container->IsVisible());
+ EXPECT_FALSE(keyboard_container->layer()->visible());
EXPECT_FALSE(proxy()->GetKeyboardWindow()->IsVisible());
- EXPECT_EQ(0.0, layer->opacity());
+ float hide_end_opacity = layer->opacity();
+ EXPECT_GT(hide_start_opacity, hide_end_opacity);
EXPECT_EQ(transform, layer->transform());
}
+
+// Test for crbug.com/333284.
+TEST_F(AshKeyboardControllerProxyTest, VirtualKeyboardContainerShowWhileHide) {
+ // We cannot short-circuit animations for this test.
+ ui::ScopedAnimationDurationScaleMode normal_duration_mode(
+ ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION);
+
+ aura::Window* keyboard_container(controller()->GetContainerWindow());
+ ui::Layer* layer = keyboard_container->layer();
+
+ EXPECT_FALSE(keyboard_container->IsVisible());
+ ShowKeyboard(keyboard_container);
+ RunAnimationForLayer(layer);
+
+ HideKeyboard(keyboard_container);
+ // Before hide animation finishes, show keyboard again.
+ ShowKeyboard(keyboard_container);
+
+ RunAnimationForLayer(layer);
+ EXPECT_TRUE(keyboard_container->IsVisible());
+ EXPECT_TRUE(proxy()->GetKeyboardWindow()->IsVisible());
+ EXPECT_EQ(1.0, layer->opacity());
+ EXPECT_EQ(gfx::Transform(), layer->transform());
+}

Powered by Google App Engine
This is Rietveld 408576698