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