Index: LayoutTests/http/tests/serviceworker/resources/extendable-message-event-worker-waituntil.js |
diff --git a/LayoutTests/http/tests/serviceworker/resources/extendable-message-event-worker-waituntil.js b/LayoutTests/http/tests/serviceworker/resources/extendable-message-event-worker-waituntil.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dc29389eb001b3798240f209d4dd074dbf51a280 |
--- /dev/null |
+++ b/LayoutTests/http/tests/serviceworker/resources/extendable-message-event-worker-waituntil.js |
@@ -0,0 +1,32 @@ |
+self.onmessage = function(e) { |
+ switch (e.data) { |
+ case 'WAIT': |
+ e.waitUntil(new Promise(function(r) { |
+ self.resolve = r; |
+ self.port.postMessage('ACK'); |
+ }).then(function() { |
+ self.port.postMessage('PASS'); |
+ })); |
+ return; |
+ case 'WAIT_ASYNC': |
+ setTimeout(function() { |
+ try { |
+ e.waitUntil(new Promise(function() {})); |
+ } catch (error) { |
+ if (error.name == 'InvalidStateError') |
+ self.port.postMessage('PASS'); |
+ else |
+ self.port.postMessage( |
+ 'FAIL: unexpected exception: ' + error); |
+ } |
+ }, 0); |
+ return; |
+ case 'DONE': |
+ self.resolve(); |
+ return; |
+ default: |
+ if (e.data.port) |
+ self.port = e.data.port; |
+ return; |
+ } |
+}; |