Index: third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
diff --git a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
index 14a63a8993428cc2478efecb9497510aec9dfee1..468126806a3686677716d9516e307549ce713753 100644 |
--- a/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
+++ b/third_party/google_input_tools/src/chrome/os/inputview/elements/content/voiceview.js |
@@ -13,16 +13,13 @@ |
// |
goog.provide('i18n.input.chrome.inputview.elements.content.VoiceView'); |
-goog.require('goog.a11y.aria'); |
-goog.require('goog.a11y.aria.Announcer'); |
-goog.require('goog.a11y.aria.LivePriority'); |
-goog.require('goog.a11y.aria.State'); |
goog.require('goog.asserts'); |
goog.require('goog.async.Delay'); |
goog.require('goog.dom.TagName'); |
goog.require('goog.dom.classlist'); |
goog.require('goog.style'); |
goog.require('i18n.input.chrome.inputview.Css'); |
+goog.require('i18n.input.chrome.inputview.Sounds'); |
goog.require('i18n.input.chrome.inputview.elements.Element'); |
goog.require('i18n.input.chrome.inputview.elements.ElementType'); |
goog.require('i18n.input.chrome.inputview.elements.content.FunctionalKey'); |
@@ -31,12 +28,11 @@ goog.require('i18n.input.chrome.message.Type'); |
goog.scope(function() { |
-var Announcer = goog.a11y.aria.Announcer; |
var Css = i18n.input.chrome.inputview.Css; |
-var EventType = goog.events.EventType; |
var ElementType = i18n.input.chrome.inputview.elements.ElementType; |
var FunctionalKey = i18n.input.chrome.inputview.elements.content.FunctionalKey; |
var Name = i18n.input.chrome.message.Name; |
+var Sounds = i18n.input.chrome.inputview.Sounds; |
var TagName = goog.dom.TagName; |
var Type = i18n.input.chrome.message.Type; |
@@ -47,11 +43,12 @@ var Type = i18n.input.chrome.message.Type; |
* |
* @param {goog.events.EventTarget=} opt_eventTarget The parent event target. |
* @param {i18n.input.chrome.inputview.Adapter=} opt_adapter . |
+ * @param {i18n.input.chrome.SoundController=} opt_soundController . |
* @constructor |
* @extends {i18n.input.chrome.inputview.elements.Element} |
*/ |
i18n.input.chrome.inputview.elements.content.VoiceView = |
- function(opt_eventTarget, opt_adapter) { |
+ function(opt_eventTarget, opt_adapter, opt_soundController) { |
VoiceView.base(this, 'constructor', '', ElementType.VOICE_VIEW, |
opt_eventTarget); |
@@ -62,11 +59,15 @@ i18n.input.chrome.inputview.elements.content.VoiceView = |
*/ |
this.adapter_ = goog.asserts.assertObject(opt_adapter); |
+ /** |
+ * The sound controller. |
+ * |
+ * @private {!i18n.input.chrome.SoundController} |
+ */ |
+ this.soundController_ = goog.asserts.assertObject(opt_soundController); |
+ |
/** @private {!goog.async.Delay} */ |
this.animator_ = new goog.async.Delay(this.animateMicrophoneLevel_, 0, this); |
- |
- /** @private {!Announcer} */ |
- this.announcer_ = new Announcer(); |
}; |
var VoiceView = i18n.input.chrome.inputview.elements.content.VoiceView; |
goog.inherits(VoiceView, i18n.input.chrome.inputview.elements.Element); |
@@ -120,23 +121,22 @@ VoiceView.prototype.createDom = function() { |
var elem = this.getElement(); |
goog.dom.classlist.add(elem, Css.VOICE_VIEW); |
this.voicePanel_ = dom.createDom(TagName.DIV, Css.VOICE_PANEL); |
- this.voiceMicElem_ = dom.createDom(goog.dom.TagName.DIV, |
+ this.voiceMicElem_ = dom.createDom(TagName.DIV, |
Css.VOICE_OPACITY + ' ' + Css.VOICE_MIC_ING); |
+ |
this.levelElement_ = dom.createDom( |
- goog.dom.TagName.DIV, Css.VOICE_LEVEL); |
+ TagName.DIV, Css.VOICE_LEVEL); |
dom.append(/** @type {!Node} */ (this.voicePanel_), |
this.voiceMicElem_, this.levelElement_); |
- goog.a11y.aria.setState(this.voiceMicElem_, goog.a11y.aria.State.LABEL, |
- chrome.i18n.getMessage('VOICE_TURN_OFF')); |
this.maskElem_ = dom.createDom(TagName.DIV, |
[Css.VOICE_MASK, Css.VOICE_OPACITY_NONE]); |
dom.append(/** @type {!Node} */ (elem), this.maskElem_, this.voicePanel_); |
- this.privacyDiv_ = dom.createDom(goog.dom.TagName.DIV, |
+ this.privacyDiv_ = dom.createDom(TagName.DIV, |
Css.VOICE_PRIVACY_INFO); |
- var textDiv = dom.createDom(goog.dom.TagName.DIV, Css.VOICE_PRIVACY_TEXT); |
+ var textDiv = dom.createDom(TagName.DIV, Css.VOICE_PRIVACY_TEXT); |
dom.setTextContent(textDiv, |
chrome.i18n.getMessage('VOICE_PRIVACY_INFO')); |
dom.appendChild(this.privacyDiv_, textDiv); |
@@ -169,11 +169,13 @@ VoiceView.prototype.enterDocument = function() { |
* Start recognition. |
*/ |
VoiceView.prototype.start = function() { |
+ // visible -> invisible |
+ if (!this.isVisible()) { |
+ this.soundController_.playSound(Sounds.VOICE_RECOG_START, true); |
+ } |
if (this.isPrivacyAllowed_) { |
this.adapter_.sendVoiceViewStateChange(true); |
this.animator_.start(); |
- this.announcer_.say(chrome.i18n.getMessage('VOICE_TURN_ON'), |
- goog.a11y.aria.LivePriority.ASSERTIVE); |
} |
this.setVisible(true); |
}; |
@@ -183,15 +185,18 @@ VoiceView.prototype.start = function() { |
* Stop recognition. |
*/ |
VoiceView.prototype.stop = function() { |
+ // invisible -> visible |
+ if (this.isVisible()) { |
+ this.soundController_.playSound(Sounds.VOICE_RECOG_END, true); |
+ } |
this.animator_.stop(); |
- this.announcer_.say(chrome.i18n.getMessage('VOICE_TURN_OFF'), |
- goog.a11y.aria.LivePriority.ASSERTIVE); |
this.setVisible(false); |
}; |
/** @override */ |
VoiceView.prototype.setVisible = function(visible) { |
+ VoiceView.base(this, 'setVisible', visible); |
if (visible) { |
goog.style.setElementShown(this.voicePanel_, true); |
goog.dom.classlist.add(this.maskElem_, Css.VOICE_MASK_OPACITY); |
@@ -246,8 +251,7 @@ VoiceView.prototype.onConfirmPrivacyInfo_ = function() { |
this.isPrivacyAllowed_ = true; |
this.adapter_.sendVoiceViewStateChange(true); |
this.animator_.start(); |
- this.announcer_.say(chrome.i18n.getMessage('VOICE_TURN_ON'), |
- goog.a11y.aria.LivePriority.ASSERTIVE); |
+ this.soundController_.playSound(Sounds.VOICE_RECOG_START, true); |
goog.dom.classlist.add(this.privacyDiv_, Css.HANDWRITING_PRIVACY_INFO_HIDDEN); |
goog.dom.classlist.remove(this.maskElem_, Css.VOICE_OPACITY_NONE); |
}; |