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

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

Issue 1513933005: Reland: Make the check for compat mode explicit. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 chrome.tabs.query({active: true}, function(tabs) { 162 chrome.tabs.query({active: true}, function(tabs) {
163 if (mode === ChromeVoxMode.CLASSIC) { 163 if (mode === ChromeVoxMode.CLASSIC) {
164 // Generally, we don't want to inject classic content scripts as it is 164 // Generally, we don't want to inject classic content scripts as it is
165 // done by the extension system at document load. The exception is when 165 // done by the extension system at document load. The exception is when
166 // we toggle classic on manually as part of a user command. 166 // we toggle classic on manually as part of a user command.
167 if (opt_injectClassic) 167 if (opt_injectClassic)
168 cvox.ChromeVox.injectChromeVoxIntoTabs(tabs); 168 cvox.ChromeVox.injectChromeVoxIntoTabs(tabs);
169 } else { 169 } else {
170 // When in compat mode, if the focus is within the desktop tree proper, 170 // When in compat mode, if the focus is within the desktop tree proper,
171 // then do not disable content scripts. 171 // then do not disable content scripts.
172 if (this.currentRange_ && 172 if (this.currentRange_ && !this.currentRange_.isWebRange())
173 this.currentRange_.start.node.root.role == RoleType.desktop)
174 return; 173 return;
175 174
176 this.disableClassicChromeVox_(); 175 this.disableClassicChromeVox_();
177 } 176 }
178 }.bind(this)); 177 }.bind(this));
179 178
180 // If switching out of a ChromeVox Next mode, make sure we cancel 179 // If switching out of a ChromeVox Next mode, make sure we cancel
181 // the progress loading sound just in case. 180 // the progress loading sound just in case.
182 if ((this.mode_ === ChromeVoxMode.NEXT || 181 if ((this.mode_ === ChromeVoxMode.NEXT ||
183 this.mode_ === ChromeVoxMode.FORCE_NEXT) && 182 this.mode_ === ChromeVoxMode.FORCE_NEXT) &&
184 this.mode_ != mode) { 183 this.mode_ != mode) {
185 cvox.ChromeVox.earcons.cancelEarcon(cvox.Earcon.PAGE_START_LOADING); 184 cvox.ChromeVox.earcons.cancelEarcon(cvox.Earcon.PAGE_START_LOADING);
186 } 185 }
187 186
188 this.mode_ = mode; 187 this.mode_ = mode;
189 }, 188 },
190 189
191 /** 190 /**
191 * Mode refreshes takes into account both |url| and the current ChromeVox
192 * range. The latter gets used to decide if the user is or isn't in web
193 * content. The focused state also needs to be set for this info to be
194 * reliable.
192 * @override 195 * @override
193 */ 196 */
194 refreshMode: function(url) { 197 refreshMode: function(url) {
195 var mode = this.mode_; 198 var mode = this.mode_;
196 if (mode != ChromeVoxMode.FORCE_NEXT) { 199 if (mode != ChromeVoxMode.FORCE_NEXT) {
197 if (this.isWhitelistedForNext_(url)) 200 if (this.isWhitelistedForNext_(url)) {
198 mode = ChromeVoxMode.NEXT; 201 mode = ChromeVoxMode.NEXT;
199 else if (this.isBlacklistedForClassic_(url)) 202 } else if (this.isBlacklistedForClassic_(url) || (this.currentRange_ &&
203 !this.currentRange_.isWebRange() &&
204 this.currentRange_.start.node.state.focused)) {
200 mode = ChromeVoxMode.COMPAT; 205 mode = ChromeVoxMode.COMPAT;
201 else 206 } else {
202 mode = ChromeVoxMode.CLASSIC; 207 mode = ChromeVoxMode.CLASSIC;
208 }
203 } 209 }
204 210
205 this.setMode(mode); 211 this.setMode(mode);
206 }, 212 },
207 213
208 /** 214 /**
209 * @override 215 * @override
210 */ 216 */
211 getCurrentRange: function() { 217 getCurrentRange: function() {
212 return this.currentRange_; 218 return this.currentRange_;
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 cvox.ChromeVox.isActive = !cvox.ChromeVox.isActive; 439 cvox.ChromeVox.isActive = !cvox.ChromeVox.isActive;
434 if (!cvox.ChromeVox.isActive) { 440 if (!cvox.ChromeVox.isActive) {
435 var msg = Msgs.getMsg('chromevox_inactive'); 441 var msg = Msgs.getMsg('chromevox_inactive');
436 cvox.ChromeVox.tts.speak(msg, cvox.QueueMode.FLUSH); 442 cvox.ChromeVox.tts.speak(msg, cvox.QueueMode.FLUSH);
437 return false; 443 return false;
438 } 444 }
439 break; 445 break;
440 case 'toggleChromeVoxVersion': 446 case 'toggleChromeVoxVersion':
441 var newMode; 447 var newMode;
442 if (this.mode_ == ChromeVoxMode.FORCE_NEXT) { 448 if (this.mode_ == ChromeVoxMode.FORCE_NEXT) {
443 var inViews = 449 var inWeb = current.isWebRange();
444 this.currentRange_.start.node.root.role == RoleType.desktop; 450 newMode = inWeb ? ChromeVoxMode.CLASSIC : ChromeVoxMode.COMPAT;
445 newMode = inViews ? ChromeVoxMode.COMPAT : ChromeVoxMode.CLASSIC;
446 } else { 451 } else {
447 newMode = ChromeVoxMode.FORCE_NEXT; 452 newMode = ChromeVoxMode.FORCE_NEXT;
448 } 453 }
449 this.setMode(newMode, true); 454 this.setMode(newMode, true);
450 455
451 var isClassic = 456 var isClassic =
452 newMode == ChromeVoxMode.CLASSIC || newMode == ChromeVoxMode.COMPAT; 457 newMode == ChromeVoxMode.CLASSIC || newMode == ChromeVoxMode.COMPAT;
453 458
454 // Leaving unlocalized as 'next' isn't an official name. 459 // Leaving unlocalized as 'next' isn't an official name.
455 cvox.ChromeVox.tts.speak(isClassic ? 460 cvox.ChromeVox.tts.speak(isClassic ?
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 !this.isBlacklistedForClassic_(url) && 571 !this.isBlacklistedForClassic_(url) &&
567 !this.isWhitelistedForNext_(url); 572 !this.isWhitelistedForNext_(url);
568 }, 573 },
569 574
570 /** 575 /**
571 * @param {string} url 576 * @param {string} url
572 * @return {boolean} 577 * @return {boolean}
573 * @private 578 * @private
574 */ 579 */
575 isBlacklistedForClassic_: function(url) { 580 isBlacklistedForClassic_: function(url) {
576 return url === '' || this.classicBlacklistRegExp_.test(url); 581 return this.classicBlacklistRegExp_.test(url);
577 }, 582 },
578 583
579 /** 584 /**
580 * @param {string} url 585 * @param {string} url
581 * @return {boolean} Whether the given |url| is whitelisted. 586 * @return {boolean} Whether the given |url| is whitelisted.
582 * @private 587 * @private
583 */ 588 */
584 isWhitelistedForNext_: function(url) { 589 isWhitelistedForNext_: function(url) {
585 return this.whitelist_.some(function(item) { 590 return this.whitelist_.some(function(item) {
586 return url.indexOf(item) != -1; 591 return url.indexOf(item) != -1;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 return glob.replace(/[.+^$(){}|[\]\\]/g, '\\$&') 668 return glob.replace(/[.+^$(){}|[\]\\]/g, '\\$&')
664 .replace(/\*/g, '.*') 669 .replace(/\*/g, '.*')
665 .replace(/\?/g, '.'); 670 .replace(/\?/g, '.');
666 }).join('|') + ')$'); 671 }).join('|') + ')$');
667 }; 672 };
668 673
669 /** @type {Background} */ 674 /** @type {Background} */
670 global.backgroundObj = new Background(); 675 global.backgroundObj = new Background();
671 676
672 }); // goog.scope 677 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698