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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js

Issue 1589623002: Keep track of accessibility focus across windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git cl format Created 4 years, 10 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview The entry point for all ChromeVox2 related code for the 6 * @fileoverview The entry point for all ChromeVox2 related code for the
7 * background page. 7 * background page.
8 */ 8 */
9 9
10 goog.provide('Background'); 10 goog.provide('Background');
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 cvox.ChromeVoxKbHandler.commandHandler = this.onGotCommand.bind(this); 119 cvox.ChromeVoxKbHandler.commandHandler = this.onGotCommand.bind(this);
120 120
121 // Classic keymap. 121 // Classic keymap.
122 cvox.ChromeVoxKbHandler.handlerKeyMap = cvox.KeyMap.fromDefaults(); 122 cvox.ChromeVoxKbHandler.handlerKeyMap = cvox.KeyMap.fromDefaults();
123 123
124 // Live region handler. 124 // Live region handler.
125 this.liveRegions_ = new LiveRegions(this); 125 this.liveRegions_ = new LiveRegions(this);
126 126
127 if (!chrome.accessibilityPrivate.setKeyboardListener) 127 if (!chrome.accessibilityPrivate.setKeyboardListener)
128 chrome.accessibilityPrivate.setKeyboardListener = function() {}; 128 chrome.accessibilityPrivate.setKeyboardListener = function() {};
129
130 var focus = chrome.automation.getFocus();
131 if (focus)
132 this.setCurrentRange(cursors.Range.fromNode(focus));
129 }; 133 };
130 134
131 Background.prototype = { 135 Background.prototype = {
132 __proto__: ChromeVoxState.prototype, 136 __proto__: ChromeVoxState.prototype,
133 137
134 /** 138 /**
135 * @override 139 * @override
136 */ 140 */
137 getMode: function() { 141 getMode: function() {
138 return this.mode_; 142 return this.mode_;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 }.bind(this)); 187 }.bind(this));
184 188
185 // If switching out of a ChromeVox Next mode, make sure we cancel 189 // If switching out of a ChromeVox Next mode, make sure we cancel
186 // the progress loading sound just in case. 190 // the progress loading sound just in case.
187 if ((this.mode_ === ChromeVoxMode.NEXT || 191 if ((this.mode_ === ChromeVoxMode.NEXT ||
188 this.mode_ === ChromeVoxMode.FORCE_NEXT) && 192 this.mode_ === ChromeVoxMode.FORCE_NEXT) &&
189 this.mode_ != mode) { 193 this.mode_ != mode) {
190 cvox.ChromeVox.earcons.cancelEarcon(cvox.Earcon.PAGE_START_LOADING); 194 cvox.ChromeVox.earcons.cancelEarcon(cvox.Earcon.PAGE_START_LOADING);
191 } 195 }
192 196
197 // If switching to Classic from any automation-API-based mode,
198 // clear the focus ring.
199 if (mode === ChromeVoxMode.CLASSIC && mode != this.mode_) {
200 if (cvox.ChromeVox.isChromeOS)
201 chrome.accessibilityPrivate.setFocusRing([]);
202 }
203
204 // If switching away from Classic to any automation-API-based mode,
205 // update the range based on what's focused.
206 if (this.mode_ === ChromeVoxMode.CLASSIC && mode != this.mode_) {
207 var focus = chrome.automation.getFocus();
208 if (focus)
209 this.setCurrentRange(cursors.Range.fromNode(focus));
210 }
211
193 this.mode_ = mode; 212 this.mode_ = mode;
194 }, 213 },
195 214
196 /** 215 /**
197 * Mode refreshes takes into account both |url| and the current ChromeVox 216 * Mode refreshes takes into account both |url| and the current ChromeVox
198 * range. The latter gets used to decide if the user is or isn't in web 217 * range. The latter gets used to decide if the user is or isn't in web
199 * content. The focused state also needs to be set for this info to be 218 * content. The focused state also needs to be set for this info to be
200 * reliable. 219 * reliable.
201 * @override 220 * @override
202 */ 221 */
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 newMode = ChromeVoxMode.FORCE_NEXT; 477 newMode = ChromeVoxMode.FORCE_NEXT;
459 } 478 }
460 this.setMode(newMode, true); 479 this.setMode(newMode, true);
461 480
462 var isClassic = 481 var isClassic =
463 newMode == ChromeVoxMode.CLASSIC || newMode == ChromeVoxMode.COMPAT; 482 newMode == ChromeVoxMode.CLASSIC || newMode == ChromeVoxMode.COMPAT;
464 483
465 // Leaving unlocalized as 'next' isn't an official name. 484 // Leaving unlocalized as 'next' isn't an official name.
466 cvox.ChromeVox.tts.speak(isClassic ? 485 cvox.ChromeVox.tts.speak(isClassic ?
467 'classic' : 'next', cvox.QueueMode.FLUSH, {doNotInterrupt: true}); 486 'classic' : 'next', cvox.QueueMode.FLUSH, {doNotInterrupt: true});
487
488 // If the new mode is Classic, return now so we don't announce
David Tseng 2016/01/28 02:00:56 Maybe add something to queue the next utterance?
dmazzoni 2016/01/30 00:02:41 For Classic? Did you have something specific in mi
489 // anything more.
490 if (newMode == ChromeVoxMode.CLASSIC)
491 return false;
492
David Tseng 2016/01/28 02:00:56 nit: extra line
dmazzoni 2016/01/30 00:02:41 Done.
468 break; 493 break;
469 case 'toggleStickyMode': 494 case 'toggleStickyMode':
470 cvox.ChromeVoxBackground.setPref('sticky', 495 cvox.ChromeVoxBackground.setPref('sticky',
471 !cvox.ChromeVox.isStickyPrefOn, 496 !cvox.ChromeVox.isStickyPrefOn,
472 true); 497 true);
473 498
474 if (cvox.ChromeVox.isStickyPrefOn) 499 if (cvox.ChromeVox.isStickyPrefOn)
475 chrome.accessibilityPrivate.setKeyboardListener(true, true); 500 chrome.accessibilityPrivate.setKeyboardListener(true, true);
476 else 501 else
477 chrome.accessibilityPrivate.setKeyboardListener(true, false); 502 chrome.accessibilityPrivate.setKeyboardListener(true, false);
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 return glob.replace(/[.+^$(){}|[\]\\]/g, '\\$&') 720 return glob.replace(/[.+^$(){}|[\]\\]/g, '\\$&')
696 .replace(/\*/g, '.*') 721 .replace(/\*/g, '.*')
697 .replace(/\?/g, '.'); 722 .replace(/\?/g, '.');
698 }).join('|') + ')$'); 723 }).join('|') + ')$');
699 }; 724 };
700 725
701 /** @type {Background} */ 726 /** @type {Background} */
702 global.backgroundObj = new Background(); 727 global.backgroundObj = new Background();
703 728
704 }); // goog.scope 729 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698