@@ -162,8 +162,18 @@ ImpatientListener.prototype.onProgressChange = function(webProgress) {
162
162
} ;
163
163
164
164
165
- var prefs = Components . classes [ '@mozilla.org/preferences-service;1' ] . getService ( Components . interfaces [ 'nsIPrefBranch' ] ) ;
165
+ var prefs = Components . classes [ '@mozilla.org/preferences-service;1' ]
166
+ . getService ( Components . interfaces [ 'nsIPrefBranch' ] ) ;
166
167
168
+ /**
169
+ * Builds a nsIWebProgressListener for the given browser.
170
+ * @param {!nsIWebProgress } browser The browser window to listen to for load
171
+ * events.
172
+ * @param {function(boolean) } toCall The function to call when listener detects
173
+ * that the browser has finished loading.
174
+ * @param {Window= } opt_window The DOM window being watched.
175
+ * @return {!nsIWebProgressListener } The new listener.
176
+ */
167
177
function buildHandler ( browser , toCall , opt_window ) {
168
178
var strategy = Utils . getPageLoadingStrategy ( ) ;
169
179
if ( 'normal' == strategy ) {
@@ -173,13 +183,22 @@ function buildHandler(browser, toCall, opt_window) {
173
183
return new ImpatientListener ( browser , toCall , opt_window ) ;
174
184
}
175
185
176
- fxdriver . logging . warn ( 'Unsupported page loading strategy: ' + strategy ) ;
186
+ fxdriver . logging . warning ( 'Unsupported page loading strategy: ' + strategy ) ;
177
187
// Fall back to 'normal' strategy
178
188
return new PatientListener ( browser , toCall , opt_window ) ;
179
189
}
180
190
181
191
var loadingListenerTimer ;
182
192
193
+ /**
194
+ * @param {!nsIWebProgress } browser The browser window to listen to for load
195
+ * events.
196
+ * @param {function(boolean) } toCall The function to call when either the
197
+ * timeout expires or the browser finishes loading.
198
+ * @param {number } timeout The timeout to use, in milliseconds.
199
+ * @param {Window= } opt_window The DOM window being watched.
200
+ * @constructor
201
+ */
183
202
WebLoadingListener = function ( browser , toCall , timeout , opt_window ) {
184
203
var strategy = Utils . getPageLoadingStrategy ( ) ;
185
204
if ( 'none' == strategy ) {
@@ -188,23 +207,31 @@ WebLoadingListener = function(browser, toCall, timeout, opt_window) {
188
207
}
189
208
190
209
loadingListenerTimer = new fxdriver . Timer ( ) ;
191
- var func = function ( timedOut ) { loadingListenerTimer . cancel ( ) ; toCall ( timedOut ) ; } ;
210
+ var func = function ( timedOut ) {
211
+ loadingListenerTimer . cancel ( ) ;
212
+ toCall ( timedOut ) ;
213
+ } ;
192
214
215
+ /** @type {!nsIWebProgressListener } */
193
216
this . handler = buildHandler ( browser , func , opt_window ) ;
194
- browser . addProgressListener ( this . handler ) ;
195
- var handler = this . handler ;
196
217
218
+ browser . addProgressListener ( this . handler ) ;
197
219
if ( timeout == - 1 ) {
198
220
timeout = 1000 * 60 * 30 ; // 30 minutes is a loooong time.
199
221
}
200
222
223
+ var handler = this . handler ;
201
224
loadingListenerTimer . setTimeout ( function ( ) {
202
- WebLoadingListener . removeListener ( browser , handler ) ;
225
+ browser . removeProgressListener ( handler ) ;
203
226
func ( true ) ;
204
227
} , timeout ) ;
205
228
} ;
206
229
207
-
230
+ /**
231
+ * Removes a progress listener from the given browser.
232
+ * @param {!nsIWebProgress } browser The browser to remove a listener from.
233
+ * @param {!WebLoadingListener } listener The listener to remove.
234
+ */
208
235
WebLoadingListener . removeListener = function ( browser , listener ) {
209
- browser . removeProgressListener ( listener ) ;
236
+ browser . removeProgressListener ( listener . handler ) ;
210
237
} ;
0 commit comments