Commit eaae09a0 authored by bshe's avatar bshe Committed by Commit bot

Enable virtual keyboard in overview mode

Touch view uses virtual_keyboard_window_controller to enable/disable
virtual keyboard. However, virtual_keyboard_window_controller is specific
for a Touch Usability mode which nobody uses and is removed. This CL adds a
VirtualKeyboardObserver to replace virtual_keyboard_window_controller.

BUG=416495

Review URL: https://codereview.chromium.org/592753004

Cr-Commit-Position: refs/heads/master@{#296086}
parent beec6a36
......@@ -480,6 +480,8 @@
'touch/touch_uma.h',
'touch/touchscreen_util.cc',
'touch/touchscreen_util.h',
'virtual_keyboard_controller.cc',
'virtual_keyboard_controller.h',
'volume_control_delegate.h',
'wm/app_list_controller.cc',
'wm/app_list_controller.h',
......@@ -835,6 +837,7 @@
'touch/touch_observer_hud_unittest.cc',
'touch/touch_transformer_controller_unittest.cc',
'touch/touchscreen_util_unittest.cc',
'virtual_keyboard_controller_unittest.cc',
'wm/app_list_controller_unittest.cc',
'wm/ash_native_cursor_manager_unittest.cc',
'wm/dock/docked_window_layout_manager_unittest.cc',
......
......@@ -53,6 +53,7 @@
#include "ash/system/status_area_widget.h"
#include "ash/system/tray/system_tray_delegate.h"
#include "ash/system/tray/system_tray_notifier.h"
#include "ash/virtual_keyboard_controller.h"
#include "ash/wm/app_list_controller.h"
#include "ash/wm/ash_focus_rules.h"
#include "ash/wm/ash_native_cursor_manager.h"
......@@ -793,6 +794,7 @@ Shell::~Shell() {
display_manager_->CreateScreenForShutdown();
display_controller_->Shutdown();
display_controller_.reset();
virtual_keyboard_controller_.reset();
screen_position_controller_.reset();
accessibility_delegate_.reset();
new_window_delegate_.reset();
......@@ -879,6 +881,7 @@ void Shell::Init(const ShellInitParams& init_params) {
display_controller_->Start();
display_controller_->CreatePrimaryHost(
ShellInitParamsToAshWindowTreeHostInitParams(init_params));
virtual_keyboard_controller_.reset(new VirtualKeyboardController);
aura::Window* root_window = display_controller_->GetPrimaryRootWindow();
target_root_window_ = root_window;
......
......@@ -141,6 +141,7 @@ class TouchTransformerController;
class TouchObserverHUD;
class UserActivityDetector;
class UserWallpaperDelegate;
class VirtualKeyboardController;
class VideoActivityNotifier;
class VideoDetector;
class WebNotificationTray;
......@@ -666,6 +667,7 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate,
scoped_ptr<WindowSelectorController> window_selector_controller_;
scoped_ptr<FocusCycler> focus_cycler_;
scoped_ptr<DisplayController> display_controller_;
scoped_ptr<VirtualKeyboardController> virtual_keyboard_controller_;
scoped_ptr<HighContrastController> high_contrast_controller_;
scoped_ptr<MagnificationController> magnification_controller_;
scoped_ptr<PartialMagnificationController> partial_magnification_controller_;
......
// Copyright 2014 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/virtual_keyboard_controller.h"
#include "ash/shell.h"
#include "ui/keyboard/keyboard_util.h"
namespace ash {
VirtualKeyboardController::VirtualKeyboardController() {
Shell::GetInstance()->AddShellObserver(this);
}
VirtualKeyboardController::~VirtualKeyboardController() {
Shell::GetInstance()->RemoveShellObserver(this);
}
void VirtualKeyboardController::OnMaximizeModeStarted() {
keyboard::SetTouchKeyboardEnabled(true);
Shell::GetInstance()->CreateKeyboard();
}
void VirtualKeyboardController::OnMaximizeModeEnded() {
keyboard::SetTouchKeyboardEnabled(false);
if (!keyboard::IsKeyboardEnabled())
Shell::GetInstance()->DeactivateKeyboard();
}
} // namespace ash
// Copyright 2014 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.
#ifndef ASH_VIRTUAL_KEYBOARD_CONTROLLER_H_
#define ASH_VIRTUAL_KEYBOARD_CONTROLLER_H_
#include "ash/ash_export.h"
#include "ash/shell_observer.h"
namespace ash {
// This class observes enter/leaving maximized mode for virtual keyboard.
class ASH_EXPORT VirtualKeyboardController : public ShellObserver {
public:
VirtualKeyboardController();
virtual ~VirtualKeyboardController();
// ShellObserver:
virtual void OnMaximizeModeStarted() OVERRIDE;
virtual void OnMaximizeModeEnded() OVERRIDE;
private:
DISALLOW_COPY_AND_ASSIGN(VirtualKeyboardController);
};
} // namespace ash
#endif // ASH_VIRTUAL_KEYBOARD_CONTROLLER_H_
// Copyright 2014 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/virtual_keyboard_controller.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h"
#include "ash/wm/maximize_mode/maximize_mode_controller.h"
#include "ui/keyboard/keyboard_util.h"
namespace ash {
namespace test {
typedef AshTestBase VirtualKeyboardControllerTest;
// Tests that the onscreen keyboard becomes enabled when maximize mode is
// enabled.
TEST_F(VirtualKeyboardControllerTest, EnabledDuringMaximizeMode) {
ASSERT_FALSE(keyboard::IsKeyboardEnabled());
Shell::GetInstance()->maximize_mode_controller()->
EnableMaximizeModeWindowManager(true);
EXPECT_TRUE(keyboard::IsKeyboardEnabled());
Shell::GetInstance()->maximize_mode_controller()->
EnableMaximizeModeWindowManager(false);
EXPECT_FALSE(keyboard::IsKeyboardEnabled());
}
} // namespace test
} // namespace ash
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment