test_serviceworker_interfaces.html (2520B)
1 <!-- Any copyright is dedicated to the Public Domain. 2 - http://creativecommons.org/publicdomain/zero/1.0/ --> 3 <!DOCTYPE HTML> 4 <html> 5 <head> 6 <title>Validate Interfaces Exposed to Service Workers</title> 7 <script src="/tests/SimpleTest/SimpleTest.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 9 <script src="../../tests/mochitest/general/interface_exposure_checker.js"></script> 10 <script src="../worker_driver.js"></script> 11 </head> 12 <body> 13 <script class="testbody" type="text/javascript"> 14 15 function setupSW(registration) { 16 var iframe; 17 var worker = registration.installing || 18 registration.waiting || 19 registration.active; 20 window.onmessage = function(event) { 21 if (event.data.type == 'finish') { 22 iframe.remove(); 23 registration.unregister().then(function(success) { 24 ok(success, "The service worker should be unregistered successfully"); 25 26 SimpleTest.finish(); 27 }, function(e) { 28 dump("Unregistering the SW failed with " + e + "\n"); 29 SimpleTest.finish(); 30 }); 31 } else if (event.data.type == 'status') { 32 ok(event.data.status, event.data.msg); 33 34 } else if (event.data.type == 'getPrefs') { 35 let result = {}; 36 event.data.prefs.forEach(function(pref) { 37 result[pref] = SpecialPowers.Services.prefs.getBoolPref(pref); 38 }); 39 worker.postMessage({ 40 type: 'returnPrefs', 41 prefs: event.data.prefs, 42 result 43 }); 44 45 } else if (event.data.type == 'getHelperData') { 46 worker.postMessage({ 47 type: 'returnHelperData', 48 result: getHelperData(), 49 }); 50 } 51 } 52 53 worker.onerror = function(event) { 54 ok(false, 'Worker had an error: ' + event.data); 55 SimpleTest.finish(); 56 }; 57 58 iframe = document.createElement("iframe"); 59 iframe.src = "message_receiver.html"; 60 iframe.onload = function() { 61 worker.postMessage({ script: "test_serviceworker_interfaces.js" }); 62 }; 63 document.body.appendChild(iframe); 64 } 65 66 function runTest() { 67 navigator.serviceWorker.register("serviceworker_wrapper.js", {scope: "."}) 68 .then(setupSW); 69 } 70 71 SimpleTest.waitForExplicitFinish(); 72 onload = function() { 73 var prefs = [ 74 ["dom.serviceWorkers.exemptFromPerDomainMax", true], 75 ["dom.serviceWorkers.enabled", true], 76 ]; 77 SpecialPowers.pushPrefEnv({"set": prefs}, runTest); 78 }; 79 </script> 80 </body> 81 </html>