Index: ash/accelerators/accelerator_controller_unittest.cc |
diff --git a/ash/accelerators/accelerator_controller_unittest.cc b/ash/accelerators/accelerator_controller_unittest.cc |
index 4d8c8ff3e9d64d0f4fbb80461484bddd96e58dd5..e5c9f6c98c0b7144389872824ccbdb98bccde60d 100644 |
--- a/ash/accelerators/accelerator_controller_unittest.cc |
+++ b/ash/accelerators/accelerator_controller_unittest.cc |
@@ -1020,5 +1020,147 @@ TEST_F(AcceleratorControllerTest, ReservedAccelerators) { |
ui::Accelerator(ui::VKEY_A, ui::EF_NONE))); |
} |
+TEST_F(AcceleratorControllerTest, DisallowedAtModalWindow) { |
+ std::set<AcceleratorAction> allActions; |
+ for (size_t i = 0 ; i < kAcceleratorDataLength; ++i) |
+ allActions.insert(kAcceleratorData[i].action); |
+ std::set<AcceleratorAction> actionsAllowedAtModalWindow; |
+ for (size_t k = 0 ; k < kActionsAllowedAtModalWindowLength; ++k) |
+ actionsAllowedAtModalWindow.insert(kActionsAllowedAtModalWindow[k]); |
+ for (std::set<AcceleratorAction>::const_iterator it = |
+ actionsAllowedAtModalWindow.begin(); |
+ it != actionsAllowedAtModalWindow.end(); ++it) { |
+ EXPECT_FALSE(allActions.find(*it) == allActions.end()) |
+ << " action from kActionsAllowedAtModalWindow" |
+ << " not found in kAcceleratorData. action: " << *it; |
+ } |
+ scoped_ptr<aura::Window> window( |
+ aura::test::CreateTestWindowWithBounds(gfx::Rect(5, 5, 20, 20), NULL)); |
+ const ui::Accelerator dummy; |
+ wm::ActivateWindow(window.get()); |
+ Shell::GetInstance()->SimulateModalWindowOpenForTesting(true); |
+ for (std::set<AcceleratorAction>::const_iterator it = allActions.begin(); |
+ it != allActions.end(); ++it) { |
+ if (actionsAllowedAtModalWindow.find(*it) == |
+ actionsAllowedAtModalWindow.end()) { |
+ EXPECT_TRUE(GetController()->PerformAction(*it, dummy)) |
+ << " for action (disallowed at modal window): " << *it; |
+ } |
+ } |
+#if defined(OS_CHROMEOS) |
+ // Testing of top row (F5-F10) accelerators that should still work |
+ // when a modal window is open |
+ // |
+ // Screenshot |
+ { |
+ EXPECT_TRUE(GetController()->Process( |
+ ui::Accelerator(ui::VKEY_F5, ui::EF_CONTROL_DOWN))); |
+ EXPECT_TRUE(GetController()->Process( |
+ ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); |
+ EXPECT_TRUE(GetController()->Process( |
+ ui::Accelerator(ui::VKEY_F5, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
+ DummyScreenshotDelegate* delegate = new DummyScreenshotDelegate; |
+ GetController()->SetScreenshotDelegate( |
+ scoped_ptr<ScreenshotDelegate>(delegate).Pass()); |
+ EXPECT_EQ(0, delegate->handle_take_screenshot_count()); |
+ EXPECT_TRUE(GetController()->Process( |
+ ui::Accelerator(ui::VKEY_F5, ui::EF_CONTROL_DOWN))); |
+ EXPECT_EQ(1, delegate->handle_take_screenshot_count()); |
+ EXPECT_TRUE(GetController()->Process( |
+ ui::Accelerator(ui::VKEY_PRINT, ui::EF_NONE))); |
+ EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
+ EXPECT_TRUE(GetController()->Process( |
+ ui::Accelerator(ui::VKEY_F5, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN))); |
+ EXPECT_EQ(2, delegate->handle_take_screenshot_count()); |
+ } |
+ // Brightness |
+ const ui::Accelerator f6(ui::VKEY_F6, ui::EF_NONE); |
+ const ui::Accelerator f7(ui::VKEY_F7, ui::EF_NONE); |
+ { |
+ EXPECT_FALSE(GetController()->Process(f6)); |
+ EXPECT_FALSE(GetController()->Process(f7)); |
+ DummyBrightnessControlDelegate* delegate = |
+ new DummyBrightnessControlDelegate(true); |
+ GetController()->SetBrightnessControlDelegate( |
+ scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
+ EXPECT_FALSE(GetController()->Process(f6)); |
+ EXPECT_FALSE(GetController()->Process(f7)); |
+ } |
+ EnableInternalDisplay(); |
+ { |
+ EXPECT_FALSE(GetController()->Process(f6)); |
+ EXPECT_FALSE(GetController()->Process(f7)); |
+ DummyBrightnessControlDelegate* delegate = |
+ new DummyBrightnessControlDelegate(false); |
+ GetController()->SetBrightnessControlDelegate( |
+ scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
+ EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
+ EXPECT_FALSE(GetController()->Process(f6)); |
+ EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
+ EXPECT_EQ(f6, delegate->last_accelerator()); |
+ EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
+ EXPECT_FALSE(GetController()->Process(f7)); |
+ EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
+ EXPECT_EQ(f7, delegate->last_accelerator()); |
+ } |
+ { |
+ DummyBrightnessControlDelegate* delegate = |
+ new DummyBrightnessControlDelegate(true); |
+ GetController()->SetBrightnessControlDelegate( |
+ scoped_ptr<BrightnessControlDelegate>(delegate).Pass()); |
+ EXPECT_EQ(0, delegate->handle_brightness_down_count()); |
+ EXPECT_TRUE(GetController()->Process(f6)); |
+ EXPECT_EQ(1, delegate->handle_brightness_down_count()); |
+ EXPECT_EQ(f6, delegate->last_accelerator()); |
+ EXPECT_EQ(0, delegate->handle_brightness_up_count()); |
+ EXPECT_TRUE(GetController()->Process(f7)); |
+ EXPECT_EQ(1, delegate->handle_brightness_up_count()); |
+ EXPECT_EQ(f7, delegate->last_accelerator()); |
+ } |
+ // Volume |
+ const ui::Accelerator f8(ui::VKEY_F8, ui::EF_NONE); |
+ const ui::Accelerator f9(ui::VKEY_F9, ui::EF_NONE); |
+ const ui::Accelerator f10(ui::VKEY_F10, ui::EF_NONE); |
+ { |
+ EXPECT_TRUE(GetController()->Process(f8)); |
+ EXPECT_TRUE(GetController()->Process(f9)); |
+ EXPECT_TRUE(GetController()->Process(f10)); |
+ DummyVolumeControlDelegate* delegate = |
+ new DummyVolumeControlDelegate(false); |
+ ash::Shell::GetInstance()->tray_delegate()->SetVolumeControlDelegate( |
+ scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
+ EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
+ EXPECT_FALSE(GetController()->Process(f8)); |
+ EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
+ EXPECT_EQ(f8, delegate->last_accelerator()); |
+ EXPECT_EQ(0, delegate->handle_volume_down_count()); |
+ EXPECT_FALSE(GetController()->Process(f9)); |
+ EXPECT_EQ(1, delegate->handle_volume_down_count()); |
+ EXPECT_EQ(f9, delegate->last_accelerator()); |
+ EXPECT_EQ(0, delegate->handle_volume_up_count()); |
+ EXPECT_FALSE(GetController()->Process(f10)); |
+ EXPECT_EQ(1, delegate->handle_volume_up_count()); |
+ EXPECT_EQ(f10, delegate->last_accelerator()); |
+ } |
+ { |
+ DummyVolumeControlDelegate* delegate = new DummyVolumeControlDelegate(true); |
+ ash::Shell::GetInstance()->tray_delegate()->SetVolumeControlDelegate( |
+ scoped_ptr<VolumeControlDelegate>(delegate).Pass()); |
+ EXPECT_EQ(0, delegate->handle_volume_mute_count()); |
+ EXPECT_TRUE(GetController()->Process(f8)); |
+ EXPECT_EQ(1, delegate->handle_volume_mute_count()); |
+ EXPECT_EQ(f8, delegate->last_accelerator()); |
+ EXPECT_EQ(0, delegate->handle_volume_down_count()); |
+ EXPECT_TRUE(GetController()->Process(f9)); |
+ EXPECT_EQ(1, delegate->handle_volume_down_count()); |
+ EXPECT_EQ(f9, delegate->last_accelerator()); |
+ EXPECT_EQ(0, delegate->handle_volume_up_count()); |
+ EXPECT_TRUE(GetController()->Process(f10)); |
+ EXPECT_EQ(1, delegate->handle_volume_up_count()); |
+ EXPECT_EQ(f10, delegate->last_accelerator()); |
+ } |
+#endif |
+} |
+ |
} // namespace test |
} // namespace ash |