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

Unified Diff: ui/views/focus/focus_manager_unittest.cc

Issue 9402018: Experimental Extension Keybinding (first cut). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 10 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
« no previous file with comments | « ui/views/focus/focus_manager.cc ('k') | ui/views/view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
« no previous file with comments | « ui/views/focus/focus_manager.cc ('k') | ui/views/view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698