OLD | NEW |
---|---|
(Empty) | |
1 importScripts('../../serviceworker/resources/worker-testharness.js'); | |
2 importScripts('../../serviceworker/resources/test-helpers.js'); | |
3 importScripts('/resources/testharness-helpers.js'); | |
4 importScripts('test-helpers.js'); | |
5 | |
6 // Returns a promise that additionally has |resolve| and |reject| methods. | |
7 function NewResolvablePromise() { | |
8 var resolveMethod, rejectMethod; | |
bsittler
2015/07/29 17:52:33
one extra space
| |
9 var p = new Promise(function(resolve, reject) { | |
10 resolveMethod = resolve; | |
11 rejectMethod = reject; | |
12 }); | |
13 p.resolve = resolveMethod; | |
14 p.reject = rejectMethod; | |
15 return p; | |
16 } | |
17 | |
18 self.addEventListener('install', function(event) { | |
19 event.waitUntil(self.skipWaiting()); | |
20 }); | |
21 | |
22 self.addEventListener('activate', function(event) { | |
23 sequential_promise_test(function(test) { | |
24 return wait_for_state(test, self.registration.active, 'activated'); | |
25 }, 'wait for worker to be activated'); | |
26 | |
27 sequential_promise_test(function(test) { | |
28 var respondResult = NewResolvablePromise(); | |
29 navigator.services.onconnect = test.step_func(function(event) { | |
30 respondResult.resolve(event.respondWith({accept: true})); | |
31 }); | |
32 return Promise.all([respondResult, | |
33 navigator.services.connect(self.registration.scope + '/service')]); | |
34 }, 'respondWith can synchronously accept a connection without a promise.'); | |
35 | |
36 sequential_promise_test(function(test) { | |
37 var respondResult = NewResolvablePromise(); | |
38 navigator.services.onconnect = test.step_func(function(event) { | |
39 respondResult.resolve( | |
40 event.respondWith(Promise.resolve({accept: true}))); | |
41 }); | |
42 return Promise.all([respondResult, | |
43 navigator.services.connect(self.registration.scope + '/service')]); | |
44 }, 'respondWith can synchronously accept a connection with a promise.'); | |
45 | |
46 sequential_promise_test(function(test) { | |
47 var respondResult = NewResolvablePromise(); | |
48 navigator.services.onconnect = test.step_func(function(event) { | |
49 respondResult.resolve( | |
50 event.respondWith(new Promise(function(resolve) { | |
51 self.setTimeout(resolve, 1, {accept: true}); | |
52 }))); | |
53 }); | |
54 return Promise.all([respondResult, | |
55 navigator.services.connect(self.registration.scope + '/service')]); | |
56 }, 'respondWith can asynchronously accept a connection.'); | |
57 | |
58 sequential_promise_test(function(test) { | |
59 var respondResult = NewResolvablePromise(); | |
60 navigator.services.onconnect = test.step_func(function(event) { | |
61 respondResult.resolve( | |
62 promise_rejects(test, "AbortError", | |
63 event.respondWith({accept: false}))); | |
64 }); | |
65 return Promise.all([respondResult, | |
66 promise_rejects(test, 'AbortError', | |
67 navigator.services.connect(self.registration.scope + '/service')) | |
68 ]); | |
69 }, 'respondWith can synchronously reject a connection without a promise.'); | |
70 | |
71 sequential_promise_test(function(test) { | |
72 var respondResult = NewResolvablePromise(); | |
73 navigator.services.onconnect = test.step_func(function(event) { | |
74 respondResult.resolve( | |
75 promise_rejects(test, "AbortError", | |
76 event.respondWith(Promise.resolve({accept: false}) ))); | |
77 }); | |
78 return Promise.all([respondResult, | |
79 promise_rejects(test, 'AbortError', | |
80 navigator.services.connect(self.registration.scope + '/service')) | |
81 ]); | |
82 }, 'respondWith can synchronously reject a connection with a resolved promis e.'); | |
83 | |
84 sequential_promise_test(function(test) { | |
85 var respondResult = NewResolvablePromise(); | |
86 navigator.services.onconnect = test.step_func(function(event) { | |
87 respondResult.resolve( | |
88 promise_rejects(test, "AbortError", | |
89 event.respondWith(Promise.reject()))); | |
90 }); | |
91 return Promise.all([respondResult, | |
92 promise_rejects(test, 'AbortError', | |
93 navigator.services.connect(self.registration.scope + '/service')) | |
94 ]); | |
95 }, 'respondWith can synchronously reject a connection with a rejected promis e.'); | |
96 | |
97 sequential_promise_test(function(test) { | |
98 navigator.services.onconnect = test.step_func(function(event) { | |
99 }); | |
100 return promise_rejects(test, 'AbortError', | |
101 navigator.services.connect(self.registration.scope + '/service')); | |
102 }, 'Not calling respondWith will reject the connection.'); | |
103 | |
104 sequential_promise_test(function(test) { | |
105 var respondResult1 = NewResolvablePromise(); | |
106 var respondResult2 = NewResolvablePromise(); | |
107 navigator.services.onconnect = test.step_func(function(event) { | |
108 respondResult1.resolve(event.respondWith({accept: true})); | |
109 respondResult2.resolve( | |
110 promise_rejects(test, 'InvalidStateError', | |
111 event.respondWith({}))); | |
112 }); | |
113 return Promise.all([respondResult1, respondResult2, | |
114 navigator.services.connect(self.registration.scope + '/service')]); | |
115 }, 'Calling respondWith a second time will fail.'); | |
116 | |
117 sequential_promise_test(function(test) { | |
118 var respondResult = NewResolvablePromise(); | |
119 navigator.services.onconnect = test.step_func(function(event) { | |
120 respondResult.resolve( | |
121 promise_rejects(test, new TypeError(), | |
122 event.respondWith(""))); | |
123 }); | |
124 return Promise.all([respondResult, | |
125 promise_rejects(test, 'AbortError', | |
126 navigator.services.connect(self.registration.scope + '/service')) | |
127 ]); | |
128 }, 'Calling respondWith with something that is not an object rejects.'); | |
129 }); | |
OLD | NEW |