| Index: ui/keyboard/resources/voice_input.js
|
| diff --git a/ui/keyboard/resources/voice_input.js b/ui/keyboard/resources/voice_input.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..bb8d9f72264ddc82e6c22ec7f2814aec70762bae
|
| --- /dev/null
|
| +++ b/ui/keyboard/resources/voice_input.js
|
| @@ -0,0 +1,71 @@
|
| +// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +function VoiceInput(keyboard) {
|
| + this.finaResult_ = null;
|
| + this.recognizing_ = false;
|
| + this.keyboard_ = keyboard;
|
| + this.recognition_ = new webkitSpeechRecognition();
|
| + this.recognition_.onstart = this.onStartHandler.bind(this);
|
| + this.recognition_.onresult = this.onResultHandler.bind(this);
|
| + this.recognition_.onerror = this.onErrorHandler.bind(this);
|
| + this.recognition_.onend = this.onEndHandler.bind(this);
|
| +};
|
| +
|
| +VoiceInput.prototype = {
|
| + /**
|
| + * Event handler for mouse/touch down events.
|
| + */
|
| + onDown: function() {
|
| + if (this.recognizing_) {
|
| + this.recognition_.stop();
|
| + return;
|
| + }
|
| + this.recognition_.start();
|
| + },
|
| +
|
| + /**
|
| + * Speech recognition started. Change mic key's icon.
|
| + */
|
| + onStartHandler: function() {
|
| + this.recognizing_ = true;
|
| + this.finalResult_ = '';
|
| + if (!this.keyboard_.classList.contains('audio'))
|
| + this.keyboard_.classList.add('audio');
|
| + },
|
| +
|
| + /**
|
| + * Speech recognizer returns a result.
|
| + * @param{Event} e The SpeechRecognition event that is raised each time
|
| + * there
|
| + * are any changes to interim or final results.
|
| + */
|
| + onResultHandler: function(e) {
|
| + for (var i = e.resultIndex; i < e.results.length; i++) {
|
| + if (e.results[i].isFinal)
|
| + this.finalResult_ = e.results[i][0].transcript;
|
| + }
|
| + for (var i = 0; i < this.finalResult_.length; i++) {
|
| + sendKey(this.finalResult_.charAt(i));
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Speech recognizer returns an error.
|
| + * @param{Event} e The SpeechRecognitionError event that is raised each time
|
| + * there is an error.
|
| + */
|
| + onErrorHandler: function(e) {
|
| + console.error('error code = ' + e.error);
|
| + },
|
| +
|
| + /**
|
| + * Speech recognition ended. Reset mic key's icon.
|
| + */
|
| + onEndHandler: function() {
|
| + if (this.keyboard_.classList.contains('audio'))
|
| + this.keyboard_.classList.remove('audio');
|
| + this.recognizing_ = false;
|
| + }
|
| +};
|
|
|