test_eventsource_intercept.html (3583B)
1 <!-- 2 Any copyright is dedicated to the Public Domain. 3 http://creativecommons.org/publicdomain/zero/1.0/ 4 --> 5 <!DOCTYPE HTML> 6 <html> 7 <head> 8 <title>Bug 1182103 - Test EventSource scenarios with fetch interception</title> 9 <script src="/tests/SimpleTest/SimpleTest.js"></script> 10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 11 </head> 12 <body> 13 <p id="display"></p> 14 <div id="content" style="display: none"></div> 15 <pre id="test"></pre> 16 <script class="testbody" type="text/javascript"> 17 18 function testFrame(src) { 19 return new Promise(function(resolve, reject) { 20 var iframe = document.createElement("iframe"); 21 iframe.src = src; 22 window.onmessage = function(e) { 23 if (e.data.status == "callback") { 24 switch(e.data.data) { 25 case "ok": 26 ok(e.data.condition, e.data.message); 27 break; 28 case "ready": 29 iframe.contentWindow.postMessage({status: "callback", data: "eventsource"}, "*"); 30 break; 31 case "done": 32 window.onmessage = null; 33 iframe.src = "about:blank"; 34 document.body.removeChild(iframe); 35 iframe = null; 36 resolve(); 37 break; 38 default: 39 ok(false, "Something went wrong"); 40 break; 41 } 42 } else { 43 ok(false, "Something went wrong"); 44 } 45 }; 46 document.body.appendChild(iframe); 47 }); 48 } 49 50 function runTest() { 51 Promise.resolve() 52 .then(() => { 53 info("Going to intercept and test opaque responses"); 54 return testFrame("eventsource/eventsource_register_worker.html" + 55 "?script=eventsource_opaque_response_intercept_worker.js"); 56 }) 57 .then(() => { 58 return testFrame("eventsource/eventsource_opaque_response.html"); 59 }) 60 .then(() => { 61 info("Going to intercept and test cors responses"); 62 return testFrame("eventsource/eventsource_register_worker.html" + 63 "?script=eventsource_cors_response_intercept_worker.js"); 64 }) 65 .then(() => { 66 return testFrame("eventsource/eventsource_cors_response.html"); 67 }) 68 .then(() => { 69 info("Going to intercept and test synthetic responses"); 70 return testFrame("eventsource/eventsource_register_worker.html" + 71 "?script=eventsource_synthetic_response_intercept_worker.js"); 72 }) 73 .then(() => { 74 return testFrame("eventsource/eventsource_synthetic_response.html"); 75 }) 76 .then(() => { 77 info("Going to intercept and test mixed content cors responses"); 78 return testFrame("https://example.com/tests/dom/serviceworkers/test/" + 79 "eventsource/eventsource_register_worker.html" + 80 "?script=eventsource_mixed_content_cors_response_intercept_worker.js"); 81 }) 82 .then(() => { 83 return testFrame("https://example.com/tests/dom/serviceworkers/test/" + 84 "eventsource/eventsource_mixed_content_cors_response.html"); 85 }) 86 .then(SimpleTest.finish) 87 .catch(function(e) { 88 ok(false, "Some test failed with error " + e); 89 SimpleTest.finish(); 90 }); 91 } 92 93 SimpleTest.waitForExplicitFinish(); 94 SpecialPowers.pushPrefEnv({"set": [ 95 ["dom.serviceWorkers.exemptFromPerDomainMax", true], 96 ["dom.serviceWorkers.enabled", true], 97 ["dom.serviceWorkers.testing.enabled", true], 98 ]}, runTest); 99 </script> 100 </pre> 101 </body> 102 </html>