Home | History | Annotate | Download | only in display
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "ash/display/virtual_keyboard_window_controller.h"
      6 
      7 #include "ash/ash_switches.h"
      8 #include "ash/display/display_controller.h"
      9 #include "ash/root_window_controller.h"
     10 #include "ash/shell.h"
     11 #include "ash/shell_window_ids.h"
     12 #include "ash/test/ash_test_base.h"
     13 #include "ash/wm/maximize_mode/maximize_mode_controller.h"
     14 #include "base/command_line.h"
     15 #include "ui/keyboard/keyboard_switches.h"
     16 #include "ui/keyboard/keyboard_util.h"
     17 
     18 namespace ash {
     19 namespace test {
     20 
     21 class VirtualKeyboardWindowControllerTest : public AshTestBase {
     22  public:
     23   VirtualKeyboardWindowControllerTest()
     24       : virtual_keyboard_window_controller_(NULL) {}
     25   virtual ~VirtualKeyboardWindowControllerTest() {}
     26 
     27   void set_virtual_keyboard_window_controller(
     28       VirtualKeyboardWindowController* controller) {
     29     virtual_keyboard_window_controller_ = controller;
     30   }
     31 
     32   RootWindowController* root_window_controller() {
     33     return virtual_keyboard_window_controller_->
     34         root_window_controller_for_test();
     35   }
     36 
     37  private:
     38   VirtualKeyboardWindowController* virtual_keyboard_window_controller_;
     39   DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardWindowControllerTest);
     40 };
     41 
     42 class VirtualKeyboardUsabilityExperimentTest
     43     : public VirtualKeyboardWindowControllerTest {
     44  public:
     45   VirtualKeyboardUsabilityExperimentTest()
     46     : VirtualKeyboardWindowControllerTest() {}
     47   virtual ~VirtualKeyboardUsabilityExperimentTest() {}
     48 
     49   virtual void SetUp() OVERRIDE {
     50     if (SupportsMultipleDisplays()) {
     51       CommandLine::ForCurrentProcess()->AppendSwitchASCII(
     52           switches::kAshHostWindowBounds, "1+1-300x300,1+301-300x300");
     53       CommandLine::ForCurrentProcess()->AppendSwitch(
     54           keyboard::switches::kKeyboardUsabilityExperiment);
     55     }
     56     test::AshTestBase::SetUp();
     57   }
     58 
     59  private:
     60   DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardUsabilityExperimentTest);
     61 };
     62 
     63 TEST_F(VirtualKeyboardUsabilityExperimentTest, VirtualKeyboardWindowTest) {
     64   if (!SupportsMultipleDisplays())
     65     return;
     66   RunAllPendingInMessageLoop();
     67   set_virtual_keyboard_window_controller(
     68       Shell::GetInstance()->display_controller()->
     69           virtual_keyboard_window_controller());
     70   EXPECT_TRUE(root_window_controller());
     71   aura::Window* container = root_window_controller()->GetContainer(
     72       kShellWindowId_VirtualKeyboardContainer);
     73   // Keyboard container is added to virtual keyboard window and its bounds is
     74   // the same as root window.
     75   EXPECT_TRUE(container);
     76   EXPECT_EQ(container->bounds(),
     77             root_window_controller()->GetRootWindow()->bounds());
     78 }
     79 
     80 // Tests that the onscreen keyboard becomes enabled when maximize mode is
     81 // enabled.
     82 TEST_F(VirtualKeyboardWindowControllerTest, EnabledDuringMaximizeMode) {
     83   set_virtual_keyboard_window_controller(
     84       Shell::GetInstance()->display_controller()->
     85           virtual_keyboard_window_controller());
     86 
     87   ASSERT_FALSE(keyboard::IsKeyboardEnabled());
     88   Shell::GetInstance()->maximize_mode_controller()->
     89       EnableMaximizeModeWindowManager(true);
     90   EXPECT_TRUE(keyboard::IsKeyboardEnabled());
     91   Shell::GetInstance()->maximize_mode_controller()->
     92       EnableMaximizeModeWindowManager(false);
     93   EXPECT_FALSE(keyboard::IsKeyboardEnabled());
     94 }
     95 
     96 }  // namespace test
     97 }  // namespace ash
     98