| Index: chrome/browser/resources/chromeos/chromevox/host/chrome/tts_background.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/host/chrome/tts_background.js b/chrome/browser/resources/chromeos/chromevox/host/chrome/tts_background.js
|
| index bb03cdfa8a19b92747397550e346090319758cb5..e0b90a5c92639dd134596cb29269cb5d1e20e2ad 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/host/chrome/tts_background.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/host/chrome/tts_background.js
|
| @@ -46,18 +46,17 @@ cvox.TtsBackground = function(opt_enableMath) {
|
| opt_enableMath = opt_enableMath == undefined ? true : opt_enableMath;
|
| goog.base(this);
|
|
|
| - this.ttsProperties['rate'] = (parseFloat(localStorage['rate']) ||
|
| - this.propertyDefault['rate']);
|
| - this.ttsProperties['pitch'] = (parseFloat(localStorage['pitch']) ||
|
| - this.propertyDefault['pitch']);
|
| - this.ttsProperties['volume'] = (parseFloat(localStorage['volume']) ||
|
| - this.propertyDefault['volume']);
|
| + this.ttsProperties['rate'] =
|
| + (parseFloat(localStorage['rate']) || this.propertyDefault['rate']);
|
| + this.ttsProperties['pitch'] =
|
| + (parseFloat(localStorage['pitch']) || this.propertyDefault['pitch']);
|
| + this.ttsProperties['volume'] =
|
| + (parseFloat(localStorage['volume']) || this.propertyDefault['volume']);
|
|
|
| // Use the current locale as the speech language if not otherwise
|
| // specified.
|
| if (this.ttsProperties['lang'] == undefined) {
|
| - this.ttsProperties['lang'] =
|
| - chrome.i18n.getUILanguage();
|
| + this.ttsProperties['lang'] = chrome.i18n.getUILanguage();
|
| }
|
|
|
| this.lastEventType = 'end';
|
| @@ -72,7 +71,7 @@ cvox.TtsBackground = function(opt_enableMath) {
|
| * regexp:(RegExp),
|
| * clear:(boolean)}>}
|
| * @private
|
| - */
|
| + */
|
| this.punctuationEchoes_ = [
|
| /**
|
| * Punctuation echoed for the 'none' option.
|
| @@ -111,9 +110,8 @@ cvox.TtsBackground = function(opt_enableMath) {
|
| * This is important for tts prosity.
|
| * @type {!Array<string>}
|
| * @private
|
| - */
|
| - this.retainPunctuation_ =
|
| - [';', '?', '!', '\''];
|
| + */
|
| + this.retainPunctuation_ = [';', '?', '!', '\''];
|
|
|
| /**
|
| * Mapping for math elements.
|
| @@ -133,8 +131,8 @@ cvox.TtsBackground = function(opt_enableMath) {
|
| * @private
|
| * @const
|
| */
|
| - this.PHONETIC_MAP_ = /** @type {Object<string>} */(
|
| - JSON.parse(Msgs.getMsg('phonetic_map')));
|
| + this.PHONETIC_MAP_ =
|
| + /** @type {Object<string>} */ (JSON.parse(Msgs.getMsg('phonetic_map')));
|
| } catch (e) {
|
| console.log('Error; unable to parse phonetic map msg.');
|
| }
|
| @@ -198,17 +196,9 @@ cvox.TtsBackground.PHONETIC_DELAY_MS_ = 1000;
|
| * @const
|
| */
|
| cvox.TtsBackground.ALLOWED_PROPERTIES_ = [
|
| - 'desiredEventTypes',
|
| - 'enqueue',
|
| - 'extensionId',
|
| - 'gender',
|
| - 'lang',
|
| - 'onEvent',
|
| - 'pitch',
|
| - 'rate',
|
| - 'requiredEventTypes',
|
| - 'voiceName',
|
| - 'volume'];
|
| + 'desiredEventTypes', 'enqueue', 'extensionId', 'gender', 'lang', 'onEvent',
|
| + 'pitch', 'rate', 'requiredEventTypes', 'voiceName', 'volume'
|
| +];
|
|
|
|
|
| /** @override */
|
| @@ -285,8 +275,7 @@ cvox.TtsBackground.prototype.speakUsingQueue_ = function(utterance, queueMode) {
|
| // make a note that we're going to stop speech.
|
| if (queueMode == cvox.QueueMode.FLUSH ||
|
| queueMode == cvox.QueueMode.CATEGORY_FLUSH) {
|
| - (new PanelCommand(
|
| - PanelCommandType.CLEAR_SPEECH)).send();
|
| + (new PanelCommand(PanelCommandType.CLEAR_SPEECH)).send();
|
|
|
| if (this.shouldCancel_(this.currentUtterance_, utterance, queueMode)) {
|
| this.cancelUtterance_(this.currentUtterance_);
|
| @@ -294,8 +283,7 @@ cvox.TtsBackground.prototype.speakUsingQueue_ = function(utterance, queueMode) {
|
| }
|
| var i = 0;
|
| while (i < this.utteranceQueue_.length) {
|
| - if (this.shouldCancel_(
|
| - this.utteranceQueue_[i], utterance, queueMode)) {
|
| + if (this.shouldCancel_(this.utteranceQueue_[i], utterance, queueMode)) {
|
| this.cancelUtterance_(this.utteranceQueue_[i]);
|
| this.utteranceQueue_.splice(i, 1);
|
| } else {
|
| @@ -337,9 +325,8 @@ cvox.TtsBackground.prototype.startSpeakingNextItemInQueue_ = function() {
|
| var utteranceId = utterance.id;
|
|
|
| utterance.properties['onEvent'] = goog.bind(function(event) {
|
| - this.onTtsEvent_(event, utteranceId);
|
| - },
|
| - this);
|
| + this.onTtsEvent_(event, utteranceId);
|
| + }, this);
|
|
|
| var validatedProperties = {};
|
| for (var i = 0; i < cvox.TtsBackground.ALLOWED_PROPERTIES_.length; i++) {
|
| @@ -350,16 +337,14 @@ cvox.TtsBackground.prototype.startSpeakingNextItemInQueue_ = function() {
|
| }
|
|
|
| // Update the caption panel.
|
| - if (utterance.properties &&
|
| - utterance.properties['pitch'] &&
|
| + if (utterance.properties && utterance.properties['pitch'] &&
|
| utterance.properties['pitch'] < this.ttsProperties['pitch']) {
|
| (new PanelCommand(
|
| - PanelCommandType.ADD_ANNOTATION_SPEECH,
|
| - utterance.textString)).send();
|
| + PanelCommandType.ADD_ANNOTATION_SPEECH, utterance.textString))
|
| + .send();
|
| } else {
|
| - (new PanelCommand(
|
| - PanelCommandType.ADD_NORMAL_SPEECH,
|
| - utterance.textString)).send();
|
| + (new PanelCommand(PanelCommandType.ADD_NORMAL_SPEECH, utterance.textString))
|
| + .send();
|
| }
|
|
|
| chrome.tts.speak(utterance.textString, validatedProperties);
|
| @@ -378,8 +363,7 @@ cvox.TtsBackground.prototype.onTtsEvent_ = function(event, utteranceId) {
|
| this.lastEventType = event['type'];
|
|
|
| // Ignore events sent on utterances other than the current one.
|
| - if (!this.currentUtterance_ ||
|
| - utteranceId != this.currentUtterance_.id) {
|
| + if (!this.currentUtterance_ || utteranceId != this.currentUtterance_.id) {
|
| return;
|
| }
|
|
|
| @@ -442,8 +426,8 @@ cvox.TtsBackground.prototype.onTtsEvent_ = function(event, utteranceId) {
|
| * @return {boolean} True if this utterance should be canceled.
|
| * @private
|
| */
|
| -cvox.TtsBackground.prototype.shouldCancel_ =
|
| - function(utteranceToCancel, newUtterance, queueMode) {
|
| +cvox.TtsBackground.prototype.shouldCancel_ = function(
|
| + utteranceToCancel, newUtterance, queueMode) {
|
| if (!utteranceToCancel) {
|
| return false;
|
| }
|
| @@ -456,7 +440,8 @@ cvox.TtsBackground.prototype.shouldCancel_ =
|
| case cvox.QueueMode.FLUSH:
|
| return true;
|
| case cvox.QueueMode.CATEGORY_FLUSH:
|
| - return (utteranceToCancel.properties['category'] ==
|
| + return (
|
| + utteranceToCancel.properties['category'] ==
|
| newUtterance.properties['category']);
|
| }
|
| return false;
|
| @@ -478,9 +463,9 @@ cvox.TtsBackground.prototype.cancelUtterance_ = function(utterance) {
|
| };
|
|
|
| /** @override */
|
| -cvox.TtsBackground.prototype.increaseOrDecreaseProperty =
|
| - function(propertyName, increase) {
|
| - goog.base(this, 'increaseOrDecreaseProperty', propertyName, increase);
|
| +cvox.TtsBackground.prototype.increaseOrDecreaseProperty = function(
|
| + propertyName, increase) {
|
| + goog.base(this, 'increaseOrDecreaseProperty', propertyName, increase);
|
| localStorage[propertyName] = this.ttsProperties[propertyName];
|
| };
|
|
|
| @@ -550,14 +535,12 @@ cvox.TtsBackground.prototype.preprocess = function(text, properties) {
|
| } else {
|
| pE = this.punctuationEchoes_[this.currentPunctuationEcho_];
|
| }
|
| - text =
|
| - text.replace(pE.regexp, this.createPunctuationReplace_(pE.clear));
|
| + text = text.replace(pE.regexp, this.createPunctuationReplace_(pE.clear));
|
|
|
| // Try pronouncing phonetically for single characters. Cancel previous calls
|
| // to pronouncePhonetically_ if we fail to pronounce on this invokation or if
|
| // this text is math which should never be pronounced phonetically.
|
| - if (properties.math ||
|
| - !properties['phoneticCharacters'] ||
|
| + if (properties.math || !properties['phoneticCharacters'] ||
|
| !this.pronouncePhonetically_(text)) {
|
| this.clearTimeout_();
|
| }
|
| @@ -565,8 +548,9 @@ cvox.TtsBackground.prototype.preprocess = function(text, properties) {
|
| // Try looking up in our unicode tables for a short description.
|
| if (!properties.math && text.length == 1 && this.mathmap) {
|
| text = this.mathmap.store.lookupString(
|
| - text.toLowerCase(),
|
| - cvox.MathStore.createDynamicConstraint('default', 'short')) || text;
|
| + text.toLowerCase(),
|
| + cvox.MathStore.createDynamicConstraint('default', 'short')) ||
|
| + text;
|
| }
|
|
|
| // Remove all whitespace from the beginning and end, and collapse all
|
| @@ -626,8 +610,8 @@ cvox.TtsBackground.prototype.preprocessMath_ = function(text, math) {
|
| return text;
|
| }
|
| var result = '';
|
| - var dynamicCstr = cvox.MathStore.createDynamicConstraint(
|
| - math['domain'], math['style']);
|
| + var dynamicCstr =
|
| + cvox.MathStore.createDynamicConstraint(math['domain'], math['style']);
|
| result = this.mathmap.store.lookupString(text, dynamicCstr);
|
| if (result) {
|
| return result;
|
| @@ -664,12 +648,13 @@ cvox.TtsBackground.prototype.getNumberAsDigits_ = function(text) {
|
| */
|
| cvox.TtsBackground.prototype.createPunctuationReplace_ = function(clear) {
|
| return goog.bind(function(match) {
|
| - var retain = this.retainPunctuation_.indexOf(match) != -1 ?
|
| - match : ' ';
|
| + var retain = this.retainPunctuation_.indexOf(match) != -1 ? match : ' ';
|
| return clear ? retain :
|
| - ' ' + (new goog.i18n.MessageFormat(Msgs.getMsg(
|
| - cvox.AbstractTts.CHARACTER_DICTIONARY[match])))
|
| - .format({'COUNT': 1}) + retain + ' ';
|
| + ' ' +
|
| + (new goog.i18n.MessageFormat(
|
| + Msgs.getMsg(cvox.AbstractTts.CHARACTER_DICTIONARY[match])))
|
| + .format({'COUNT': 1}) +
|
| + retain + ' ';
|
| }, this);
|
| };
|
|
|
| @@ -721,15 +706,21 @@ cvox.TtsBackground.prototype.clearTimeout_ = function() {
|
| cvox.TtsBackground.prototype.updateVoice_ = function(voiceName, opt_callback) {
|
| chrome.tts.getVoices(goog.bind(function(voices) {
|
| chrome.i18n.getAcceptLanguages(goog.bind(function(acceptLanguages) {
|
| - var currentLocale = acceptLanguages[0] ||
|
| - chrome.i18n.getUILanguage() || '';
|
| + var currentLocale =
|
| + acceptLanguages[0] || chrome.i18n.getUILanguage() || '';
|
| var match = voices.find.bind(voices);
|
| - var newVoice =
|
| - match(function(v) { return v.voiceName == voiceName; }) ||
|
| - match(function(v) { return v.lang === currentLocale; }) ||
|
| - match(function(v) { return currentLocale.startsWith(v.lang); }) ||
|
| - match(function(v) { return v.lang &&
|
| - v.lang.startsWith(currentLocale); }) ||
|
| + var newVoice = match(function(v) {
|
| + return v.voiceName == voiceName;
|
| + }) ||
|
| + match(function(v) {
|
| + return v.lang === currentLocale;
|
| + }) ||
|
| + match(function(v) {
|
| + return currentLocale.startsWith(v.lang);
|
| + }) ||
|
| + match(function(v) {
|
| + return v.lang && v.lang.startsWith(currentLocale);
|
| + }) ||
|
| voices[0];
|
|
|
| if (newVoice) {
|
|
|