@@ -9,6 +9,10 @@ const { setTimeout } = ChromeUtils.importESModule(
9
9
const { AnimationFramePromise, Deferred, EventPromise, PollPromise } =
10
10
ChromeUtils . importESModule ( "chrome://remote/content/shared/Sync.sys.mjs" ) ;
11
11
12
+ const { Log } = ChromeUtils . importESModule (
13
+ "resource://gre/modules/Log.sys.mjs"
14
+ ) ;
15
+
12
16
13
17
14
18
@@ -63,6 +67,21 @@ class MockElement {
63
67
}
64
68
}
65
69
70
+ class MockAppender extends Log . Appender {
71
+ constructor ( formatter ) {
72
+ super ( formatter ) ;
73
+ this . messages = [ ] ;
74
+ }
75
+
76
+ append ( message ) {
77
+ this . doAppend ( message ) ;
78
+ }
79
+
80
+ doAppend ( message ) {
81
+ this . messages . push ( message ) ;
82
+ }
83
+ }
84
+
66
85
add_task ( async function test_AnimationFramePromise ( ) {
67
86
let called = false ;
68
87
let win = {
@@ -387,3 +406,31 @@ add_task(async function test_PollPromise_interval() {
387
406
) ;
388
407
equal ( 2 , nevals ) ;
389
408
} ) ;
409
+
410
+ add_task ( async function test_PollPromise_resolve ( ) {
411
+ const log = Log . repository . getLogger ( "RemoteAgent" ) ;
412
+ const appender = new MockAppender ( new Log . BasicFormatter ( ) ) ;
413
+ appender . level = Log . Level . Info ;
414
+ log . addAppender ( appender ) ;
415
+
416
+ const errorMessage = "PollingFailed" ;
417
+ const timeout = 100 ;
418
+
419
+ await new PollPromise (
420
+ ( resolve , reject ) => {
421
+ resolve ( ) ;
422
+ } ,
423
+ { timeout, errorMessage }
424
+ ) ;
425
+ Assert . equal ( appender . messages . length , 0 ) ;
426
+
427
+ await new PollPromise (
428
+ ( resolve , reject ) => {
429
+ reject ( ) ;
430
+ } ,
431
+ { timeout, errorMessage : "PollingFailed" }
432
+ ) ;
433
+ Assert . equal ( appender . messages . length , 1 ) ;
434
+ Assert . equal ( appender . messages [ 0 ] . level , Log . Level . Warn ) ;
435
+ Assert . equal ( appender . messages [ 0 ] . message , "PollingFailed after 100 ms" ) ;
436
+ } ) ;
0 commit comments