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