OLD | NEW |
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 'use strict'; | 5 'use strict'; |
6 | 6 |
7 /** | 7 /** |
8 * @fileoverview This is the audio client content script injected into eligible | 8 * @fileoverview This is the audio client content script injected into eligible |
9 * Google.com and New tab pages for interaction between the Webpage and the | 9 * Google.com and New tab pages for interaction between the Webpage and the |
10 * Hotword extension. | 10 * Hotword extension. |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 * @private | 126 * @private |
127 */ | 127 */ |
128 AudioClient.EXISTS_ = 'chwace'; | 128 AudioClient.EXISTS_ = 'chwace'; |
129 | 129 |
130 /** | 130 /** |
131 * Checks for the presence of speech overlay UI DOM elements. | 131 * Checks for the presence of speech overlay UI DOM elements. |
132 * @private | 132 * @private |
133 */ | 133 */ |
134 AudioClient.prototype.checkSpeechOverlayUi_ = function() { | 134 AudioClient.prototype.checkSpeechOverlayUi_ = function() { |
135 if (!this.speechOverlay_) { | 135 if (!this.speechOverlay_) { |
136 window.setTimeout(this.delayedCheckSpeechOverlayUi_.bind(this), | 136 window.setTimeout( |
137 AudioClient.RETRY_TIME_MS_); | 137 this.delayedCheckSpeechOverlayUi_.bind(this), |
| 138 AudioClient.RETRY_TIME_MS_); |
138 } else { | 139 } else { |
139 this.checkSpeechUiRetries_ = 0; | 140 this.checkSpeechUiRetries_ = 0; |
140 } | 141 } |
141 }; | 142 }; |
142 | 143 |
143 /** | 144 /** |
144 * Function called to check for the speech UI overlay after some time has | 145 * Function called to check for the speech UI overlay after some time has |
145 * passed since an initial check. Will either retry triggering the speech | 146 * passed since an initial check. Will either retry triggering the speech |
146 * or sends an error message depending on the number of retries. | 147 * or sends an error message depending on the number of retries. |
147 * @private | 148 * @private |
148 */ | 149 */ |
149 AudioClient.prototype.delayedCheckSpeechOverlayUi_ = function() { | 150 AudioClient.prototype.delayedCheckSpeechOverlayUi_ = function() { |
150 this.speechOverlay_ = document.getElementById( | 151 this.speechOverlay_ = |
151 AudioClient.SPEECH_UI_OVERLAY_ID_); | 152 document.getElementById(AudioClient.SPEECH_UI_OVERLAY_ID_); |
152 if (!this.speechOverlay_) { | 153 if (!this.speechOverlay_) { |
153 if (this.checkSpeechUiRetries_++ < AudioClient.MAX_RETRIES) { | 154 if (this.checkSpeechUiRetries_++ < AudioClient.MAX_RETRIES) { |
154 this.sendCommandToPage_(AudioClient.CommandToPage.VOICE_TRIGGER); | 155 this.sendCommandToPage_(AudioClient.CommandToPage.VOICE_TRIGGER); |
155 this.checkSpeechOverlayUi_(); | 156 this.checkSpeechOverlayUi_(); |
156 } else { | 157 } else { |
157 this.sendCommandToExtension_(AudioClient.Error.NO_SPEECH_UI); | 158 this.sendCommandToExtension_(AudioClient.Error.NO_SPEECH_UI); |
158 } | 159 } |
159 } else { | 160 } else { |
160 this.checkSpeechUiRetries_ = 0; | 161 this.checkSpeechUiRetries_ = 0; |
161 } | 162 } |
162 }; | 163 }; |
163 | 164 |
164 /** | 165 /** |
165 * Checks that the triggered UI is actually displayed. | 166 * Checks that the triggered UI is actually displayed. |
166 * @param {AudioClient.CommandToPage} command Command that was send. | 167 * @param {AudioClient.CommandToPage} command Command that was send. |
167 * @private | 168 * @private |
168 */ | 169 */ |
169 AudioClient.prototype.checkUi_ = function(command) { | 170 AudioClient.prototype.checkUi_ = function(command) { |
170 this.uiStatus_[command].timeoutId = | 171 this.uiStatus_[command].timeoutId = window.setTimeout( |
171 window.setTimeout(this.failedCheckUi_.bind(this, command), | 172 this.failedCheckUi_.bind(this, command), AudioClient.RETRY_TIME_MS_); |
172 AudioClient.RETRY_TIME_MS_); | |
173 }; | 173 }; |
174 | 174 |
175 /** | 175 /** |
176 * Function called when the UI verification is not called in time. Will either | 176 * Function called when the UI verification is not called in time. Will either |
177 * retry the command or sends an error message, depending on the number of | 177 * retry the command or sends an error message, depending on the number of |
178 * retries for the command. | 178 * retries for the command. |
179 * @param {AudioClient.CommandToPage} command Command that was sent. | 179 * @param {AudioClient.CommandToPage} command Command that was sent. |
180 * @private | 180 * @private |
181 */ | 181 */ |
182 AudioClient.prototype.failedCheckUi_ = function(command) { | 182 AudioClient.prototype.failedCheckUi_ = function(command) { |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 // in most cases, the extension will receive SPEECH_RESET twice, one from | 365 // in most cases, the extension will receive SPEECH_RESET twice, one from |
366 // this sendCommandToExtension_ and the one forwarded from the page. But | 366 // this sendCommandToExtension_ and the one forwarded from the page. But |
367 // that's OK and the extension can handle it. | 367 // that's OK and the extension can handle it. |
368 this.sendCommandToExtension_(AudioClient.CommandFromPage.SPEECH_RESET); | 368 this.sendCommandToExtension_(AudioClient.CommandFromPage.SPEECH_RESET); |
369 } | 369 } |
370 }; | 370 }; |
371 | 371 |
372 // Initializes as soon as the code is ready, do not wait for the page. | 372 // Initializes as soon as the code is ready, do not wait for the page. |
373 new AudioClient().initialize(); | 373 new AudioClient().initialize(); |
374 })(); | 374 })(); |
OLD | NEW |