| Index: ui/views/focus/focus_manager_unittest.cc
|
| ===================================================================
|
| --- ui/views/focus/focus_manager_unittest.cc (revision 123221)
|
| +++ ui/views/focus/focus_manager_unittest.cc (working copy)
|
| @@ -1,4 +1,4 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| +// 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.
|
|
|
| @@ -211,7 +211,7 @@
|
| private:
|
| int accelerator_count_; // number of times that the accelerator is activated
|
| bool process_accelerator_; // return value of AcceleratorPressed
|
| - bool can_handle_accelerators_; // return value of CanHandleAccelerators
|
| + bool can_handle_accelerators_; // return value of CanHandleAccelerators
|
|
|
| DISALLOW_COPY_AND_ASSIGN(TestAcceleratorTarget);
|
| };
|
| @@ -231,8 +231,12 @@
|
| focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
|
|
| // Register targets.
|
| - focus_manager->RegisterAccelerator(return_accelerator, &return_target);
|
| - focus_manager->RegisterAccelerator(escape_accelerator, &escape_target);
|
| + focus_manager->RegisterAccelerator(return_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &return_target);
|
| + focus_manager->RegisterAccelerator(escape_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &escape_target);
|
|
|
| // Checks if the correct target is registered.
|
| EXPECT_EQ(&return_target,
|
| @@ -253,7 +257,9 @@
|
| // Register another target for the return key.
|
| TestAcceleratorTarget return_target2(true);
|
| EXPECT_EQ(return_target2.accelerator_count(), 0);
|
| - focus_manager->RegisterAccelerator(return_accelerator, &return_target2);
|
| + focus_manager->RegisterAccelerator(return_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &return_target2);
|
| EXPECT_EQ(&return_target2,
|
| focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
|
|
|
| @@ -265,7 +271,9 @@
|
| // Register a target that does not process the accelerator event.
|
| TestAcceleratorTarget return_target3(false);
|
| EXPECT_EQ(return_target3.accelerator_count(), 0);
|
| - focus_manager->RegisterAccelerator(return_accelerator, &return_target3);
|
| + focus_manager->RegisterAccelerator(return_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &return_target3);
|
| EXPECT_EQ(&return_target3,
|
| focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
|
|
|
| @@ -308,6 +316,95 @@
|
| EXPECT_EQ(escape_target.accelerator_count(), 1);
|
| }
|
|
|
| +TEST_F(FocusManagerTest, HighPriorityHandlers) {
|
| + FocusManager* focus_manager = GetFocusManager();
|
| + ui::Accelerator escape_accelerator(ui::VKEY_ESCAPE, false, false, false);
|
| +
|
| + TestAcceleratorTarget escape_target_high(true);
|
| + TestAcceleratorTarget escape_target_normal(true);
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 0);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 0);
|
| + EXPECT_EQ(NULL,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Register high priority target.
|
| + focus_manager->RegisterAccelerator(escape_accelerator,
|
| + ui::AcceleratorManager::kHighPriority,
|
| + &escape_target_high);
|
| + EXPECT_EQ(&escape_target_high,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Hit the escape key.
|
| + EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator));
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 1);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 0);
|
| +
|
| + // Add a normal priority target and make sure it doesn't see the key.
|
| + focus_manager->RegisterAccelerator(escape_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &escape_target_normal);
|
| +
|
| + // Checks if the correct target is registered (same as before, the high
|
| + // priority one).
|
| + EXPECT_EQ(&escape_target_high,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Hit the escape key.
|
| + EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator));
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 2);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 0);
|
| +
|
| + // Unregister the high priority accelerator.
|
| + focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high);
|
| + EXPECT_EQ(&escape_target_normal,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Hit the escape key.
|
| + EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator));
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 2);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 1);
|
| +
|
| + // Add the high priority target back and make sure it starts seeing the key.
|
| + focus_manager->RegisterAccelerator(escape_accelerator,
|
| + ui::AcceleratorManager::kHighPriority,
|
| + &escape_target_high);
|
| + EXPECT_EQ(&escape_target_high,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Hit the escape key.
|
| + EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator));
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 3);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 1);
|
| +
|
| + // Unregister the normal priority accelerator.
|
| + focus_manager->UnregisterAccelerator(
|
| + escape_accelerator, &escape_target_normal);
|
| + EXPECT_EQ(&escape_target_high,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Hit the escape key.
|
| + EXPECT_TRUE(focus_manager->ProcessAccelerator(escape_accelerator));
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 4);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 1);
|
| +
|
| + // Unregister the high priority accelerator.
|
| + focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high);
|
| + EXPECT_EQ(NULL,
|
| + focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
|
| + EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator));
|
| +
|
| + // Hit the escape key (no change, no targets registered).
|
| + EXPECT_FALSE(focus_manager->ProcessAccelerator(escape_accelerator));
|
| + EXPECT_EQ(escape_target_high.accelerator_count(), 4);
|
| + EXPECT_EQ(escape_target_normal.accelerator_count(), 1);
|
| +}
|
| +
|
| TEST_F(FocusManagerTest, CallsEnabledAcceleratorTargetsOnly) {
|
| FocusManager* focus_manager = GetFocusManager();
|
| ui::Accelerator return_accelerator(ui::VKEY_RETURN, false, false, false);
|
| @@ -315,8 +412,12 @@
|
| TestAcceleratorTarget return_target1(true);
|
| TestAcceleratorTarget return_target2(true);
|
|
|
| - focus_manager->RegisterAccelerator(return_accelerator, &return_target1);
|
| - focus_manager->RegisterAccelerator(return_accelerator, &return_target2);
|
| + focus_manager->RegisterAccelerator(return_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &return_target1);
|
| + focus_manager->RegisterAccelerator(return_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &return_target2);
|
| EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
|
| EXPECT_EQ(0, return_target1.accelerator_count());
|
| EXPECT_EQ(1, return_target2.accelerator_count());
|
| @@ -381,7 +482,9 @@
|
| focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
|
|
|
| // Register the target.
|
| - focus_manager->RegisterAccelerator(return_accelerator, &target);
|
| + focus_manager->RegisterAccelerator(return_accelerator,
|
| + ui::AcceleratorManager::kNormalPriority,
|
| + &target);
|
| EXPECT_EQ(&target,
|
| focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
|
|
|
|
|