tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_file_upload.html (2065B)


      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 1424701 - Test for service worker + file upload</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <script type="text/javascript" src="utils.js"></script>
     11  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
     12 </head>
     13 <body>
     14 <input id="input" type="file">
     15 <script class="testbody" type="text/javascript">
     16 
     17 function GetFormData(file) {
     18  const formData = new FormData();
     19  formData.append('file', file);
     20  return formData;
     21 }
     22 
     23 async function onOpened(message) {
     24  let input = document.getElementById("input");
     25  SpecialPowers.wrap(input).mozSetFileArray([message.file]);
     26  script.destroy();
     27 
     28  let reg = await navigator.serviceWorker.register('sw_file_upload.js',
     29                                                   {scope: "." });
     30  let serviceWorker = reg.installing || reg.waiting || reg.active;
     31  await waitForState(serviceWorker, 'activated');
     32 
     33  let res = await fetch('server_file_upload.sjs?clone=0', {
     34    method: 'POST',
     35    body: input.files[0],
     36  });
     37 
     38  let data = await res.clone().text();
     39  ok(data.length, "We have data for an uncloned request!");
     40 
     41  res = await fetch('server_file_upload.sjs?clone=1', {
     42    method: 'POST',
     43    // Make sure the underlying stream is a file stream
     44    body: GetFormData(input.files[0]),
     45  });
     46 
     47  data = await res.clone().text();
     48  ok(data.length, "We have data for a file-stream-backed cloned request!");
     49 
     50  await reg.unregister();
     51  SimpleTest.finish();
     52 }
     53 
     54 let url = SimpleTest.getTestFileURL("script_file_upload.js");
     55 let script = SpecialPowers.loadChromeScript(url);
     56 
     57 SimpleTest.waitForExplicitFinish();
     58 SpecialPowers.pushPrefEnv({"set": [
     59  ["dom.serviceWorkers.exemptFromPerDomainMax", true],
     60  ["dom.serviceWorkers.enabled", true],
     61  ["dom.serviceWorkers.testing.enabled", true]
     62 ]}).then(() => {
     63  script.addMessageListener("file.opened", onOpened);
     64  script.sendAsyncMessage("file.open");
     65 });
     66 </script>
     67 </body>
     68 </html>