diff options
author | bshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-16 02:56:10 +0000 |
---|---|---|
committer | bshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-16 02:56:10 +0000 |
commit | a53dcc96cc25a896b06f535d419c02135b973adb (patch) | |
tree | 81d88f37ee71080cd57c125577531489f33018ca /ash/display | |
parent | 5e01b54602839ba80390ca54f6b037018af33509 (diff) | |
download | chromium_src-a53dcc96cc25a896b06f535d419c02135b973adb.zip chromium_src-a53dcc96cc25a896b06f535d419c02135b973adb.tar.gz chromium_src-a53dcc96cc25a896b06f535d419c02135b973adb.tar.bz2 |
Add a full screen virtual keyboard to virtual keyboard root window
BUG=310331
TEST=
1. add keyboard-usability-experiment flag
2. hook up an external screen
3. boot device
expected: a full screen keyboard on one of the screen
Review URL: https://codereview.chromium.org/47873003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@235502 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display')
-rw-r--r-- | ash/display/display_controller.h | 5 | ||||
-rw-r--r-- | ash/display/virtual_keyboard_window_controller.cc | 8 | ||||
-rw-r--r-- | ash/display/virtual_keyboard_window_controller.h | 16 | ||||
-rw-r--r-- | ash/display/virtual_keyboard_window_controller_unittest.cc | 64 |
4 files changed, 93 insertions, 0 deletions
diff --git a/ash/display/display_controller.h b/ash/display/display_controller.h index 9dc20f5..75fe22c 100644 --- a/ash/display/display_controller.h +++ b/ash/display/display_controller.h @@ -84,6 +84,11 @@ class ASH_EXPORT DisplayController : public gfx::DisplayObserver, return mirror_window_controller_.get(); } + internal::VirtualKeyboardWindowController* + virtual_keyboard_window_controller() { + return virtual_keyboard_window_controller_.get(); + } + // Initializes primary display. void InitPrimaryDisplay(); diff --git a/ash/display/virtual_keyboard_window_controller.cc b/ash/display/virtual_keyboard_window_controller.cc index 42f2531..7be0e47 100644 --- a/ash/display/virtual_keyboard_window_controller.cc +++ b/ash/display/virtual_keyboard_window_controller.cc @@ -16,6 +16,7 @@ #include "base/strings/utf_string_conversions.h" #include "ui/aura/env.h" #include "ui/aura/root_window.h" +#include "ui/keyboard/keyboard_controller.h" namespace ash { namespace internal { @@ -28,6 +29,11 @@ VirtualKeyboardWindowController::~VirtualKeyboardWindowController() { Close(); } +void VirtualKeyboardWindowController::ActivateKeyboard( + keyboard::KeyboardController* keyboard_controller) { + root_window_controller_->ActivateKeyboard(keyboard_controller); +} + void VirtualKeyboardWindowController::UpdateWindow( const DisplayInfo& display_info) { static int virtual_keyboard_root_window_count = 0; @@ -53,6 +59,8 @@ void VirtualKeyboardWindowController::UpdateWindow( root_window_controller_.reset(GetRootWindowController( root_window->window())); root_window_controller_->dispatcher()->host()->Show(); + root_window_controller_->ActivateKeyboard( + Shell::GetInstance()->keyboard_controller()); } else { aura::RootWindow* root_window = root_window_controller_->dispatcher(); GetRootWindowSettings(root_window->window())->display_id = diff --git a/ash/display/virtual_keyboard_window_controller.h b/ash/display/virtual_keyboard_window_controller.h index def3c06..88db57d 100644 --- a/ash/display/virtual_keyboard_window_controller.h +++ b/ash/display/virtual_keyboard_window_controller.h @@ -9,8 +9,16 @@ #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" +namespace keyboard { +class KeyboardController; +} + namespace ash { +namespace test { +class VirtualKeyboardWindowControllerTest; +} // namespace test + namespace internal { class DisplayInfo; class RootWindowController; @@ -22,6 +30,8 @@ class ASH_EXPORT VirtualKeyboardWindowController { VirtualKeyboardWindowController(); virtual ~VirtualKeyboardWindowController(); + void ActivateKeyboard(keyboard::KeyboardController* keyboard_controller); + // Updates the root window's bounds using |display_info|. // Creates the new root window if one doesn't exist. void UpdateWindow(const DisplayInfo& display_info); @@ -30,6 +40,12 @@ class ASH_EXPORT VirtualKeyboardWindowController { void Close(); private: + friend class test::VirtualKeyboardWindowControllerTest; + + RootWindowController* root_window_controller_for_test() { + return root_window_controller_.get(); + } + scoped_ptr<RootWindowController> root_window_controller_; DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardWindowController); diff --git a/ash/display/virtual_keyboard_window_controller_unittest.cc b/ash/display/virtual_keyboard_window_controller_unittest.cc new file mode 100644 index 0000000..b03f335 --- /dev/null +++ b/ash/display/virtual_keyboard_window_controller_unittest.cc @@ -0,0 +1,64 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ash/display/virtual_keyboard_window_controller.h" + +#include "ash/ash_switches.h" +#include "ash/display/display_controller.h" +#include "ash/root_window_controller.h" +#include "ash/shell.h" +#include "ash/shell_window_ids.h" +#include "ash/test/ash_test_base.h" +#include "base/command_line.h" +#include "ui/keyboard/keyboard_switches.h" + +namespace ash { +namespace test { + +class VirtualKeyboardWindowControllerTest : public AshTestBase { + public: + VirtualKeyboardWindowControllerTest() + : virtual_keyboard_window_controller_(NULL) {} + virtual ~VirtualKeyboardWindowControllerTest() {} + + virtual void SetUp() OVERRIDE { + CommandLine::ForCurrentProcess()->AppendSwitchASCII( + switches::kAshHostWindowBounds, "1+1-300x300,1+301-300x300"); + CommandLine::ForCurrentProcess()->AppendSwitch( + keyboard::switches::kKeyboardUsabilityExperiment); + test::AshTestBase::SetUp(); + } + + void set_virtual_keyboard_window_controller( + internal::VirtualKeyboardWindowController* controller) { + virtual_keyboard_window_controller_ = controller; + } + + internal::RootWindowController* root_window_controller() { + return virtual_keyboard_window_controller_-> + root_window_controller_for_test(); + } + + private: + internal::VirtualKeyboardWindowController* + virtual_keyboard_window_controller_; + DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardWindowControllerTest); +}; + + +TEST_F(VirtualKeyboardWindowControllerTest, VirtualKeyboardWindowTest) { + if (!SupportsMultipleDisplays()) + return; + RunAllPendingInMessageLoop(); + set_virtual_keyboard_window_controller( + Shell::GetInstance()->display_controller()-> + virtual_keyboard_window_controller()); + EXPECT_TRUE(root_window_controller()); + // Keyboard container is added to virtual keyboard window. + EXPECT_TRUE(root_window_controller()->GetContainer( + internal::kShellWindowId_VirtualKeyboardContainer)); +} + +} // namespace test +} // namespace ash |