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

Side by Side Diff: chrome/browser/resources/hotword/nacl_manager.js

Issue 2939273002: DO NOT SUBMIT: what chrome/browser/resources/ could eventually look like with clang-format (Closed)
Patch Set: Created 3 years, 6 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 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 cr.define('hotword', function() { 5 cr.define('hotword', function() {
6 'use strict'; 6 'use strict';
7 7
8 /** 8 /**
9 * Class used to manage the state of the NaCl recognizer plugin. Handles all 9 * Class used to manage the state of the NaCl recognizer plugin. Handles all
10 * control of the NaCl plugin, including creation, start, stop, trigger, and 10 * control of the NaCl plugin, including creation, start, stop, trigger, and
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 if (this.recognizerState_ == ManagerState_.UNINITIALIZED || 221 if (this.recognizerState_ == ManagerState_.UNINITIALIZED ||
222 this.recognizerState_ == ManagerState_.ERROR || 222 this.recognizerState_ == ManagerState_.ERROR ||
223 this.recognizerState_ == ManagerState_.SHUTDOWN || 223 this.recognizerState_ == ManagerState_.SHUTDOWN ||
224 this.recognizerState_ == ManagerState_.LOADING) { 224 this.recognizerState_ == ManagerState_.LOADING) {
225 return; 225 return;
226 } 226 }
227 this.sendDataToPlugin_(hotword.constants.NaClPlugin.FINISH_SPEAKER_MODEL); 227 this.sendDataToPlugin_(hotword.constants.NaClPlugin.FINISH_SPEAKER_MODEL);
228 }; 228 };
229 229
230 /** 230 /**
231 * Checks whether the file at the given path exists. 231 * Checks whether the file at the given path exists.
232 * @param {!string} path Path to a file. Can be any valid URL. 232 * @param {!string} path Path to a file. Can be any valid URL.
233 * @return {boolean} True if the patch exists. 233 * @return {boolean} True if the patch exists.
234 * @private 234 * @private
235 */ 235 */
236 NaClManager.prototype.fileExists_ = function(path) { 236 NaClManager.prototype.fileExists_ = function(path) {
237 var xhr = new XMLHttpRequest(); 237 var xhr = new XMLHttpRequest();
238 xhr.open('HEAD', path, false); 238 xhr.open('HEAD', path, false);
239 try { 239 try {
240 xhr.send(); 240 xhr.send();
241 } catch (err) { 241 } catch (err) {
242 return false; 242 return false;
243 } 243 }
244 if (xhr.readyState != xhr.DONE || xhr.status != 200) { 244 if (xhr.readyState != xhr.DONE || xhr.status != 200) {
245 return false; 245 return false;
246 } 246 }
247 return true; 247 return true;
248 }; 248 };
249 249
250 /** 250 /**
251 * Creates and returns a list of possible languages to check for hotword 251 * Creates and returns a list of possible languages to check for hotword
252 * support. 252 * support.
253 * @return {!Array<string>} Array of languages. 253 * @return {!Array<string>} Array of languages.
254 * @private 254 * @private
255 */ 255 */
256 NaClManager.prototype.getPossibleLanguages_ = function() { 256 NaClManager.prototype.getPossibleLanguages_ = function() {
257 // Create array used to search first for language-country, if not found then 257 // Create array used to search first for language-country, if not found then
258 // search for language, if not found then no language (empty string). 258 // search for language, if not found then no language (empty string).
259 // For example, search for 'en-us', then 'en', then ''. 259 // For example, search for 'en-us', then 'en', then ''.
260 var langs = new Array(); 260 var langs = new Array();
261 if (hotword.constants.UI_LANGUAGE) { 261 if (hotword.constants.UI_LANGUAGE) {
262 // Chrome webstore doesn't support uppercase path: crbug.com/353407 262 // Chrome webstore doesn't support uppercase path: crbug.com/353407
263 var language = hotword.constants.UI_LANGUAGE.toLowerCase(); 263 var language = hotword.constants.UI_LANGUAGE.toLowerCase();
264 langs.push(language); // Example: 'en-us'. 264 langs.push(language); // Example: 'en-us'.
265 // Remove country to add just the language to array. 265 // Remove country to add just the language to array.
266 var hyphen = language.lastIndexOf('-'); 266 var hyphen = language.lastIndexOf('-');
267 if (hyphen >= 0) { 267 if (hyphen >= 0) {
268 langs.push(language.substr(0, hyphen)); // Example: 'en'. 268 langs.push(language.substr(0, hyphen)); // Example: 'en'.
269 } 269 }
270 } 270 }
271 langs.push(''); 271 langs.push('');
272 return langs; 272 return langs;
273 }; 273 };
274 274
275 /** 275 /**
276 * Creates a NaCl plugin object and attaches it to the page. 276 * Creates a NaCl plugin object and attaches it to the page.
277 * @param {!string} src Location of the plugin. 277 * @param {!string} src Location of the plugin.
278 * @return {!HTMLEmbedElement} NaCl plugin DOM object. 278 * @return {!HTMLEmbedElement} NaCl plugin DOM object.
279 * @private 279 * @private
280 */ 280 */
281 NaClManager.prototype.createPlugin_ = function(src) { 281 NaClManager.prototype.createPlugin_ = function(src) {
282 var plugin = 282 var plugin =
283 /** @type {HTMLEmbedElement} */ (document.createElement('embed')); 283 /** @type {HTMLEmbedElement} */ (document.createElement('embed'));
284 plugin.src = src; 284 plugin.src = src;
285 plugin.type = 'application/x-nacl'; 285 plugin.type = 'application/x-nacl';
286 document.body.appendChild(plugin); 286 document.body.appendChild(plugin);
287 return plugin; 287 return plugin;
288 }; 288 };
289 289
290 /** 290 /**
291 * Initializes the NaCl manager. 291 * Initializes the NaCl manager.
292 * @param {!string} naclArch Either 'arm', 'x86-32' or 'x86-64'. 292 * @param {!string} naclArch Either 'arm', 'x86-32' or 'x86-64'.
293 * @param {!MediaStream} stream A stream containing an audio source track. 293 * @param {!MediaStream} stream A stream containing an audio source track.
294 * @return {boolean} True if the successful. 294 * @return {boolean} True if the successful.
295 */ 295 */
296 NaClManager.prototype.initialize = function(naclArch, stream) { 296 NaClManager.prototype.initialize = function(naclArch, stream) {
297 assert( 297 assert(
298 this.recognizerState_ == ManagerState_.UNINITIALIZED, 298 this.recognizerState_ == ManagerState_.UNINITIALIZED,
299 'Recognizer not in uninitialized state. State: ' + 299 'Recognizer not in uninitialized state. State: ' +
300 this.recognizerState_); 300 this.recognizerState_);
301 assert(this.plugin_ == null); 301 assert(this.plugin_ == null);
302 var langs = this.getPossibleLanguages_(); 302 var langs = this.getPossibleLanguages_();
303 var i, j; 303 var i, j;
304 // For country-lang variations. For example, when combined with path it will 304 // For country-lang variations. For example, when combined with path it will
305 // attempt to find: '/x86-32_en-gb/', else '/x86-32_en/', else '/x86-32_/'. 305 // attempt to find: '/x86-32_en-gb/', else '/x86-32_en/', else '/x86-32_/'.
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 * Waits, with a timeout, for a message to be received from the plugin. If the 370 * Waits, with a timeout, for a message to be received from the plugin. If the
371 * message is not seen within the timeout, dispatch an 'error' event and go 371 * message is not seen within the timeout, dispatch an 'error' event and go
372 * into 372 * into
373 * the ERROR state. 373 * the ERROR state.
374 * @param {number} timeout Timeout, in milliseconds, to wait for the message. 374 * @param {number} timeout Timeout, in milliseconds, to wait for the message.
375 * @param {!string} message Message to wait for. 375 * @param {!string} message Message to wait for.
376 * @private 376 * @private
377 */ 377 */
378 NaClManager.prototype.waitForMessage_ = function(timeout, message) { 378 NaClManager.prototype.waitForMessage_ = function(timeout, message) {
379 assert( 379 assert(
380 this.expectingMessage_ == null, 'Cannot wait for message: ' + message + 380 this.expectingMessage_ == null,
381 'Cannot wait for message: ' + message +
381 ', already waiting for message ' + this.expectingMessage_); 382 ', already waiting for message ' + this.expectingMessage_);
382 this.setTimeout_(function() { 383 this.setTimeout_(function() {
383 this.recognizerState_ = ManagerState_.ERROR; 384 this.recognizerState_ = ManagerState_.ERROR;
384 this.handleError_(Error_.TIMEOUT); 385 this.handleError_(Error_.TIMEOUT);
385 switch (this.expectingMessage_) { 386 switch (this.expectingMessage_) {
386 case hotword.constants.NaClPlugin.REQUEST_MODEL: 387 case hotword.constants.NaClPlugin.REQUEST_MODEL:
387 var metricValue = UmaNaClMessageTimeout_.REQUEST_MODEL; 388 var metricValue = UmaNaClMessageTimeout_.REQUEST_MODEL;
388 break; 389 break;
389 case hotword.constants.NaClPlugin.MODEL_LOADED: 390 case hotword.constants.NaClPlugin.MODEL_LOADED:
390 var metricValue = UmaNaClMessageTimeout_.MODEL_LOADED; 391 var metricValue = UmaNaClMessageTimeout_.MODEL_LOADED;
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 case hotword.constants.NaClPlugin.SPEAKER_MODEL_SAVED: 603 case hotword.constants.NaClPlugin.SPEAKER_MODEL_SAVED:
603 this.handleSpeakerModelSaved_(); 604 this.handleSpeakerModelSaved_();
604 break; 605 break;
605 } 606 }
606 } 607 }
607 }; 608 };
608 609
609 return {NaClManager: NaClManager}; 610 return {NaClManager: NaClManager};
610 611
611 }); 612 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698