Commit edb5fa39 authored by Steven Bennetts's avatar Steven Bennetts Committed by Commit Bot

Move VirtualKeyboardController ownership to AshKeyboardController

Bug: 843332
Change-Id: I490987e866fef3aa86151a990bc623e4e2ed6429
Reviewed-on: https://chromium-review.googlesource.com/c/1285322
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: default avatarDarren Shen <shend@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600815}
parent 7c8fc787
...@@ -63,8 +63,8 @@ void AshKeyboardController::EnableKeyboard() { ...@@ -63,8 +63,8 @@ void AshKeyboardController::EnableKeyboard() {
std::unique_ptr<keyboard::KeyboardUI> keyboard_ui = std::unique_ptr<keyboard::KeyboardUI> keyboard_ui =
Shell::Get()->shell_delegate()->CreateKeyboardUI(); Shell::Get()->shell_delegate()->CreateKeyboardUI();
DCHECK(keyboard_ui); DCHECK(keyboard_ui);
keyboard_controller_->EnableKeyboard( keyboard_controller_->EnableKeyboard(std::move(keyboard_ui),
std::move(keyboard_ui), Shell::Get()->virtual_keyboard_controller()); virtual_keyboard_controller_.get());
ActivateKeyboard(); ActivateKeyboard();
} }
...@@ -77,6 +77,14 @@ void AshKeyboardController::DisableKeyboard() { ...@@ -77,6 +77,14 @@ void AshKeyboardController::DisableKeyboard() {
keyboard_controller_->DisableKeyboard(); keyboard_controller_->DisableKeyboard();
} }
void AshKeyboardController::CreateVirtualKeyboard() {
virtual_keyboard_controller_ = std::make_unique<VirtualKeyboardController>();
}
void AshKeyboardController::DestroyVirtualKeyboard() {
virtual_keyboard_controller_.reset();
}
void AshKeyboardController::AddObserver( void AshKeyboardController::AddObserver(
mojom::KeyboardControllerObserverAssociatedPtrInfo observer) { mojom::KeyboardControllerObserverAssociatedPtrInfo observer) {
mojom::KeyboardControllerObserverAssociatedPtr observer_ptr; mojom::KeyboardControllerObserverAssociatedPtr observer_ptr;
......
...@@ -26,6 +26,7 @@ class KeyboardController; ...@@ -26,6 +26,7 @@ class KeyboardController;
namespace ash { namespace ash {
class SessionController; class SessionController;
class VirtualKeyboardController;
// Contains and observes a keyboard::KeyboardController instance. Ash specific // Contains and observes a keyboard::KeyboardController instance. Ash specific
// behavior, including implementing the mojo interface, is implemented in this // behavior, including implementing the mojo interface, is implemented in this
...@@ -49,6 +50,12 @@ class ASH_EXPORT AshKeyboardController ...@@ -49,6 +50,12 @@ class ASH_EXPORT AshKeyboardController
// Disables the keyboard. // Disables the keyboard.
void DisableKeyboard(); void DisableKeyboard();
// Create or destroy the virtual keyboard. Called from Shell. TODO(stevenjb):
// Fix dependencies so that the virtual keyboard can be created with the
// keyboard controller.
void CreateVirtualKeyboard();
void DestroyVirtualKeyboard();
// mojom::KeyboardController: // mojom::KeyboardController:
void GetKeyboardConfig(GetKeyboardConfigCallback callback) override; void GetKeyboardConfig(GetKeyboardConfigCallback callback) override;
void SetKeyboardConfig( void SetKeyboardConfig(
...@@ -67,6 +74,10 @@ class ASH_EXPORT AshKeyboardController ...@@ -67,6 +74,10 @@ class ASH_EXPORT AshKeyboardController
return keyboard_controller_.get(); return keyboard_controller_.get();
} }
VirtualKeyboardController* virtual_keyboard_controller() {
return virtual_keyboard_controller_.get();
}
private: private:
// Ensures that the keyboard controller is activated for the primary window. // Ensures that the keyboard controller is activated for the primary window.
void ActivateKeyboard(); void ActivateKeyboard();
...@@ -83,6 +94,7 @@ class ASH_EXPORT AshKeyboardController ...@@ -83,6 +94,7 @@ class ASH_EXPORT AshKeyboardController
SessionController* session_controller_; // unowned SessionController* session_controller_; // unowned
std::unique_ptr<keyboard::KeyboardController> keyboard_controller_; std::unique_ptr<keyboard::KeyboardController> keyboard_controller_;
std::unique_ptr<VirtualKeyboardController> virtual_keyboard_controller_;
mojo::BindingSet<mojom::KeyboardController> bindings_; mojo::BindingSet<mojom::KeyboardController> bindings_;
mojo::AssociatedInterfacePtrSet<mojom::KeyboardControllerObserver> observers_; mojo::AssociatedInterfacePtrSet<mojom::KeyboardControllerObserver> observers_;
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "ash/accessibility/accessibility_controller.h" #include "ash/accessibility/accessibility_controller.h"
#include "ash/ime/ime_controller.h" #include "ash/ime/ime_controller.h"
#include "ash/ime/test_ime_controller_client.h" #include "ash/ime/test_ime_controller_client.h"
#include "ash/keyboard/ash_keyboard_controller.h"
#include "ash/shell.h" #include "ash/shell.h"
#include "ash/system/tray/system_tray_notifier.h" #include "ash/system/tray/system_tray_notifier.h"
#include "ash/system/virtual_keyboard/virtual_keyboard_observer.h" #include "ash/system/virtual_keyboard/virtual_keyboard_observer.h"
...@@ -31,7 +32,7 @@ namespace ash { ...@@ -31,7 +32,7 @@ namespace ash {
namespace { namespace {
VirtualKeyboardController* GetVirtualKeyboardController() { VirtualKeyboardController* GetVirtualKeyboardController() {
return Shell::Get()->virtual_keyboard_controller(); return Shell::Get()->ash_keyboard_controller()->virtual_keyboard_controller();
} }
} // namespace } // namespace
......
...@@ -56,7 +56,6 @@ ...@@ -56,7 +56,6 @@
#include "ash/ime/ime_controller.h" #include "ash/ime/ime_controller.h"
#include "ash/ime/ime_focus_handler.h" #include "ash/ime/ime_focus_handler.h"
#include "ash/keyboard/ash_keyboard_controller.h" #include "ash/keyboard/ash_keyboard_controller.h"
#include "ash/keyboard/virtual_keyboard_controller.h"
#include "ash/laser/laser_pointer_controller.h" #include "ash/laser/laser_pointer_controller.h"
#include "ash/login/login_screen_controller.h" #include "ash/login/login_screen_controller.h"
#include "ash/login_status.h" #include "ash/login_status.h"
...@@ -755,7 +754,7 @@ Shell::~Shell() { ...@@ -755,7 +754,7 @@ Shell::~Shell() {
// Destroy the virtual keyboard controller before the tablet mode controller // Destroy the virtual keyboard controller before the tablet mode controller
// since the latters destructor triggers events that the former is listening // since the latters destructor triggers events that the former is listening
// to but no longer cares about. // to but no longer cares about.
virtual_keyboard_controller_.reset(); ash_keyboard_controller_->DestroyVirtualKeyboard();
// Depends on |tablet_mode_controller_|. // Depends on |tablet_mode_controller_|.
shelf_controller_->Shutdown(); shelf_controller_->Shutdown();
...@@ -1227,9 +1226,7 @@ void Shell::Init( ...@@ -1227,9 +1226,7 @@ void Shell::Init(
? std::make_unique<AssistantController>() ? std::make_unique<AssistantController>()
: nullptr; : nullptr;
// Needs to be created after InitDisplays() since it may cause the virtual ash_keyboard_controller_->CreateVirtualKeyboard();
// keyboard to be deployed.
virtual_keyboard_controller_ = std::make_unique<VirtualKeyboardController>();
cursor_manager_->HideCursor(); // Hide the mouse cursor on startup. cursor_manager_->HideCursor(); // Hide the mouse cursor on startup.
cursor_manager_->SetCursor(ui::CursorType::kPointer); cursor_manager_->SetCursor(ui::CursorType::kPointer);
......
...@@ -187,7 +187,6 @@ class ToastManager; ...@@ -187,7 +187,6 @@ class ToastManager;
class TouchDevicesController; class TouchDevicesController;
class TrayAction; class TrayAction;
class TrayBluetoothHelper; class TrayBluetoothHelper;
class VirtualKeyboardController;
class VideoActivityNotifier; class VideoActivityNotifier;
class VideoDetector; class VideoDetector;
class VoiceInteractionController; class VoiceInteractionController;
...@@ -531,9 +530,6 @@ class ASH_EXPORT Shell : public SessionObserver, ...@@ -531,9 +530,6 @@ class ASH_EXPORT Shell : public SessionObserver,
} }
UserMetricsRecorder* metrics() { return user_metrics_recorder_.get(); } UserMetricsRecorder* metrics() { return user_metrics_recorder_.get(); }
VideoDetector* video_detector() { return video_detector_.get(); } VideoDetector* video_detector() { return video_detector_.get(); }
VirtualKeyboardController* virtual_keyboard_controller() {
return virtual_keyboard_controller_.get();
}
VoiceInteractionController* voice_interaction_controller() { VoiceInteractionController* voice_interaction_controller() {
return voice_interaction_controller_.get(); return voice_interaction_controller_.get();
} }
...@@ -830,7 +826,6 @@ class ASH_EXPORT Shell : public SessionObserver, ...@@ -830,7 +826,6 @@ class ASH_EXPORT Shell : public SessionObserver,
std::unique_ptr<BluetoothPowerController> bluetooth_power_controller_; std::unique_ptr<BluetoothPowerController> bluetooth_power_controller_;
std::unique_ptr<TrayBluetoothHelper> tray_bluetooth_helper_; std::unique_ptr<TrayBluetoothHelper> tray_bluetooth_helper_;
std::unique_ptr<AshKeyboardController> ash_keyboard_controller_; std::unique_ptr<AshKeyboardController> ash_keyboard_controller_;
std::unique_ptr<VirtualKeyboardController> virtual_keyboard_controller_;
// Controls video output device state. // Controls video output device state.
std::unique_ptr<display::DisplayConfigurator> display_configurator_; std::unique_ptr<display::DisplayConfigurator> display_configurator_;
std::unique_ptr<DisplayOutputProtection> display_output_protection_; std::unique_ptr<DisplayOutputProtection> display_output_protection_;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "ash/ime/ime_controller.h" #include "ash/ime/ime_controller.h"
#include "ash/ime/ime_switch_type.h" #include "ash/ime/ime_switch_type.h"
#include "ash/keyboard/ash_keyboard_controller.h"
#include "ash/keyboard/virtual_keyboard_controller.h" #include "ash/keyboard/virtual_keyboard_controller.h"
#include "ash/public/cpp/ash_features.h" #include "ash/public/cpp/ash_features.h"
#include "ash/public/interfaces/ime_info.mojom.h" #include "ash/public/interfaces/ime_info.mojom.h"
...@@ -330,7 +331,10 @@ void ImeListView::HandleButtonPressed(views::Button* sender, ...@@ -330,7 +331,10 @@ void ImeListView::HandleButtonPressed(views::Button* sender,
const ui::Event& event) { const ui::Event& event) {
DCHECK_EQ(sender, keyboard_status_row_->toggle()); DCHECK_EQ(sender, keyboard_status_row_->toggle());
Shell::Get()->virtual_keyboard_controller()->ToggleIgnoreExternalKeyboard(); Shell::Get()
->ash_keyboard_controller()
->virtual_keyboard_controller()
->ToggleIgnoreExternalKeyboard();
last_selected_item_id_.clear(); last_selected_item_id_.clear();
last_item_selected_with_keyboard_ = false; last_item_selected_with_keyboard_ = false;
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "ash/accessibility/accessibility_controller.h" #include "ash/accessibility/accessibility_controller.h"
#include "ash/ime/ime_controller.h" #include "ash/ime/ime_controller.h"
#include "ash/keyboard/ash_keyboard_controller.h"
#include "ash/keyboard/virtual_keyboard_controller.h" #include "ash/keyboard/virtual_keyboard_controller.h"
#include "ash/public/cpp/ash_constants.h" #include "ash/public/cpp/ash_constants.h"
#include "ash/resources/vector_icons/vector_icons.h" #include "ash/resources/vector_icons/vector_icons.h"
...@@ -397,8 +398,10 @@ void ImeMenuTray::ShowKeyboardWithKeyset( ...@@ -397,8 +398,10 @@ void ImeMenuTray::ShowKeyboardWithKeyset(
chromeos::input_method::mojom::ImeKeyset keyset) { chromeos::input_method::mojom::ImeKeyset keyset) {
CloseBubble(); CloseBubble();
Shell::Get()->virtual_keyboard_controller()->ForceShowKeyboardWithKeyset( Shell::Get()
keyset); ->ash_keyboard_controller()
->virtual_keyboard_controller()
->ForceShowKeyboardWithKeyset(keyset);
} }
bool ImeMenuTray::ShouldShowBottomButtons() { bool ImeMenuTray::ShouldShowBottomButtons() {
......
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