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

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

Issue 838253004: MacViews: Fix duplicate definition of ExtensionKeyBindingRegistry::SetShortcutHandlingSuspended (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@DragBookmarks2
Patch Set: Created 5 years, 11 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
Index: ui/views/focus/focus_manager_unittest.cc
diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc
index 32b8665925646f3f949002e19ba1fa159a7c6548..209bb270ef0582d8c1644cf0583dde5e50e8327c 100644
--- a/ui/views/focus/focus_manager_unittest.cc
+++ b/ui/views/focus/focus_manager_unittest.cc
@@ -12,6 +12,7 @@
#include "ui/aura/client/focus_client.h"
#include "ui/aura/window.h"
#include "ui/base/accelerators/accelerator.h"
+#include "ui/base/accelerators/accelerator_processor.h"
#include "ui/base/ime/dummy_text_input_client.h"
#include "ui/base/ime/text_input_focus_manager.h"
#include "ui/base/ui_base_switches.h"
@@ -188,6 +189,29 @@ class TestAcceleratorTarget : public ui::AcceleratorTarget {
DISALLOW_COPY_AND_ASSIGN(TestAcceleratorTarget);
};
+// Consumes and counts accelerator calls.
+class TestAcceleratorProcessor : public ui::AcceleratorProcessor {
+ public:
+ TestAcceleratorProcessor() : accelerator_count_(0) {}
+
+ int accelerator_count() const { return accelerator_count_; }
+
+ bool ProcessAccelerator(const ui::Accelerator& accelerator) override {
+ ++accelerator_count_;
+ return true;
+ }
+
+ ui::AcceleratorTarget* GetTargetForAccelerator(
+ const ui::Accelerator& accelerator) const override {
+ return nullptr;
+ }
+
+ private:
+ int accelerator_count_; // number of times that the accelerator is activated
+
+ DISALLOW_COPY_AND_ASSIGN(TestAcceleratorProcessor);
+};
+
TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
FocusManager* focus_manager = GetFocusManager();
ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
@@ -197,10 +221,8 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
TestAcceleratorTarget escape_target(true);
EXPECT_EQ(return_target.accelerator_count(), 0);
EXPECT_EQ(escape_target.accelerator_count(), 0);
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator));
// Register targets.
focus_manager->RegisterAccelerator(return_accelerator,
@@ -212,9 +234,9 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
// Checks if the correct target is registered.
EXPECT_EQ(&return_target,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ focus_manager->GetTargetForAccelerator(return_accelerator));
EXPECT_EQ(&escape_target,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ focus_manager->GetTargetForAccelerator(escape_accelerator));
// Hitting the return key.
EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
@@ -233,7 +255,7 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
ui::AcceleratorManager::kNormalPriority,
&return_target2);
EXPECT_EQ(&return_target2,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ focus_manager->GetTargetForAccelerator(return_accelerator));
// Hitting the return key; return_target2 has the priority.
EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
@@ -247,7 +269,7 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
ui::AcceleratorManager::kNormalPriority,
&return_target3);
EXPECT_EQ(&return_target3,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ focus_manager->GetTargetForAccelerator(return_accelerator));
// Hitting the return key.
// Since the event handler of return_target3 returns false, return_target2
@@ -260,7 +282,7 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
// Unregister return_target2.
focus_manager->UnregisterAccelerator(return_accelerator, &return_target2);
EXPECT_EQ(&return_target3,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ focus_manager->GetTargetForAccelerator(return_accelerator));
// Hitting the return key. return_target3 and return_target should be called.
EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
@@ -274,10 +296,8 @@ TEST_F(FocusManagerTest, CallsNormalAcceleratorTarget) {
focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target);
// Now there is no target registered.
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator));
// Hitting the return key and the escape key. Nothing should happen.
EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator));
@@ -296,8 +316,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
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_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator));
// Register high priority target.
@@ -305,7 +324,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
ui::AcceleratorManager::kHighPriority,
&escape_target_high);
EXPECT_EQ(&escape_target_high,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
// Hit the escape key.
@@ -321,7 +340,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
// Checks if the correct target is registered (same as before, the high
// priority one).
EXPECT_EQ(&escape_target_high,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
// Hit the escape key.
@@ -332,7 +351,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
// Unregister the high priority accelerator.
focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high);
EXPECT_EQ(&escape_target_normal,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator));
// Hit the escape key.
@@ -345,7 +364,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
ui::AcceleratorManager::kHighPriority,
&escape_target_high);
EXPECT_EQ(&escape_target_high,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
// Hit the escape key.
@@ -357,7 +376,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
focus_manager->UnregisterAccelerator(
escape_accelerator, &escape_target_normal);
EXPECT_EQ(&escape_target_high,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_TRUE(focus_manager->HasPriorityHandler(escape_accelerator));
// Hit the escape key.
@@ -367,8 +386,7 @@ TEST_F(FocusManagerTest, HighPriorityHandlers) {
// Unregister the high priority accelerator.
focus_manager->UnregisterAccelerator(escape_accelerator, &escape_target_high);
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(escape_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(escape_accelerator));
EXPECT_FALSE(focus_manager->HasPriorityHandler(escape_accelerator));
// Hit the escape key (no change, no targets registered).
@@ -415,6 +433,40 @@ TEST_F(FocusManagerTest, CallsEnabledAcceleratorTargetsOnly) {
EXPECT_EQ(2, return_target2.accelerator_count());
}
+TEST_F(FocusManagerTest, CallsAcceleratorPreProcessor) {
+ FocusManager* focus_manager = GetFocusManager();
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
+ TestAcceleratorTarget return_target(true);
+ focus_manager->RegisterAccelerator(return_accelerator,
+ ui::AcceleratorManager::kNormalPriority,
+ &return_target);
+
+ TestAcceleratorProcessor pre_processor;
+ focus_manager->AddAcceleratorPreProcessor(&pre_processor);
+ EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
+ EXPECT_EQ(1, pre_processor.accelerator_count());
+ EXPECT_EQ(0, return_target.accelerator_count());
+
+ focus_manager->RemoveAcceleratorProcessor(&pre_processor);
+ EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
+ EXPECT_EQ(1, pre_processor.accelerator_count());
+ EXPECT_EQ(1, return_target.accelerator_count());
+}
+
+TEST_F(FocusManagerTest, CallsAcceleratorPostProcessor) {
+ FocusManager* focus_manager = GetFocusManager();
+ ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
+
+ TestAcceleratorProcessor post_processor;
+ focus_manager->AddAcceleratorPostProcessor(&post_processor);
+ EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
+ EXPECT_EQ(1, post_processor.accelerator_count());
+
+ focus_manager->RemoveAcceleratorProcessor(&post_processor);
+ EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator));
+ EXPECT_EQ(1, post_processor.accelerator_count());
+}
+
// Unregisters itself when its accelerator is invoked.
class SelfUnregisteringAcceleratorTarget : public ui::AcceleratorTarget {
public:
@@ -448,21 +500,19 @@ TEST_F(FocusManagerTest, CallsSelfDeletingAcceleratorTarget) {
ui::Accelerator return_accelerator(ui::VKEY_RETURN, ui::EF_NONE);
SelfUnregisteringAcceleratorTarget target(return_accelerator, focus_manager);
EXPECT_EQ(target.accelerator_count(), 0);
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator));
// Register the target.
focus_manager->RegisterAccelerator(return_accelerator,
ui::AcceleratorManager::kNormalPriority,
&target);
EXPECT_EQ(&target,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ focus_manager->GetTargetForAccelerator(return_accelerator));
// Hitting the return key. The target will be unregistered.
EXPECT_TRUE(focus_manager->ProcessAccelerator(return_accelerator));
EXPECT_EQ(target.accelerator_count(), 1);
- EXPECT_EQ(NULL,
- focus_manager->GetCurrentTargetForAccelerator(return_accelerator));
+ EXPECT_EQ(NULL, focus_manager->GetTargetForAccelerator(return_accelerator));
// Hitting the return key again; nothing should happen.
EXPECT_FALSE(focus_manager->ProcessAccelerator(return_accelerator));
@@ -476,9 +526,7 @@ class FocusManagerDtorTest : public FocusManagerTest {
class FocusManagerDtorTracked : public FocusManager {
public:
FocusManagerDtorTracked(Widget* widget, DtorTrackVector* dtor_tracker)
- : FocusManager(widget, NULL /* delegate */),
- dtor_tracker_(dtor_tracker) {
- }
+ : FocusManager(widget), dtor_tracker_(dtor_tracker) {}
~FocusManagerDtorTracked() override {
dtor_tracker_->push_back("FocusManagerDtorTracked");

Powered by Google App Engine
This is Rietveld 408576698