Commit 68ad76f4 authored by Josiah K's avatar Josiah K Committed by Commit Bot

Add Docked Magnifier support to Accessibility Common extension

Bug: 1131153
Change-Id: I959958dbfe5d81cac99bd3f747170fd60921e415
AX-Relnotes: Adds Docked Magnifier support for active-descendant focus-following
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2465491
Commit-Queue: Josiah Krutz <josiahk@google.com>
Reviewed-by: default avatarDavid Tseng <dtseng@chromium.org>
Reviewed-by: default avatarTaylor Bergquist <tbergquist@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Auto-Submit: Josiah Krutz <josiahk@google.com>
Cr-Commit-Position: refs/heads/master@{#823896}
parent 447e3030
...@@ -1044,7 +1044,8 @@ void AccessibilityManager::SetProfile(Profile* profile) { ...@@ -1044,7 +1044,8 @@ void AccessibilityManager::SetProfile(Profile* profile) {
// All features supported by accessibility common. // All features supported by accessibility common.
static const char* kAccessibilityCommonFeatures[] = { static const char* kAccessibilityCommonFeatures[] = {
ash::prefs::kAccessibilityAutoclickEnabled, ash::prefs::kAccessibilityAutoclickEnabled,
ash::prefs::kAccessibilityScreenMagnifierEnabled}; ash::prefs::kAccessibilityScreenMagnifierEnabled,
ash::prefs::kDockedMagnifierEnabled};
if (profile) { if (profile) {
// TODO(yoshiki): Move following code to PrefHandler. // TODO(yoshiki): Move following code to PrefHandler.
......
...@@ -323,7 +323,6 @@ IN_PROC_BROWSER_TEST_F(AccessibilityFeaturesApiTest, ObserveFeatures) { ...@@ -323,7 +323,6 @@ IN_PROC_BROWSER_TEST_F(AccessibilityFeaturesApiTest, ObserveFeatures) {
std::vector<std::string> enabled_features = { std::vector<std::string> enabled_features = {
"caretHighlight", "caretHighlight",
"cursorColor", "cursorColor",
"dockedMagnifier",
"focusHighlight", "focusHighlight",
"stickyKeys", "stickyKeys",
}; };
...@@ -331,6 +330,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityFeaturesApiTest, ObserveFeatures) { ...@@ -331,6 +330,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityFeaturesApiTest, ObserveFeatures) {
std::vector<std::string> disabled_features = { std::vector<std::string> disabled_features = {
"autoclick", "autoclick",
"cursorHighlight", "cursorHighlight",
"dockedMagnifier",
"highContrast", "highContrast",
"largeCursor", "largeCursor",
"screenMagnifier", "screenMagnifier",
......
...@@ -44,6 +44,11 @@ class AccessibilityCommon { ...@@ -44,6 +44,11 @@ class AccessibilityCommon {
{}, this.onMagnifierUpdated_.bind(this)); {}, this.onMagnifierUpdated_.bind(this));
chrome.accessibilityFeatures.screenMagnifier.onChange.addListener( chrome.accessibilityFeatures.screenMagnifier.onChange.addListener(
this.onMagnifierUpdated_.bind(this)); this.onMagnifierUpdated_.bind(this));
chrome.accessibilityFeatures.dockedMagnifier.get(
{}, this.onMagnifierUpdated_.bind(this));
chrome.accessibilityFeatures.dockedMagnifier.onChange.addListener(
this.onMagnifierUpdated_.bind(this));
} }
/** /**
......
...@@ -75,6 +75,46 @@ TEST_F( ...@@ -75,6 +75,46 @@ TEST_F(
}); });
}); });
TEST_F(
'MagnifierE2ETest', 'MovesDockedMagnifierToActiveDescendant', function() {
const site = `
<div role="group" id="parent" aria-activedescendant="apple">
<div id="apple" role="treeitem">Apple</div>
<div id="banana" role="treeitem">Banana</div>
</div>
<script>
const parent = document.getElementById('parent');
parent.addEventListener('click', function() {
parent.setAttribute('aria-activedescendant', 'banana');
});
</script>
`;
this.runWithLoadedTree(site, async function(root) {
// Enable docked magnifier.
await new Promise(resolve => {
chrome.accessibilityFeatures.dockedMagnifier.set(
{value: true}, resolve);
});
// Validate magnifier wants to move to root.
const rootLocation = await getNextMagnifierLocation();
assertTrue(RectUtil.equal(rootLocation, root.location));
// Click parent to change active descendant from apple to banana.
const parent = root.find({role: RoleType.GROUP});
parent.doDefault();
// Register and wait for rect from magnifier.
const rect = await getNextMagnifierLocation();
// Validate rect from magnifier is rect of banana.
const bananaNode =
root.find({role: RoleType.TREE_ITEM, attributes: {name: 'Banana'}});
assertTrue(RectUtil.equal(rect, bananaNode.location));
}, {returnPage: true});
});
// Disabled - flaky: https://crbug.com/1139939 // Disabled - flaky: https://crbug.com/1139939
TEST_F( TEST_F(
'MagnifierE2ETest', 'DISABLED_MovesScreenMagnifierToActiveDescendant', 'MagnifierE2ETest', 'DISABLED_MovesScreenMagnifierToActiveDescendant',
......
...@@ -77,7 +77,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionDialogBoundsTest, Test_OpenFileDialog) { ...@@ -77,7 +77,10 @@ IN_PROC_BROWSER_TEST_F(ExtensionDialogBoundsTest, Test_OpenFileDialog) {
ShowAndVerifyUi(); ShowAndVerifyUi();
} }
IN_PROC_BROWSER_TEST_F(ExtensionDialogBoundsTest, Test_BigExtensionDialog) { // TODO(crbug.com/1012025): Test crashes as enabling docked magnifier now loads
// another extension (Accessibility Common).
IN_PROC_BROWSER_TEST_F(ExtensionDialogBoundsTest,
DISABLED_Test_BigExtensionDialog) {
EnableDockedMagnifier(); EnableDockedMagnifier();
ShowAndVerifyUi(); ShowAndVerifyUi();
} }
......
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