Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1287)

Unified Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js

Issue 1457683009: Complete live region support in ChromeVox Next. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed last feedback Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
index c1645450668f531338d36505d77edf2ba4e6fb1a..4b6df72f657d8c67d749ecef2089b2ea43d238e0 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/desktop_automation_handler.js
@@ -8,8 +8,8 @@
goog.provide('DesktopAutomationHandler');
-goog.require('Background');
goog.require('BaseAutomationHandler');
+goog.require('ChromeVoxState');
goog.scope(function() {
var AutomationEvent = chrome.automation.AutomationEvent;
@@ -61,20 +61,20 @@ DesktopAutomationHandler.prototype = {
if (!node)
return;
- var prevRange = global.backgroundObj.currentRange;
+ var prevRange = ChromeVoxState.instance.currentRange;
- global.backgroundObj.currentRange = cursors.Range.fromNode(node);
+ ChromeVoxState.instance.setCurrentRange(cursors.Range.fromNode(node));
// Check to see if we've crossed roots. Continue if we've crossed roots or
// are not within web content.
if (node.root.role == RoleType.desktop ||
!prevRange ||
prevRange.start.node.root != node.root)
- global.backgroundObj.refreshMode(node.root.docUrl || '');
+ ChromeVoxState.instance.refreshMode(node.root.docUrl || '');
// Don't process nodes inside of web content if ChromeVox Next is inactive.
if (node.root.role != RoleType.desktop &&
- global.backgroundObj.mode === ChromeVoxMode.CLASSIC) {
+ ChromeVoxState.instance.mode === ChromeVoxMode.CLASSIC) {
if (cvox.ChromeVox.isChromeOS)
chrome.accessibilityPrivate.setFocusRing([]);
return;
@@ -83,11 +83,11 @@ DesktopAutomationHandler.prototype = {
// Don't output if focused node hasn't changed.
if (prevRange &&
evt.type == 'focus' &&
- global.backgroundObj.currentRange.equals(prevRange))
+ ChromeVoxState.instance.currentRange.equals(prevRange))
return;
new Output().withSpeechAndBraille(
- global.backgroundObj.currentRange, prevRange, evt.type)
+ ChromeVoxState.instance.currentRange, prevRange, evt.type)
.go();
},
@@ -102,7 +102,7 @@ DesktopAutomationHandler.prototype = {
// Don't process nodes inside of web content if ChromeVox Next is inactive.
if (node.root.role != RoleType.desktop &&
- global.backgroundObj.mode === ChromeVoxMode.CLASSIC) {
+ ChromeVoxState.instance.mode === ChromeVoxMode.CLASSIC) {
return;
}
@@ -129,7 +129,7 @@ DesktopAutomationHandler.prototype = {
if (node.role == RoleType.rootWebArea) {
// Discard focus events for root web areas when focus was previously
// placed on a descendant.
- var currentRange = global.backgroundObj.currentRange;
+ var currentRange = ChromeVoxState.instance.currentRange;
if (currentRange && currentRange.start.node.root == node)
return;
@@ -152,20 +152,20 @@ DesktopAutomationHandler.prototype = {
* @param {Object} evt
*/
onLoadComplete: function(evt) {
- global.backgroundObj.refreshMode(evt.target.docUrl);
+ ChromeVoxState.instance.refreshMode(evt.target.docUrl);
// Don't process nodes inside of web content if ChromeVox Next is inactive.
if (evt.target.root.role != RoleType.desktop &&
- global.backgroundObj.mode === ChromeVoxMode.CLASSIC)
+ ChromeVoxState.instance.mode === ChromeVoxMode.CLASSIC)
return;
// If initial focus was already placed on this page (e.g. if a user starts
// tabbing before load complete), then don't move ChromeVox's position on
// the page.
- if (global.backgroundObj.currentRange &&
- global.backgroundObj.currentRange.start.node.role !=
+ if (ChromeVoxState.instance.currentRange &&
+ ChromeVoxState.instance.currentRange.start.node.role !=
RoleType.rootWebArea &&
- global.backgroundObj.currentRange.start.node.root.docUrl ==
+ ChromeVoxState.instance.currentRange.start.node.root.docUrl ==
evt.target.docUrl)
return;
@@ -182,11 +182,11 @@ DesktopAutomationHandler.prototype = {
AutomationPredicate.leaf);
if (node)
- global.backgroundObj.currentRange = cursors.Range.fromNode(node);
+ ChromeVoxState.instance.setCurrentRange(cursors.Range.fromNode(node));
- if (global.backgroundObj.currentRange)
+ if (ChromeVoxState.instance.currentRange)
new Output().withSpeechAndBraille(
- global.backgroundObj.currentRange, null, evt.type)
+ ChromeVoxState.instance.currentRange, null, evt.type)
.go();
},
@@ -200,15 +200,16 @@ DesktopAutomationHandler.prototype = {
// Don't process nodes inside of web content if ChromeVox Next is inactive.
if (evt.target.root.role != RoleType.desktop &&
- global.backgroundObj.mode === ChromeVoxMode.CLASSIC)
+ ChromeVoxState.instance.mode === ChromeVoxMode.CLASSIC)
return;
if (!evt.target.state.focused)
return;
- if (!global.backgroundObj.currentRange) {
+ if (!ChromeVoxState.instance.currentRange) {
this.onEventDefault(evt);
- global.backgroundObj.currentRange = cursors.Range.fromNode(evt.target);
+ ChromeVoxState.instance.setCurrentRange(
+ cursors.Range.fromNode(evt.target));
}
this.createEditableTextHandlerIfNeeded_(evt.target);
@@ -222,7 +223,7 @@ DesktopAutomationHandler.prototype = {
this.editableTextHandler_.changed(textChangeEvent);
new Output().withBraille(
- global.backgroundObj.currentRange, null, evt.type)
+ ChromeVoxState.instance.currentRange, null, evt.type)
.go();
},
@@ -233,16 +234,18 @@ DesktopAutomationHandler.prototype = {
onValueChanged: function(evt) {
// Don't process nodes inside of web content if ChromeVox Next is inactive.
if (evt.target.root.role != RoleType.desktop &&
- global.backgroundObj.mode === ChromeVoxMode.CLASSIC)
+ ChromeVoxState.instance.mode === ChromeVoxMode.CLASSIC)
return;
if (!evt.target.state.focused)
return;
// Value change events fire on web editables when typing. Suppress them.
- if (!global.backgroundObj.currentRange || !this.isEditable_(evt.target)) {
+ if (!ChromeVoxState.instance.currentRange ||
+ !this.isEditable_(evt.target)) {
this.onEventDefault(evt);
- global.backgroundObj.currentRange = cursors.Range.fromNode(evt.target);
+ ChromeVoxState.instance.setCurrentRange(
+ cursors.Range.fromNode(evt.target));
}
},
@@ -251,7 +254,7 @@ DesktopAutomationHandler.prototype = {
* @override
*/
onScrollPositionChanged: function(evt) {
- var currentRange = global.backgroundObj.currentRange;
+ var currentRange = ChromeVoxState.instance.currentRange;
if (currentRange)
new Output().withLocation(currentRange, null, evt.type).go();
},
@@ -262,7 +265,7 @@ DesktopAutomationHandler.prototype = {
*/
createEditableTextHandlerIfNeeded_: function(node) {
if (!this.editableTextHandler_ ||
- node != global.backgroundObj.currentRange.start.node) {
+ node != ChromeVoxState.instance.currentRange.start.node) {
var start = node.textSelStart;
var end = node.textSelEnd;
if (start > end) {

Powered by Google App Engine
This is Rietveld 408576698