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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "ui/aura/client/focus_client.h" | 9 #include "ui/aura/client/focus_client.h" |
10 #include "ui/aura/root_window.h" | 10 #include "ui/aura/root_window.h" |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 scoped_ptr<TestFocusController> focus_controller_; | 220 scoped_ptr<TestFocusController> focus_controller_; |
221 | 221 |
222 private: | 222 private: |
223 KeyboardControllerProxy* proxy_; | 223 KeyboardControllerProxy* proxy_; |
224 scoped_ptr<KeyboardController> controller_; | 224 scoped_ptr<KeyboardController> controller_; |
225 | 225 |
226 DISALLOW_COPY_AND_ASSIGN(KeyboardControllerTest); | 226 DISALLOW_COPY_AND_ASSIGN(KeyboardControllerTest); |
227 }; | 227 }; |
228 | 228 |
229 TEST_F(KeyboardControllerTest, KeyboardSize) { | 229 TEST_F(KeyboardControllerTest, KeyboardSize) { |
230 scoped_ptr<aura::Window> container(controller()->GetContainerWindow()); | 230 aura::Window* container(controller()->GetContainerWindow()); |
231 gfx::Rect bounds(0, 0, 100, 100); | 231 gfx::Rect bounds(0, 0, 100, 100); |
232 container->SetBounds(bounds); | 232 container->SetBounds(bounds); |
233 | 233 |
234 const gfx::Rect& before_bounds = proxy()->GetKeyboardWindow()->bounds(); | 234 const gfx::Rect& before_bounds = proxy()->GetKeyboardWindow()->bounds(); |
235 gfx::Rect new_bounds( | 235 gfx::Rect new_bounds( |
236 before_bounds.x(), before_bounds.y(), | 236 before_bounds.x(), before_bounds.y(), |
237 before_bounds.width() / 2, before_bounds.height() / 2); | 237 before_bounds.width() / 2, before_bounds.height() / 2); |
238 | 238 |
239 // The KeyboardController's LayoutManager shouldn't let this happen | 239 // The KeyboardController's LayoutManager shouldn't let this happen |
240 proxy()->GetKeyboardWindow()->SetBounds(new_bounds); | 240 proxy()->GetKeyboardWindow()->SetBounds(new_bounds); |
241 ASSERT_EQ(before_bounds, proxy()->GetKeyboardWindow()->bounds()); | 241 ASSERT_EQ(before_bounds, proxy()->GetKeyboardWindow()->bounds()); |
242 } | 242 } |
243 | 243 |
244 // Tests that tapping/clicking inside the keyboard does not give it focus. | 244 // Tests that tapping/clicking inside the keyboard does not give it focus. |
245 TEST_F(KeyboardControllerTest, ClickDoesNotFocusKeyboard) { | 245 TEST_F(KeyboardControllerTest, ClickDoesNotFocusKeyboard) { |
246 const gfx::Rect& root_bounds = root_window()->bounds(); | 246 const gfx::Rect& root_bounds = root_window()->bounds(); |
247 aura::test::EventCountDelegate delegate; | 247 aura::test::EventCountDelegate delegate; |
248 scoped_ptr<aura::Window> window(new aura::Window(&delegate)); | 248 scoped_ptr<aura::Window> window(new aura::Window(&delegate)); |
249 window->Init(ui::LAYER_NOT_DRAWN); | 249 window->Init(ui::LAYER_NOT_DRAWN); |
250 window->SetBounds(root_bounds); | 250 window->SetBounds(root_bounds); |
251 root_window()->AddChild(window.get()); | 251 root_window()->AddChild(window.get()); |
252 window->Show(); | 252 window->Show(); |
253 window->Focus(); | 253 window->Focus(); |
254 | 254 |
255 scoped_ptr<aura::Window> keyboard_container( | 255 aura::Window* keyboard_container(controller()->GetContainerWindow()); |
256 controller()->GetContainerWindow()); | |
257 keyboard_container->SetBounds(root_bounds); | 256 keyboard_container->SetBounds(root_bounds); |
258 | 257 |
259 root_window()->AddChild(keyboard_container.get()); | 258 root_window()->AddChild(keyboard_container); |
260 keyboard_container->Show(); | 259 keyboard_container->Show(); |
261 | 260 |
262 ShowKeyboard(); | 261 ShowKeyboard(); |
263 | 262 |
264 EXPECT_TRUE(window->IsVisible()); | 263 EXPECT_TRUE(window->IsVisible()); |
265 EXPECT_TRUE(keyboard_container->IsVisible()); | 264 EXPECT_TRUE(keyboard_container->IsVisible()); |
266 EXPECT_TRUE(window->HasFocus()); | 265 EXPECT_TRUE(window->HasFocus()); |
267 EXPECT_FALSE(keyboard_container->HasFocus()); | 266 EXPECT_FALSE(keyboard_container->HasFocus()); |
268 | 267 |
269 // Click on the keyboard. Make sure the keyboard receives the event, but does | 268 // Click on the keyboard. Make sure the keyboard receives the event, but does |
(...skipping 20 matching lines...) Expand all Loading... |
290 const gfx::Rect& root_bounds = root_window()->bounds(); | 289 const gfx::Rect& root_bounds = root_window()->bounds(); |
291 | 290 |
292 ui::InputMethod* input_method = proxy()->GetInputMethod(); | 291 ui::InputMethod* input_method = proxy()->GetInputMethod(); |
293 TestTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT); | 292 TestTextInputClient input_client_0(ui::TEXT_INPUT_TYPE_TEXT); |
294 TestTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT); | 293 TestTextInputClient input_client_1(ui::TEXT_INPUT_TYPE_TEXT); |
295 TestTextInputClient input_client_2(ui::TEXT_INPUT_TYPE_TEXT); | 294 TestTextInputClient input_client_2(ui::TEXT_INPUT_TYPE_TEXT); |
296 TestTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE); | 295 TestTextInputClient no_input_client_0(ui::TEXT_INPUT_TYPE_NONE); |
297 TestTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE); | 296 TestTextInputClient no_input_client_1(ui::TEXT_INPUT_TYPE_NONE); |
298 input_method->SetFocusedTextInputClient(&input_client_0); | 297 input_method->SetFocusedTextInputClient(&input_client_0); |
299 | 298 |
300 scoped_ptr<aura::Window> keyboard_container( | 299 aura::Window* keyboard_container(controller()->GetContainerWindow()); |
301 controller()->GetContainerWindow()); | |
302 scoped_ptr<KeyboardContainerObserver> keyboard_container_observer( | 300 scoped_ptr<KeyboardContainerObserver> keyboard_container_observer( |
303 new KeyboardContainerObserver(keyboard_container.get())); | 301 new KeyboardContainerObserver(keyboard_container)); |
304 keyboard_container->SetBounds(root_bounds); | 302 keyboard_container->SetBounds(root_bounds); |
305 root_window()->AddChild(keyboard_container.get()); | 303 root_window()->AddChild(keyboard_container); |
306 | 304 |
307 EXPECT_TRUE(keyboard_container->IsVisible()); | 305 EXPECT_TRUE(keyboard_container->IsVisible()); |
308 | 306 |
309 input_method->SetFocusedTextInputClient(&no_input_client_0); | 307 input_method->SetFocusedTextInputClient(&no_input_client_0); |
310 // Keyboard should not immediately hide itself. It is delayed to avoid layout | 308 // Keyboard should not immediately hide itself. It is delayed to avoid layout |
311 // flicker when the focus of input field quickly change. | 309 // flicker when the focus of input field quickly change. |
312 EXPECT_TRUE(keyboard_container->IsVisible()); | 310 EXPECT_TRUE(keyboard_container->IsVisible()); |
313 EXPECT_TRUE(WillHideKeyboard()); | 311 EXPECT_TRUE(WillHideKeyboard()); |
314 // Wait for hide keyboard to finish. | 312 // Wait for hide keyboard to finish. |
315 base::MessageLoop::current()->Run(); | 313 base::MessageLoop::current()->Run(); |
316 EXPECT_FALSE(keyboard_container->IsVisible()); | 314 EXPECT_FALSE(keyboard_container->IsVisible()); |
317 | 315 |
318 input_method->SetFocusedTextInputClient(&input_client_1); | 316 input_method->SetFocusedTextInputClient(&input_client_1); |
319 EXPECT_TRUE(keyboard_container->IsVisible()); | 317 EXPECT_TRUE(keyboard_container->IsVisible()); |
320 | 318 |
321 // Schedule to hide keyboard. | 319 // Schedule to hide keyboard. |
322 input_method->SetFocusedTextInputClient(&no_input_client_1); | 320 input_method->SetFocusedTextInputClient(&no_input_client_1); |
323 EXPECT_TRUE(WillHideKeyboard()); | 321 EXPECT_TRUE(WillHideKeyboard()); |
324 // Cancel keyboard hide. | 322 // Cancel keyboard hide. |
325 input_method->SetFocusedTextInputClient(&input_client_2); | 323 input_method->SetFocusedTextInputClient(&input_client_2); |
326 | 324 |
327 EXPECT_FALSE(WillHideKeyboard()); | 325 EXPECT_FALSE(WillHideKeyboard()); |
328 EXPECT_TRUE(keyboard_container->IsVisible()); | 326 EXPECT_TRUE(keyboard_container->IsVisible()); |
329 } | 327 } |
330 | 328 |
331 } // namespace keyboard | 329 } // namespace keyboard |
OLD | NEW |