OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/views/corewm/focus_controller.h" | 5 #include "ui/views/corewm/focus_controller.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "ui/aura/client/activation_client.h" | 9 #include "ui/aura/client/activation_client.h" |
10 #include "ui/aura/root_window.h" | 10 #include "ui/aura/root_window.h" |
11 #include "ui/aura/test/aura_test_base.h" | 11 #include "ui/aura/test/aura_test_base.h" |
12 #include "ui/aura/test/event_generator.h" | 12 #include "ui/aura/test/event_generator.h" |
13 #include "ui/aura/test/test_window_delegate.h" | 13 #include "ui/aura/test/test_window_delegate.h" |
14 #include "ui/aura/test/test_windows.h" | 14 #include "ui/aura/test/test_windows.h" |
15 #include "ui/aura/window.h" | 15 #include "ui/aura/window.h" |
16 #include "ui/base/events/event_handler.h" | 16 #include "ui/base/events/event_handler.h" |
17 #include "ui/views/corewm/base_focus_rules.h" | |
18 #include "ui/views/corewm/focus_change_event.h" | 17 #include "ui/views/corewm/focus_change_event.h" |
19 | 18 |
20 namespace views { | 19 namespace views { |
21 namespace corewm { | 20 namespace corewm { |
22 | 21 |
23 class FocusEventsTestHandler : public ui::EventHandler, | 22 class FocusEventsTestHandler : public ui::EventHandler, |
24 public aura::WindowObserver { | 23 public aura::WindowObserver { |
25 public: | 24 public: |
26 explicit FocusEventsTestHandler(aura::Window* window) | 25 explicit FocusEventsTestHandler(aura::Window* window) |
27 : window_(window), | 26 : window_(window), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 class TestFocusRules : public BaseFocusRules { | 77 class TestFocusRules : public BaseFocusRules { |
79 public: | 78 public: |
80 TestFocusRules() : focus_restriction_(NULL) {} | 79 TestFocusRules() : focus_restriction_(NULL) {} |
81 | 80 |
82 // Restricts focus and activation to this window and its child hierarchy. | 81 // Restricts focus and activation to this window and its child hierarchy. |
83 void set_focus_restriction(aura::Window* focus_restriction) { | 82 void set_focus_restriction(aura::Window* focus_restriction) { |
84 focus_restriction_ = focus_restriction; | 83 focus_restriction_ = focus_restriction; |
85 } | 84 } |
86 | 85 |
87 // Overridden from BaseFocusRules: | 86 // Overridden from BaseFocusRules: |
| 87 virtual bool SupportsChildActivation(aura::Window* window) OVERRIDE { |
| 88 // In FocusControllerTests, only the RootWindow has activatable children. |
| 89 return window->GetRootWindow() == window; |
| 90 } |
88 virtual bool CanActivateWindow(aura::Window* window) OVERRIDE { | 91 virtual bool CanActivateWindow(aura::Window* window) OVERRIDE { |
89 // Restricting focus to a non-activatable child window means the activatable | 92 // Restricting focus to a non-activatable child window means the activatable |
90 // parent outside the focus restriction is activatable. | 93 // parent outside the focus restriction is activatable. |
91 bool can_activate = CanFocusOrActivate(window) || | 94 bool can_activate = |
92 window->Contains(GetActivatableWindow(focus_restriction_)); | 95 CanFocusOrActivate(window) || window->Contains(focus_restriction_); |
93 return can_activate ? BaseFocusRules::CanActivateWindow(window) : false; | 96 return can_activate ? BaseFocusRules::CanActivateWindow(window) : false; |
94 } | 97 } |
95 virtual bool CanFocusWindow(aura::Window* window) OVERRIDE { | 98 virtual bool CanFocusWindow(aura::Window* window) OVERRIDE { |
96 return CanFocusOrActivate(window) ? | 99 return CanFocusOrActivate(window) ? |
97 BaseFocusRules::CanFocusWindow(window) : false; | 100 BaseFocusRules::CanFocusWindow(window) : false; |
98 } | 101 } |
99 virtual aura::Window* GetActivatableWindow(aura::Window* window) OVERRIDE { | 102 virtual aura::Window* GetActivatableWindow(aura::Window* window) OVERRIDE { |
100 return BaseFocusRules::GetActivatableWindow( | 103 return BaseFocusRules::GetActivatableWindow( |
101 CanFocusOrActivate(window) ? window : focus_restriction_); | 104 CanFocusOrActivate(window) ? window : focus_restriction_); |
102 } | 105 } |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
732 DIRECT_FOCUS_CHANGE_TESTS(ShiftFocusToChildOfInactiveWindow); | 735 DIRECT_FOCUS_CHANGE_TESTS(ShiftFocusToChildOfInactiveWindow); |
733 | 736 |
734 // - Verifies that FocusRules determine what can be focused. | 737 // - Verifies that FocusRules determine what can be focused. |
735 ALL_FOCUS_TESTS(FocusRulesOverride); | 738 ALL_FOCUS_TESTS(FocusRulesOverride); |
736 | 739 |
737 // - Verifies that FocusRules determine what can be activated. | 740 // - Verifies that FocusRules determine what can be activated. |
738 TARGET_FOCUS_TESTS(ActivationRulesOverride); | 741 TARGET_FOCUS_TESTS(ActivationRulesOverride); |
739 | 742 |
740 } // namespace corewm | 743 } // namespace corewm |
741 } // namespace views | 744 } // namespace views |
OLD | NEW |