summaryrefslogtreecommitdiffstats
path: root/ash/display
diff options
context:
space:
mode:
authorbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-16 02:56:10 +0000
committerbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-11-16 02:56:10 +0000
commita53dcc96cc25a896b06f535d419c02135b973adb (patch)
tree81d88f37ee71080cd57c125577531489f33018ca /ash/display
parent5e01b54602839ba80390ca54f6b037018af33509 (diff)
downloadchromium_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.h5
-rw-r--r--ash/display/virtual_keyboard_window_controller.cc8
-rw-r--r--ash/display/virtual_keyboard_window_controller.h16
-rw-r--r--ash/display/virtual_keyboard_window_controller_unittest.cc64
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