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

Side by Side Diff: chrome/browser/resources/hotword_audio_verification/flow.js

Issue 2600683002: Run tools/clang-format-js on some of chrome/browser/resources/ (Closed)
Patch Set: event_handler.js Created 4 years 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 (function() { 5 (function() {
6 6
7 // Correspond to steps in the hotword opt-in flow. 7 // Correspond to steps in the hotword opt-in flow.
8 /** @const */ var START = 'start-container'; 8 /** @const */ var START = 'start-container';
9 /** @const */ var AUDIO_HISTORY = 'audio-history-container'; 9 /** @const */ var AUDIO_HISTORY = 'audio-history-container';
10 /** @const */ var SPEECH_TRAINING = 'speech-training-container'; 10 /** @const */ var SPEECH_TRAINING = 'speech-training-container';
11 /** @const */ var FINISH = 'finish-container'; 11 /** @const */ var FINISH = 'finish-container';
12 12
13 /** 13 /**
14 * These flows correspond to the three LaunchModes as defined in 14 * These flows correspond to the three LaunchModes as defined in
15 * chrome/browser/search/hotword_service.h and should be kept in sync 15 * chrome/browser/search/hotword_service.h and should be kept in sync
16 * with them. 16 * with them.
17 * @const 17 * @const
18 */ 18 */
19 var FLOWS = [ 19 var FLOWS = [
20 [START, SPEECH_TRAINING, FINISH], 20 [START, SPEECH_TRAINING, FINISH],
21 [START, AUDIO_HISTORY, SPEECH_TRAINING, FINISH], 21 [START, AUDIO_HISTORY, SPEECH_TRAINING, FINISH], [SPEECH_TRAINING, FINISH]
22 [SPEECH_TRAINING, FINISH]
23 ]; 22 ];
24 23
25 /** 24 /**
26 * The launch mode. This enum needs to be kept in sync with that of 25 * The launch mode. This enum needs to be kept in sync with that of
27 * the same name in hotword_service.h. 26 * the same name in hotword_service.h.
28 * @enum {number} 27 * @enum {number}
29 */ 28 */
30 var LaunchMode = { 29 var LaunchMode = {HOTWORD_ONLY: 0, HOTWORD_AND_AUDIO_HISTORY: 1, RETRAIN: 2};
31 HOTWORD_ONLY: 0,
32 HOTWORD_AND_AUDIO_HISTORY: 1,
33 RETRAIN: 2
34 };
35 30
36 /** 31 /**
37 * The training state. 32 * The training state.
38 * @enum {string} 33 * @enum {string}
39 */ 34 */
40 var TrainingState = { 35 var TrainingState = {
41 RESET: 'reset', 36 RESET: 'reset',
42 TIMEOUT: 'timeout', 37 TIMEOUT: 'timeout',
43 ERROR: 'error', 38 ERROR: 'error',
44 }; 39 };
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 * Listener for the speakerModelSaved event. 94 * Listener for the speakerModelSaved event.
100 * @private {Function} 95 * @private {Function}
101 */ 96 */
102 this.speakerModelFinalizedListener_ = 97 this.speakerModelFinalizedListener_ =
103 this.onSpeakerModelFinalized_.bind(this); 98 this.onSpeakerModelFinalized_.bind(this);
104 99
105 /** 100 /**
106 * Listener for the hotword trigger event. 101 * Listener for the hotword trigger event.
107 * @private {Function} 102 * @private {Function}
108 */ 103 */
109 this.hotwordTriggerListener_ = 104 this.hotwordTriggerListener_ = this.handleHotwordTrigger_.bind(this);
110 this.handleHotwordTrigger_.bind(this);
111 105
112 // Listen for the user locking the screen. 106 // Listen for the user locking the screen.
113 chrome.idle.onStateChanged.addListener( 107 chrome.idle.onStateChanged.addListener(
114 this.handleIdleStateChanged_.bind(this)); 108 this.handleIdleStateChanged_.bind(this));
115 109
116 // Listen for hotword settings changes. This used to detect when the user 110 // Listen for hotword settings changes. This used to detect when the user
117 // switches to a different profile. 111 // switches to a different profile.
118 if (chrome.hotwordPrivate.onEnabledChanged) { 112 if (chrome.hotwordPrivate.onEnabledChanged) {
119 chrome.hotwordPrivate.onEnabledChanged.addListener( 113 chrome.hotwordPrivate.onEnabledChanged.addListener(
120 this.handleEnabledChanged_.bind(this)); 114 this.handleEnabledChanged_.bind(this));
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 160
167 /** 161 /**
168 * Stops the training process. 162 * Stops the training process.
169 */ 163 */
170 Flow.prototype.stopTraining = function() { 164 Flow.prototype.stopTraining = function() {
171 if (!this.training_) 165 if (!this.training_)
172 return; 166 return;
173 167
174 this.training_ = false; 168 this.training_ = false;
175 if (chrome.hotwordPrivate.onHotwordTriggered) { 169 if (chrome.hotwordPrivate.onHotwordTriggered) {
176 chrome.hotwordPrivate.onHotwordTriggered. 170 chrome.hotwordPrivate.onHotwordTriggered.removeListener(
177 removeListener(this.hotwordTriggerListener_); 171 this.hotwordTriggerListener_);
178 } 172 }
179 if (chrome.hotwordPrivate.stopTraining) 173 if (chrome.hotwordPrivate.stopTraining)
180 chrome.hotwordPrivate.stopTraining(); 174 chrome.hotwordPrivate.stopTraining();
181 }; 175 };
182 176
183 /** 177 /**
184 * Attempts to enable audio history for the signed-in account. 178 * Attempts to enable audio history for the signed-in account.
185 */ 179 */
186 Flow.prototype.enableAudioHistory = function() { 180 Flow.prototype.enableAudioHistory = function() {
187 // Update UI 181 // Update UI
(...skipping 18 matching lines...) Expand all
206 Flow.prototype.handleAudioHistoryError_ = function() { 200 Flow.prototype.handleAudioHistoryError_ = function() {
207 $('audio-history-agree').disabled = false; 201 $('audio-history-agree').disabled = false;
208 $('audio-history-cancel').disabled = false; 202 $('audio-history-cancel').disabled = false;
209 203
210 $('audio-history-wait').hidden = true; 204 $('audio-history-wait').hidden = true;
211 $('audio-history-error').hidden = false; 205 $('audio-history-error').hidden = false;
212 206
213 // Set a timeout before focusing the Enable button so that screenreaders 207 // Set a timeout before focusing the Enable button so that screenreaders
214 // have time to announce the error first. 208 // have time to announce the error first.
215 this.setTimeout_(function() { 209 this.setTimeout_(function() {
216 $('audio-history-agree').focus(); 210 $('audio-history-agree').focus();
217 }.bind(this), 50); 211 }.bind(this), 50);
218 }; 212 };
219 213
220 /** 214 /**
221 * Callback for when an audio history request completes. 215 * Callback for when an audio history request completes.
222 * @param {chrome.hotwordPrivate.AudioHistoryState} state The audio history 216 * @param {chrome.hotwordPrivate.AudioHistoryState} state The audio history
223 * request state. 217 * request state.
224 * @private 218 * @private
225 */ 219 */
226 Flow.prototype.onAudioHistoryRequestCompleted_ = function(state) { 220 Flow.prototype.onAudioHistoryRequestCompleted_ = function(state) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 this.stopTraining(); 254 this.stopTraining();
261 this.setTimeout_(this.finishFlow_.bind(this), 2000); 255 this.setTimeout_(this.finishFlow_.bind(this), 2000);
262 }; 256 };
263 257
264 /** 258 /**
265 * Completes the training process. 259 * Completes the training process.
266 * @private 260 * @private
267 */ 261 */
268 Flow.prototype.finishFlow_ = function() { 262 Flow.prototype.finishFlow_ = function() {
269 if (chrome.hotwordPrivate.setHotwordAlwaysOnSearchEnabled) { 263 if (chrome.hotwordPrivate.setHotwordAlwaysOnSearchEnabled) {
270 chrome.hotwordPrivate.setHotwordAlwaysOnSearchEnabled(true, 264 chrome.hotwordPrivate.setHotwordAlwaysOnSearchEnabled(
271 this.advanceStep.bind(this)); 265 true, this.advanceStep.bind(this));
272 } 266 }
273 }; 267 };
274 268
275 /** 269 /**
276 * Handles a user clicking on the retry button. 270 * Handles a user clicking on the retry button.
277 */ 271 */
278 Flow.prototype.handleRetry = function() { 272 Flow.prototype.handleRetry = function() {
279 if (!(this.trainingState_ == TrainingState.TIMEOUT || 273 if (!(this.trainingState_ == TrainingState.TIMEOUT ||
280 this.trainingState_ == TrainingState.ERROR)) 274 this.trainingState_ == TrainingState.ERROR))
281 return; 275 return;
282 276
283 this.startTraining(); 277 this.startTraining();
284 this.updateTrainingState_(TrainingState.RESET); 278 this.updateTrainingState_(TrainingState.RESET);
285 }; 279 };
286 280
287 // ---- private methods: 281 // ---- private methods:
288 282
289 /** 283 /**
290 * Completes the training process. 284 * Completes the training process.
(...skipping 24 matching lines...) Expand all
315 * @return {Object} The current training step, its index, and an array of 309 * @return {Object} The current training step, its index, and an array of
316 * all training steps. Any of these can be undefined. 310 * all training steps. Any of these can be undefined.
317 * @private 311 * @private
318 */ 312 */
319 Flow.prototype.getCurrentTrainingStep_ = function(curStepClassName) { 313 Flow.prototype.getCurrentTrainingStep_ = function(curStepClassName) {
320 var steps = 314 var steps =
321 $(this.trainingPagePrefix_ + '-training').querySelectorAll('.train'); 315 $(this.trainingPagePrefix_ + '-training').querySelectorAll('.train');
322 var curStep = 316 var curStep =
323 $(this.trainingPagePrefix_ + '-training').querySelector('.listening'); 317 $(this.trainingPagePrefix_ + '-training').querySelector('.listening');
324 318
325 return {current: curStep, 319 return {
326 index: Array.prototype.indexOf.call(steps, curStep), 320 current: curStep,
327 steps: steps}; 321 index: Array.prototype.indexOf.call(steps, curStep),
322 steps: steps
323 };
328 }; 324 };
329 325
330 /** 326 /**
331 * Updates the training state. 327 * Updates the training state.
332 * @param {TrainingState} state The training state. 328 * @param {TrainingState} state The training state.
333 * @private 329 * @private
334 */ 330 */
335 Flow.prototype.updateTrainingState_ = function(state) { 331 Flow.prototype.updateTrainingState_ = function(state) {
336 this.trainingState_ = state; 332 this.trainingState_ = state;
337 this.updateErrorUI_(); 333 this.updateErrorUI_();
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 }; 520 };
525 521
526 /** 522 /**
527 * Gets and starts the appropriate flow for the launch mode. 523 * Gets and starts the appropriate flow for the launch mode.
528 * @param {chrome.hotwordPrivate.LaunchState} state Launch state of the 524 * @param {chrome.hotwordPrivate.LaunchState} state Launch state of the
529 * Hotword Audio Verification App. 525 * Hotword Audio Verification App.
530 * @private 526 * @private
531 */ 527 */
532 Flow.prototype.startFlowForMode_ = function(state) { 528 Flow.prototype.startFlowForMode_ = function(state) {
533 this.launchMode_ = state.launchMode; 529 this.launchMode_ = state.launchMode;
534 assert(state.launchMode >= 0 && state.launchMode < FLOWS.length, 530 assert(
535 'Invalid Launch Mode.'); 531 state.launchMode >= 0 && state.launchMode < FLOWS.length,
532 'Invalid Launch Mode.');
536 this.currentFlow_ = FLOWS[state.launchMode]; 533 this.currentFlow_ = FLOWS[state.launchMode];
537 if (state.launchMode == LaunchMode.HOTWORD_ONLY) { 534 if (state.launchMode == LaunchMode.HOTWORD_ONLY) {
538 $('intro-description-audio-history-enabled').hidden = false; 535 $('intro-description-audio-history-enabled').hidden = false;
539 } else if (state.launchMode == LaunchMode.HOTWORD_AND_AUDIO_HISTORY) { 536 } else if (state.launchMode == LaunchMode.HOTWORD_AND_AUDIO_HISTORY) {
540 $('intro-description').hidden = false; 537 $('intro-description').hidden = false;
541 } 538 }
542 539
543 this.advanceStep(); 540 this.advanceStep();
544 }; 541 };
545 542
(...skipping 14 matching lines...) Expand all
560 previousStep = this.currentFlow_[this.currentStepIndex_ - 1]; 557 previousStep = this.currentFlow_[this.currentStepIndex_ - 1];
561 558
562 if (previousStep) 559 if (previousStep)
563 document.getElementById(previousStep).hidden = true; 560 document.getElementById(previousStep).hidden = true;
564 561
565 chrome.app.window.current().show(); 562 chrome.app.window.current().show();
566 }; 563 };
567 564
568 window.Flow = Flow; 565 window.Flow = Flow;
569 })(); 566 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698