OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/keyboard/keyboard_controller.h" | 5 #include "ui/keyboard/keyboard_controller.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 : root_(root) { | 61 : root_(root) { |
62 root_->AddPreTargetHandler(this); | 62 root_->AddPreTargetHandler(this); |
63 } | 63 } |
64 | 64 |
65 virtual ~TestFocusController() { | 65 virtual ~TestFocusController() { |
66 root_->RemovePreTargetHandler(this); | 66 root_->RemovePreTargetHandler(this); |
67 } | 67 } |
68 | 68 |
69 private: | 69 private: |
70 // Overridden from ui::EventHandler: | 70 // Overridden from ui::EventHandler: |
71 virtual void OnEvent(ui::Event* event) OVERRIDE { | 71 virtual void OnEvent(ui::Event* event) override { |
72 aura::Window* target = static_cast<aura::Window*>(event->target()); | 72 aura::Window* target = static_cast<aura::Window*>(event->target()); |
73 if (event->type() == ui::ET_MOUSE_PRESSED || | 73 if (event->type() == ui::ET_MOUSE_PRESSED || |
74 event->type() == ui::ET_TOUCH_PRESSED) { | 74 event->type() == ui::ET_TOUCH_PRESSED) { |
75 aura::client::GetFocusClient(target)->FocusWindow(target); | 75 aura::client::GetFocusClient(target)->FocusWindow(target); |
76 } | 76 } |
77 } | 77 } |
78 | 78 |
79 aura::Window* root_; | 79 aura::Window* root_; |
80 DISALLOW_COPY_AND_ASSIGN(TestFocusController); | 80 DISALLOW_COPY_AND_ASSIGN(TestFocusController); |
81 }; | 81 }; |
82 | 82 |
83 class TestKeyboardControllerProxy : public KeyboardControllerProxy { | 83 class TestKeyboardControllerProxy : public KeyboardControllerProxy { |
84 public: | 84 public: |
85 TestKeyboardControllerProxy() | 85 TestKeyboardControllerProxy() |
86 : input_method_( | 86 : input_method_( |
87 ui::CreateInputMethod(NULL, gfx::kNullAcceleratedWidget)) {} | 87 ui::CreateInputMethod(NULL, gfx::kNullAcceleratedWidget)) {} |
88 | 88 |
89 virtual ~TestKeyboardControllerProxy() { | 89 virtual ~TestKeyboardControllerProxy() { |
90 // Destroy the window before the delegate. | 90 // Destroy the window before the delegate. |
91 window_.reset(); | 91 window_.reset(); |
92 } | 92 } |
93 | 93 |
94 // Overridden from KeyboardControllerProxy: | 94 // Overridden from KeyboardControllerProxy: |
95 virtual bool HasKeyboardWindow() const OVERRIDE { return window_; } | 95 virtual bool HasKeyboardWindow() const override { return window_; } |
96 virtual aura::Window* GetKeyboardWindow() OVERRIDE { | 96 virtual aura::Window* GetKeyboardWindow() override { |
97 if (!window_) { | 97 if (!window_) { |
98 window_.reset(new aura::Window(&delegate_)); | 98 window_.reset(new aura::Window(&delegate_)); |
99 window_->Init(aura::WINDOW_LAYER_NOT_DRAWN); | 99 window_->Init(aura::WINDOW_LAYER_NOT_DRAWN); |
100 window_->set_owned_by_parent(false); | 100 window_->set_owned_by_parent(false); |
101 } | 101 } |
102 return window_.get(); | 102 return window_.get(); |
103 } | 103 } |
104 virtual content::BrowserContext* GetBrowserContext() OVERRIDE { return NULL; } | 104 virtual content::BrowserContext* GetBrowserContext() override { return NULL; } |
105 virtual ui::InputMethod* GetInputMethod() OVERRIDE { | 105 virtual ui::InputMethod* GetInputMethod() override { |
106 return input_method_.get(); | 106 return input_method_.get(); |
107 } | 107 } |
108 virtual void RequestAudioInput(content::WebContents* web_contents, | 108 virtual void RequestAudioInput(content::WebContents* web_contents, |
109 const content::MediaStreamRequest& request, | 109 const content::MediaStreamRequest& request, |
110 const content::MediaResponseCallback& callback) OVERRIDE { return; } | 110 const content::MediaResponseCallback& callback) override { return; } |
111 virtual void LoadSystemKeyboard() OVERRIDE {}; | 111 virtual void LoadSystemKeyboard() override {}; |
112 virtual void ReloadKeyboardIfNeeded() OVERRIDE {}; | 112 virtual void ReloadKeyboardIfNeeded() override {}; |
113 | 113 |
114 private: | 114 private: |
115 scoped_ptr<aura::Window> window_; | 115 scoped_ptr<aura::Window> window_; |
116 aura::test::TestWindowDelegate delegate_; | 116 aura::test::TestWindowDelegate delegate_; |
117 scoped_ptr<ui::InputMethod> input_method_; | 117 scoped_ptr<ui::InputMethod> input_method_; |
118 | 118 |
119 DISALLOW_COPY_AND_ASSIGN(TestKeyboardControllerProxy); | 119 DISALLOW_COPY_AND_ASSIGN(TestKeyboardControllerProxy); |
120 }; | 120 }; |
121 | 121 |
122 // Keeps a count of all the events a window receives. | 122 // Keeps a count of all the events a window receives. |
123 class EventObserver : public ui::EventHandler { | 123 class EventObserver : public ui::EventHandler { |
124 public: | 124 public: |
125 EventObserver() {} | 125 EventObserver() {} |
126 virtual ~EventObserver() {} | 126 virtual ~EventObserver() {} |
127 | 127 |
128 int GetEventCount(ui::EventType type) { | 128 int GetEventCount(ui::EventType type) { |
129 return event_counts_[type]; | 129 return event_counts_[type]; |
130 } | 130 } |
131 | 131 |
132 private: | 132 private: |
133 // Overridden from ui::EventHandler: | 133 // Overridden from ui::EventHandler: |
134 virtual void OnEvent(ui::Event* event) OVERRIDE { | 134 virtual void OnEvent(ui::Event* event) override { |
135 ui::EventHandler::OnEvent(event); | 135 ui::EventHandler::OnEvent(event); |
136 event_counts_[event->type()]++; | 136 event_counts_[event->type()]++; |
137 } | 137 } |
138 | 138 |
139 std::map<ui::EventType, int> event_counts_; | 139 std::map<ui::EventType, int> event_counts_; |
140 DISALLOW_COPY_AND_ASSIGN(EventObserver); | 140 DISALLOW_COPY_AND_ASSIGN(EventObserver); |
141 }; | 141 }; |
142 | 142 |
143 class KeyboardContainerObserver : public aura::WindowObserver { | 143 class KeyboardContainerObserver : public aura::WindowObserver { |
144 public: | 144 public: |
145 explicit KeyboardContainerObserver(aura::Window* window) : window_(window) { | 145 explicit KeyboardContainerObserver(aura::Window* window) : window_(window) { |
146 window_->AddObserver(this); | 146 window_->AddObserver(this); |
147 } | 147 } |
148 virtual ~KeyboardContainerObserver() { | 148 virtual ~KeyboardContainerObserver() { |
149 window_->RemoveObserver(this); | 149 window_->RemoveObserver(this); |
150 } | 150 } |
151 | 151 |
152 private: | 152 private: |
153 virtual void OnWindowVisibilityChanged(aura::Window* window, | 153 virtual void OnWindowVisibilityChanged(aura::Window* window, |
154 bool visible) OVERRIDE { | 154 bool visible) override { |
155 if (!visible) | 155 if (!visible) |
156 base::MessageLoop::current()->Quit(); | 156 base::MessageLoop::current()->Quit(); |
157 } | 157 } |
158 | 158 |
159 aura::Window* window_; | 159 aura::Window* window_; |
160 | 160 |
161 DISALLOW_COPY_AND_ASSIGN(KeyboardContainerObserver); | 161 DISALLOW_COPY_AND_ASSIGN(KeyboardContainerObserver); |
162 }; | 162 }; |
163 | 163 |
164 } // namespace | 164 } // namespace |
165 | 165 |
166 class KeyboardControllerTest : public testing::Test { | 166 class KeyboardControllerTest : public testing::Test { |
167 public: | 167 public: |
168 KeyboardControllerTest() {} | 168 KeyboardControllerTest() {} |
169 virtual ~KeyboardControllerTest() {} | 169 virtual ~KeyboardControllerTest() {} |
170 | 170 |
171 virtual void SetUp() OVERRIDE { | 171 virtual void SetUp() override { |
172 // The ContextFactory must exist before any Compositors are created. | 172 // The ContextFactory must exist before any Compositors are created. |
173 bool enable_pixel_output = false; | 173 bool enable_pixel_output = false; |
174 ui::ContextFactory* context_factory = | 174 ui::ContextFactory* context_factory = |
175 ui::InitializeContextFactoryForTests(enable_pixel_output); | 175 ui::InitializeContextFactoryForTests(enable_pixel_output); |
176 | 176 |
177 aura_test_helper_.reset(new aura::test::AuraTestHelper(&message_loop_)); | 177 aura_test_helper_.reset(new aura::test::AuraTestHelper(&message_loop_)); |
178 aura_test_helper_->SetUp(context_factory); | 178 aura_test_helper_->SetUp(context_factory); |
179 new wm::DefaultActivationClient(aura_test_helper_->root_window()); | 179 new wm::DefaultActivationClient(aura_test_helper_->root_window()); |
180 ui::SetUpInputMethodFactoryForTesting(); | 180 ui::SetUpInputMethodFactoryForTesting(); |
181 if (::switches::IsTextInputFocusManagerEnabled()) | 181 if (::switches::IsTextInputFocusManagerEnabled()) |
182 ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL); | 182 ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL); |
183 focus_controller_.reset(new TestFocusController(root_window())); | 183 focus_controller_.reset(new TestFocusController(root_window())); |
184 proxy_ = new TestKeyboardControllerProxy(); | 184 proxy_ = new TestKeyboardControllerProxy(); |
185 controller_.reset(new KeyboardController(proxy_)); | 185 controller_.reset(new KeyboardController(proxy_)); |
186 } | 186 } |
187 | 187 |
188 virtual void TearDown() OVERRIDE { | 188 virtual void TearDown() override { |
189 controller_.reset(); | 189 controller_.reset(); |
190 focus_controller_.reset(); | 190 focus_controller_.reset(); |
191 if (::switches::IsTextInputFocusManagerEnabled()) | 191 if (::switches::IsTextInputFocusManagerEnabled()) |
192 ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL); | 192 ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL); |
193 aura_test_helper_->TearDown(); | 193 aura_test_helper_->TearDown(); |
194 ui::TerminateContextFactoryForTests(); | 194 ui::TerminateContextFactoryForTests(); |
195 } | 195 } |
196 | 196 |
197 aura::Window* root_window() { return aura_test_helper_->root_window(); } | 197 aura::Window* root_window() { return aura_test_helper_->root_window(); } |
198 KeyboardControllerProxy* proxy() { return proxy_; } | 198 KeyboardControllerProxy* proxy() { return proxy_; } |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 base::MessageLoop::current()->Run(); | 492 base::MessageLoop::current()->Run(); |
493 EXPECT_FALSE(keyboard_container->IsVisible()); | 493 EXPECT_FALSE(keyboard_container->IsVisible()); |
494 } | 494 } |
495 | 495 |
496 class KeyboardControllerAnimationTest : public KeyboardControllerTest, | 496 class KeyboardControllerAnimationTest : public KeyboardControllerTest, |
497 public KeyboardControllerObserver { | 497 public KeyboardControllerObserver { |
498 public: | 498 public: |
499 KeyboardControllerAnimationTest() {} | 499 KeyboardControllerAnimationTest() {} |
500 virtual ~KeyboardControllerAnimationTest() {} | 500 virtual ~KeyboardControllerAnimationTest() {} |
501 | 501 |
502 virtual void SetUp() OVERRIDE { | 502 virtual void SetUp() override { |
503 // We cannot short-circuit animations for this test. | 503 // We cannot short-circuit animations for this test. |
504 ui::ScopedAnimationDurationScaleMode test_duration_mode( | 504 ui::ScopedAnimationDurationScaleMode test_duration_mode( |
505 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); | 505 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); |
506 | 506 |
507 KeyboardControllerTest::SetUp(); | 507 KeyboardControllerTest::SetUp(); |
508 | 508 |
509 const gfx::Rect& root_bounds = root_window()->bounds(); | 509 const gfx::Rect& root_bounds = root_window()->bounds(); |
510 keyboard_container()->SetBounds(root_bounds); | 510 keyboard_container()->SetBounds(root_bounds); |
511 root_window()->AddChild(keyboard_container()); | 511 root_window()->AddChild(keyboard_container()); |
512 controller()->AddObserver(this); | 512 controller()->AddObserver(this); |
513 } | 513 } |
514 | 514 |
515 virtual void TearDown() OVERRIDE { | 515 virtual void TearDown() override { |
516 controller()->RemoveObserver(this); | 516 controller()->RemoveObserver(this); |
517 KeyboardControllerTest::TearDown(); | 517 KeyboardControllerTest::TearDown(); |
518 } | 518 } |
519 | 519 |
520 protected: | 520 protected: |
521 // KeyboardControllerObserver overrides | 521 // KeyboardControllerObserver overrides |
522 virtual void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) OVERRIDE { | 522 virtual void OnKeyboardBoundsChanging(const gfx::Rect& new_bounds) override { |
523 notified_bounds_ = new_bounds; | 523 notified_bounds_ = new_bounds; |
524 } | 524 } |
525 | 525 |
526 const gfx::Rect& notified_bounds() { return notified_bounds_; } | 526 const gfx::Rect& notified_bounds() { return notified_bounds_; } |
527 | 527 |
528 aura::Window* keyboard_container() { | 528 aura::Window* keyboard_container() { |
529 return controller()->GetContainerWindow(); | 529 return controller()->GetContainerWindow(); |
530 } | 530 } |
531 | 531 |
532 aura::Window* keyboard_window() { | 532 aura::Window* keyboard_window() { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 // Before hide animation finishes, show keyboard again. | 596 // Before hide animation finishes, show keyboard again. |
597 ShowKeyboard(); | 597 ShowKeyboard(); |
598 RunAnimationForLayer(layer); | 598 RunAnimationForLayer(layer); |
599 EXPECT_TRUE(keyboard_container()->IsVisible()); | 599 EXPECT_TRUE(keyboard_container()->IsVisible()); |
600 EXPECT_TRUE(keyboard_window()->IsVisible()); | 600 EXPECT_TRUE(keyboard_window()->IsVisible()); |
601 EXPECT_EQ(1.0, layer->opacity()); | 601 EXPECT_EQ(1.0, layer->opacity()); |
602 EXPECT_EQ(gfx::Transform(), layer->transform()); | 602 EXPECT_EQ(gfx::Transform(), layer->transform()); |
603 } | 603 } |
604 | 604 |
605 } // namespace keyboard | 605 } // namespace keyboard |
OLD | NEW |