| Index: ui/aura_shell/shell_accelerator_controller_unittest.cc
|
| diff --git a/ui/aura_shell/shell_accelerator_controller_unittest.cc b/ui/aura_shell/shell_accelerator_controller_unittest.cc
|
| index d0d4d73a6db99289137094274012763b614de8c0..dac177adc760fe8cefe5a4c940379e3240a643bd 100644
|
| --- a/ui/aura_shell/shell_accelerator_controller_unittest.cc
|
| +++ b/ui/aura_shell/shell_accelerator_controller_unittest.cc
|
| @@ -2,8 +2,12 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "ui/aura/test/test_window_delegate.h"
|
| +#include "ui/aura/test/test_windows.h"
|
| +#include "ui/aura/window.h"
|
| #include "ui/aura_shell/shell.h"
|
| #include "ui/aura_shell/shell_accelerator_controller.h"
|
| +#include "ui/aura_shell/shell_window_ids.h"
|
| #include "ui/aura_shell/test/aura_shell_test_base.h"
|
|
|
| namespace aura_shell {
|
| @@ -165,5 +169,115 @@ TEST_F(ShellAcceleratorControllerTest, GlobalAccelerators) {
|
| #endif
|
| }
|
|
|
| +TEST_F(ShellAcceleratorControllerTest, HandleCycleWindow) {
|
| + aura::Window* default_container =
|
| + aura_shell::Shell::GetInstance()->GetContainer(
|
| + internal::kShellWindowId_DefaultContainer);
|
| + aura::Window* window0 = aura::test::CreateTestWindowWithDelegate(
|
| + new aura::test::TestWindowDelegate,
|
| + -1,
|
| + gfx::Rect(),
|
| + default_container);
|
| + aura::Window* window1 = aura::test::CreateTestWindowWithDelegate(
|
| + new aura::test::TestWindowDelegate,
|
| + -1,
|
| + gfx::Rect(),
|
| + default_container);
|
| + aura::Window* window2 = aura::test::CreateTestWindowWithDelegate(
|
| + new aura::test::TestWindowDelegate,
|
| + -1,
|
| + gfx::Rect(),
|
| + default_container);
|
| + window0->Activate();
|
| + EXPECT_TRUE(window0->IsActive());
|
| +
|
| + ui::Accelerator cycle_forward(ui::VKEY_TAB, false, false, true);
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_TRUE(window1->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_TRUE(window2->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_TRUE(window0->IsActive());
|
| +
|
| + ui::Accelerator cycle_backward(ui::VKEY_TAB, true, false, true);
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| + EXPECT_TRUE(window2->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| + EXPECT_TRUE(window1->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| + EXPECT_TRUE(window0->IsActive());
|
| +
|
| + aura::Window* modal_container =
|
| + aura_shell::Shell::GetInstance()->GetContainer(
|
| + internal::kShellWindowId_AlwaysOnTopContainer);
|
| + aura::Window* modal_window = aura::test::CreateTestWindowWithDelegate(
|
| + new aura::test::TestWindowDelegate,
|
| + -1,
|
| + gfx::Rect(),
|
| + modal_container);
|
| +
|
| + // When the modal window is active, cycling window does not take effect.
|
| + modal_window->Activate();
|
| + EXPECT_TRUE(modal_window->IsActive());
|
| + EXPECT_FALSE(GetController()->Process(cycle_forward));
|
| + EXPECT_TRUE(modal_window->IsActive());
|
| + EXPECT_FALSE(window0->IsActive());
|
| + EXPECT_FALSE(window1->IsActive());
|
| + EXPECT_FALSE(window2->IsActive());
|
| + EXPECT_FALSE(GetController()->Process(cycle_backward));
|
| + EXPECT_TRUE(modal_window->IsActive());
|
| + EXPECT_FALSE(window0->IsActive());
|
| + EXPECT_FALSE(window1->IsActive());
|
| + EXPECT_FALSE(window2->IsActive());
|
| +
|
| + // The modal window is not activated by cycling window.
|
| + window0->Activate();
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_FALSE(modal_window->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_FALSE(modal_window->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_FALSE(modal_window->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| + EXPECT_FALSE(modal_window->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| + EXPECT_FALSE(modal_window->IsActive());
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| + EXPECT_FALSE(modal_window->IsActive());
|
| +
|
| + // When a screen lock window is visible, cycling window does not take effect.
|
| + aura::Window* lock_screen_container =
|
| + aura_shell::Shell::GetInstance()->GetContainer(
|
| + internal::kShellWindowId_LockScreenContainer);
|
| + aura::Window* lock_screen_window = aura::test::CreateTestWindowWithDelegate(
|
| + new aura::test::TestWindowDelegate,
|
| + -1,
|
| + gfx::Rect(),
|
| + lock_screen_container);
|
| +
|
| + lock_screen_window->Show();
|
| + EXPECT_FALSE(GetController()->Process(cycle_forward));
|
| + EXPECT_FALSE(GetController()->Process(cycle_backward));
|
| + lock_screen_window->Hide();
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| +
|
| + aura::Window* lock_modal_container =
|
| + aura_shell::Shell::GetInstance()->GetContainer(
|
| + internal::kShellWindowId_LockModalContainer);
|
| + aura::Window* lock_modal_window = aura::test::CreateTestWindowWithDelegate(
|
| + new aura::test::TestWindowDelegate,
|
| + -1,
|
| + gfx::Rect(),
|
| + lock_modal_container);
|
| +
|
| + lock_modal_window->Show();
|
| + EXPECT_FALSE(GetController()->Process(cycle_forward));
|
| + EXPECT_FALSE(GetController()->Process(cycle_backward));
|
| + lock_modal_window->Hide();
|
| + EXPECT_TRUE(GetController()->Process(cycle_forward));
|
| + EXPECT_TRUE(GetController()->Process(cycle_backward));
|
| +}
|
| +
|
| } // namespace test
|
| } // namespace aura_shell
|
|
|