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

Unified Diff: ui/keyboard/resources/voice_input.js

Issue 15176004: Web Component Virtual Keyboard (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reviews Created 7 years, 7 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 side-by-side diff with in-line comments
Download patch
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..fc3016511a7aea46370adbc27ad844ac4c3f0664
--- /dev/null
+++ b/ui/keyboard/resources/voice_input.js
@@ -0,0 +1,74 @@
+// 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++) {
+ var keyEvent = {
+ keyIdentifier: this.finalResult_.charAt(i)
+ };
+ sendKeyEvent(keyEvent);
+ }
+ },
+
+ /**
+ * 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;
+ }
+};

Powered by Google App Engine
This is Rietveld 408576698