OLD | NEW |
1 // Adapter for testharness.js-style tests with Service Workers | 1 // Adapter for testharness.js-style tests with Service Workers |
2 | 2 |
3 function service_worker_test(url, description) { | 3 function service_worker_test(url, description) { |
4 var t = async_test(description); | 4 var t = async_test(description); |
5 t.step(function() { | 5 t.step(function() { |
6 | 6 |
7 navigator.serviceWorker.register(url, {scope:'nonexistent'}).then( | 7 navigator.serviceWorker.register(url, {scope:'nonexistent'}).then( |
8 t.step_func(function(worker) { | 8 t.step_func(function(worker) { |
9 var messageChannel = new MessageChannel(); | 9 var messageChannel = new MessageChannel(); |
10 messageChannel.port1.onmessage = t.step_func(onMessage); | 10 messageChannel.port1.onmessage = t.step_func(onMessage); |
11 worker.postMessage({port:messageChannel.port2}, [messageChannel.
port2]); | 11 worker.postMessage({port:messageChannel.port2}, [messageChannel.
port2]); |
12 }), | 12 }), |
13 t.step_func(function(reason) { | 13 unreached_rejection(t, 'Registration should succeed, but failed') |
14 assert_unreached('Registration should succeed, but failed: ' + r
eason.name); | 14 ); |
15 })); | |
16 | 15 |
17 function onMessage(e) { | 16 function onMessage(e) { |
18 assert_equals(e.data, 'pass'); | 17 assert_equals(e.data, 'pass'); |
19 t.done(); | 18 t.done(); |
20 } | 19 } |
21 }); | 20 }); |
22 } | 21 } |
23 | 22 |
24 // FIXME: Replace this with test.unreached_func(desc) once testharness.js is upd
ated | 23 // FIXME: Replace this with test.unreached_func(desc) once testharness.js is upd
ated |
25 // Use with unexpected event handlers or Promise rejection. | 24 // Use with unexpected event handlers or Promise rejection. |
26 // E.g.: | 25 // E.g.: |
27 // onbadevent = fail(t, 'Should only see good events'); | 26 // onbadevent = fail(t, 'Should only see good events'); |
28 // Promise.then(...).catch(fail(t, 'Rejection is never fun')); | 27 // Promise.then(...).catch(fail(t, 'Rejection is never fun')); |
29 function unreached_func(test, desc) { | 28 function unreached_func(test, desc) { |
30 return test.step_func(function() { | 29 return test.step_func(function() { |
31 assert_unreached(desc); | 30 assert_unreached(desc); |
32 }); | 31 }); |
33 } | 32 } |
34 | 33 |
35 // Rejection-specific helper that provides more details | 34 // Rejection-specific helper that provides more details |
36 function unreached_rejection(test, prefix) { | 35 function unreached_rejection(test, prefix) { |
37 return test.step_func(function(reason) { | 36 return test.step_func(function(reason) { |
38 assert_unreached(prefix + ': ' + reason.name); | 37 assert_unreached(prefix + ': ' + reason.name); |
39 }); | 38 }); |
40 } | 39 } |
| 40 |
| 41 // FIXME: Clean up the iframe when the test completes. |
| 42 function with_iframe(url, f) { |
| 43 var frame = document.createElement('iframe'); |
| 44 frame.src = url; |
| 45 frame.onload = function() { |
| 46 f(frame); |
| 47 }; |
| 48 document.body.appendChild(frame); |
| 49 } |
OLD | NEW |