| 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");
|
|
|