// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ash/wm/visibility_controller.h" #include "ash/test/ash_test_base.h" #include "ui/aura/test/test_window_delegate.h" #include "ui/aura/test/test_windows.h" #include "ui/aura/window.h" #include "ui/compositor/layer.h" #include "ui/compositor/layer_animator.h" namespace ash { namespace internal { typedef test::AshTestBase VisibilityControllerTest; // Hiding a window in an animatable container should not hide the window's layer // immediately. TEST_F(VisibilityControllerTest, AnimateHideDoesntHideWindowLayer) { // We cannot disable animations for this test. ui::LayerAnimator::set_disable_animations_for_test(false); scoped_ptr container( aura::test::CreateTestWindowWithId(-1, NULL)); SetChildWindowVisibilityChangesAnimated(container.get()); aura::test::TestWindowDelegate d; scoped_ptr animatable( aura::test::CreateTestWindowWithDelegate( &d, -2, gfx::Rect(0, 0, 50, 50), container.get())); scoped_ptr non_animatable( aura::test::CreateTestWindowWithDelegateAndType( &d, aura::client::WINDOW_TYPE_CONTROL, -3, gfx::Rect(51, 51, 50, 50), container.get())); EXPECT_TRUE(animatable->IsVisible()); EXPECT_TRUE(animatable->layer()->visible()); animatable->Hide(); EXPECT_FALSE(animatable->IsVisible()); EXPECT_TRUE(animatable->layer()->visible()); EXPECT_TRUE(non_animatable->IsVisible()); EXPECT_TRUE(non_animatable->layer()->visible()); non_animatable->Hide(); EXPECT_FALSE(non_animatable->IsVisible()); EXPECT_FALSE(non_animatable->layer()->visible()); } } // namespace internal } // namespace ash