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

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

Issue 1023063004: Hotword: Check for the existence of a speaker model. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Correct error handling Created 5 years, 9 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
« no previous file with comments | « chrome/browser/resources/hotword/manager.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 speaker training. Starts a hotwording session 9 * Class used to manage speaker training. Starts a hotwording session
10 * if training is on, and automatically restarts the detector when a 10 * if training is on, and automatically restarts the detector when a
(...skipping 10 matching lines...) Expand all
21 */ 21 */
22 this.finalizedSpeakerModelListener_ = 22 this.finalizedSpeakerModelListener_ =
23 this.handleFinalizeSpeakerModel_.bind(this); 23 this.handleFinalizeSpeakerModel_.bind(this);
24 24
25 hotword.BaseSessionManager.call(this, 25 hotword.BaseSessionManager.call(this,
26 stateManager, 26 stateManager,
27 hotword.constants.SessionSource.TRAINING); 27 hotword.constants.SessionSource.TRAINING);
28 } 28 }
29 29
30 /** 30 /**
31 * Handles a success event on mounting the file system event. 31 * Handles a success event on mounting the file system event and deletes
32 * the user data files.
32 * @param {FileSystem} fs The FileSystem object. 33 * @param {FileSystem} fs The FileSystem object.
33 * @private 34 * @private
34 */ 35 */
35 TrainingManager.onRequestFileSystemSuccess_ = function(fs) { 36 TrainingManager.deleteFiles_ = function(fs) {
36 fs.root.getFile(hotword.constants.SPEAKER_MODEL_FILE_NAME, {create: false}, 37 fs.root.getFile(hotword.constants.SPEAKER_MODEL_FILE_NAME, {create: false},
37 TrainingManager.deleteFile_, TrainingManager.fileErrorHandler_); 38 TrainingManager.deleteFile_, TrainingManager.fileErrorHandler_);
38 39
39 for (var i = 0; i < hotword.constants.NUM_TRAINING_UTTERANCES; ++i) { 40 for (var i = 0; i < hotword.constants.NUM_TRAINING_UTTERANCES; ++i) {
40 fs.root.getFile(hotword.constants.UTTERANCE_FILE_PREFIX + i + 41 fs.root.getFile(hotword.constants.UTTERANCE_FILE_PREFIX + i +
41 hotword.constants.UTTERANCE_FILE_EXTENSION, 42 hotword.constants.UTTERANCE_FILE_EXTENSION,
42 {create: false}, 43 {create: false},
43 TrainingManager.deleteFile_, TrainingManager.fileErrorHandler_); 44 TrainingManager.deleteFile_, TrainingManager.fileErrorHandler_);
44 } 45 }
45 }; 46 };
(...skipping 20 matching lines...) Expand all
66 /** 67 /**
67 * Handles a failure event on mounting the file system event. 68 * Handles a failure event on mounting the file system event.
68 * @param {FileError} e The FileError object. 69 * @param {FileError} e The FileError object.
69 * @private 70 * @private
70 */ 71 */
71 TrainingManager.fileErrorHandler_ = function(e) { 72 TrainingManager.fileErrorHandler_ = function(e) {
72 hotword.debug('File error: ' + e.code); 73 hotword.debug('File error: ' + e.code);
73 }; 74 };
74 75
75 /** 76 /**
77 * Handles a failure event on checking for the existence of the speaker model.
78 * @param {FileError} e The FileError object.
79 * @private
80 */
81 TrainingManager.sendNoSpeakerModelResponse_ = function(e) {
82 chrome.hotwordPrivate.speakerModelExistsResult(false);
83 };
84
85 /**
86 * Handles a success event on mounting the file system and checks for the
87 * existence of the speaker model.
88 * @param {FileSystem} fs The FileSystem object.
89 * @private
90 */
91 TrainingManager.speakerModelExists_ = function(fs) {
92 fs.root.getFile(hotword.constants.SPEAKER_MODEL_FILE_NAME, {create: false},
93 TrainingManager.sendSpeakerModelExistsResponse_,
94 TrainingManager.sendNoSpeakerModelResponse_);
95 };
96
97 /**
98 * Sends a response through the HotwordPrivateApi indicating whether
99 * the speaker model exists.
100 * @param {FileEntry} fileEntry The FileEntry object.
101 * @private
102 */
103 TrainingManager.sendSpeakerModelExistsResponse_ = function(fileEntry) {
104 if (fileEntry.isFile) {
105 hotword.debug('File found: ' + fileEntry.fullPath);
106 if (hotword.DEBUG || window.localStorage['hotword.DEBUG']) {
107 fileEntry.getMetadata(function(md) {
108 hotword.debug('File size: ' + md.size);
109 });
110 }
111 }
112 chrome.hotwordPrivate.speakerModelExistsResult(fileEntry.isFile);
113 };
114
115 /**
76 * Handles a request to delete the speaker model. 116 * Handles a request to delete the speaker model.
77 */ 117 */
78 TrainingManager.handleDeleteSpeakerModel = function() { 118 TrainingManager.handleDeleteSpeakerModel = function() {
79 window.webkitRequestFileSystem(PERSISTENT, 119 window.webkitRequestFileSystem(PERSISTENT,
80 hotword.constants.FILE_SYSTEM_SIZE_BYTES, 120 hotword.constants.FILE_SYSTEM_SIZE_BYTES,
81 TrainingManager.onRequestFileSystemSuccess_, 121 TrainingManager.deleteFiles_,
82 TrainingManager.fileErrorHandler_); 122 TrainingManager.fileErrorHandler_);
83 }; 123 };
84 124
125 /**
126 * Handles a request for the speaker model existence.
127 */
128 TrainingManager.handleSpeakerModelExists = function() {
129 window.webkitRequestFileSystem(PERSISTENT,
130 hotword.constants.FILE_SYSTEM_SIZE_BYTES,
131 TrainingManager.speakerModelExists_,
132 TrainingManager.fileErrorHandler_);
133 };
134
85 TrainingManager.prototype = { 135 TrainingManager.prototype = {
86 __proto__: hotword.BaseSessionManager.prototype, 136 __proto__: hotword.BaseSessionManager.prototype,
87 137
88 /** @override */ 138 /** @override */
89 enabled: function() { 139 enabled: function() {
90 return this.stateManager.isTrainingEnabled(); 140 return this.stateManager.isTrainingEnabled();
91 }, 141 },
92 142
93 /** @override */ 143 /** @override */
94 updateListeners: function() { 144 updateListeners: function() {
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 handleSpeakerModelSaved_: function() { 195 handleSpeakerModelSaved_: function() {
146 if (this.enabled()) 196 if (this.enabled())
147 chrome.hotwordPrivate.notifySpeakerModelSaved(); 197 chrome.hotwordPrivate.notifySpeakerModelSaved();
148 }, 198 },
149 }; 199 };
150 200
151 return { 201 return {
152 TrainingManager: TrainingManager 202 TrainingManager: TrainingManager
153 }; 203 };
154 }); 204 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/hotword/manager.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698