| // Copyright 2016 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/keyboard/keyboard_ui.h" |
| |
| #include "ash/accessibility_delegate.h" |
| #include "ash/keyboard/keyboard_ui_observer.h" |
| #include "ash/shell.h" |
| #include "ash/system/tray/system_tray_notifier.h" |
| #include "ash/system/tray_accessibility.h" |
| #include "base/memory/ptr_util.h" |
| #include "ui/keyboard/keyboard_controller.h" |
| |
| namespace ash { |
| |
| class KeyboardUIImpl : public KeyboardUI, public AccessibilityObserver { |
| public: |
| KeyboardUIImpl() { |
| // The Shell may not exist in some unit tests. |
| Shell::GetInstance()->system_tray_notifier()->AddAccessibilityObserver( |
| this); |
| } |
| |
| ~KeyboardUIImpl() override {} |
| |
| // KeyboardUI: |
| void Show() override { |
| keyboard::KeyboardController::GetInstance()->ShowKeyboard(true); |
| } |
| void Hide() override { |
| // Do nothing as this is called from ash::Shell, which also calls through |
| // to the appropriate keyboard functions. |
| } |
| bool IsEnabled() override { |
| return Shell::GetInstance() |
| ->accessibility_delegate() |
| ->IsVirtualKeyboardEnabled(); |
| } |
| |
| // AccessibilityObserver: |
| void OnAccessibilityModeChanged( |
| ui::AccessibilityNotificationVisibility notify) override { |
| FOR_EACH_OBSERVER(KeyboardUIObserver, *observers(), |
| OnKeyboardEnabledStateChanged(IsEnabled())); |
| } |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(KeyboardUIImpl); |
| }; |
| |
| KeyboardUI::~KeyboardUI() {} |
| |
| // static |
| std::unique_ptr<KeyboardUI> KeyboardUI::Create() { |
| return base::WrapUnique(new KeyboardUIImpl); |
| } |
| |
| void KeyboardUI::AddObserver(KeyboardUIObserver* observer) { |
| observers_.AddObserver(observer); |
| } |
| |
| void KeyboardUI::RemoveObserver(KeyboardUIObserver* observer) { |
| observers_.RemoveObserver(observer); |
| } |
| |
| KeyboardUI::KeyboardUI() {} |
| |
| } // namespace ash |