Index: content/test/data/background_sync/background_sync_test_helpers.js |
diff --git a/content/test/data/background_sync/background_sync_test_helpers.js b/content/test/data/background_sync/background_sync_test_helpers.js |
index 79005264a28e3ca1ec9244c54e3f8368621da34e..7d118752a510297c88b4a1d742a24ce9740aca6f 100644 |
--- a/content/test/data/background_sync/background_sync_test_helpers.js |
+++ b/content/test/data/background_sync/background_sync_test_helpers.js |
@@ -115,6 +115,62 @@ function rejectDelayedOneShot() { |
.catch(sendErrorToTest); |
} |
+function createFrame(url) { |
+ return new Promise(function(resolve) { |
+ var frame = document.createElement('iframe'); |
+ frame.src = url; |
+ frame.onload = function() { resolve(frame); }; |
+ document.body.appendChild(frame); |
+ }); |
+} |
+ |
+function registerOneShotFromLocalFrame(frame_url) { |
+ var frameWindow; |
+ return createFrame(frame_url) |
+ .then(function(frame) { |
+ frameWindow = frame.contentWindow; |
+ return frameWindow.navigator.serviceWorker.register('service_worker.js'); |
+ }) |
+ .then(function() { |
+ return frameWindow.navigator.serviceWorker.ready; |
+ }) |
+ .then(function(frame_registration) { |
+ return frame_registration.sync.register('foo'); |
+ }) |
+ .then(function() { |
+ sendResultToTest('error - iframe registered sync'); |
+ }, function(e) { |
+ if (e.name != 'AbortError' || e.message !== 'Registration failed - not ' + |
+ 'called from a main frame.') { |
+ sendErrorToTest(e); |
+ return; |
+ } |
+ sendResultToTest('ok - iframe failed to register sync'); |
+ }); |
+} |
+ |
+function receiveMessage() { |
+ return new Promise(function(resolve) { |
+ window.addEventListener('message', function(message) { |
+ resolve(message.data); |
+ }); |
+ }); |
+} |
+ |
+function registerOneShotFromCrossOriginServiceWorker(cross_frame_url) { |
+ return createFrame(cross_frame_url) |
+ .then(function(frame) { |
+ return receiveMessage(); |
+ }) |
+ .then(function(message) { |
+ console.log(message); |
+ if (message !== 'registration failed') { |
+ sendResultToTest('failed - ' + message); |
+ return; |
+ } |
+ sendResultToTest('ok - worker failed to register sync'); |
+ }); |
+} |
// Queue storing asynchronous results received from the Service Worker. Results |
// are sent to the test when requested. |