Chromium Code Reviews| 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 |