Commit 408c0947 authored by David Tseng's avatar David Tseng Committed by Commit Bot

Ensure Switch Access cleans up virtual keyboard state

R=anastasi@google.com, dmazzoni@chromium.org

Fixed: 1127250
AX-Relnotes: n/a
Change-Id: Ib716aedf39c80333ef5181cf2a40f6d40e52e298
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2443535Reviewed-by: default avatarAnastasia Helfinstein <anastasi@google.com>
Commit-Queue: David Tseng <dtseng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#813029}
parent 7dadbe81
...@@ -47,6 +47,7 @@ ...@@ -47,6 +47,7 @@
#include "chrome/browser/extensions/api/braille_display_private/stub_braille_controller.h" #include "chrome/browser/extensions/api/braille_display_private/stub_braille_controller.h"
#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/ui/ash/keyboard/chrome_keyboard_controller_client.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_util.h" #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
#include "chrome/browser/ui/singleton_tabs.h" #include "chrome/browser/ui/singleton_tabs.h"
#include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_paths.h"
...@@ -1436,6 +1437,12 @@ void AccessibilityManager::PostUnloadSelectToSpeak() { ...@@ -1436,6 +1437,12 @@ void AccessibilityManager::PostUnloadSelectToSpeak() {
void AccessibilityManager::PostLoadSwitchAccess() { void AccessibilityManager::PostLoadSwitchAccess() {
InitializeFocusRings(extension_misc::kSwitchAccessExtensionId); InitializeFocusRings(extension_misc::kSwitchAccessExtensionId);
was_vk_enabled_before_switch_access_ =
ChromeKeyboardControllerClient::Get()->IsEnableFlagSet(
keyboard::KeyboardEnableFlag::kExtensionEnabled);
ChromeKeyboardControllerClient::Get()->SetEnableFlag(
keyboard::KeyboardEnableFlag::kExtensionEnabled);
} }
void AccessibilityManager::PostUnloadSwitchAccess() { void AccessibilityManager::PostUnloadSwitchAccess() {
...@@ -1444,6 +1451,13 @@ void AccessibilityManager::PostUnloadSwitchAccess() { ...@@ -1444,6 +1451,13 @@ void AccessibilityManager::PostUnloadSwitchAccess() {
// Clear the accessibility focus ring. // Clear the accessibility focus ring.
RemoveFocusRings(extension_misc::kSwitchAccessExtensionId); RemoveFocusRings(extension_misc::kSwitchAccessExtensionId);
if (!was_vk_enabled_before_switch_access_) {
ChromeKeyboardControllerClient::Get()->ClearEnableFlag(
keyboard::KeyboardEnableFlag::kExtensionEnabled);
} else {
was_vk_enabled_before_switch_access_ = false;
}
} }
void AccessibilityManager::PostLoadAccessibilityCommon() { void AccessibilityManager::PostLoadAccessibilityCommon() {
......
...@@ -489,10 +489,14 @@ class AccessibilityManager ...@@ -489,10 +489,14 @@ class AccessibilityManager
// Used to set the audio focus enforcement type for ChromeVox. // Used to set the audio focus enforcement type for ChromeVox.
mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_manager_; mojo::Remote<media_session::mojom::AudioFocusManager> audio_focus_manager_;
// Whether the virtual keyboard was enabled before Switch Access loaded.
bool was_vk_enabled_before_switch_access_ = false;
base::WeakPtrFactory<AccessibilityManager> weak_ptr_factory_{this}; base::WeakPtrFactory<AccessibilityManager> weak_ptr_factory_{this};
friend class DictationTest; friend class DictationTest;
friend class SwitchAccessTest; friend class SwitchAccessTest;
DISALLOW_COPY_AND_ASSIGN(AccessibilityManager); DISALLOW_COPY_AND_ASSIGN(AccessibilityManager);
}; };
......
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
class SwitchAccess { class SwitchAccess {
static initialize() { static initialize() {
SwitchAccess.instance = new SwitchAccess(); SwitchAccess.instance = new SwitchAccess();
chrome.virtualKeyboardPrivate.setKeyboardState(
chrome.virtualKeyboardPrivate.KeyboardState.ENABLED);
chrome.automation.getDesktop((desktop) => { chrome.automation.getDesktop((desktop) => {
// NavigationManager must be initialized first. // NavigationManager must be initialized first.
......
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