tor-browser

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

share-url-invalid.https.html (2887B)


      1 <!DOCTYPE html>
      2 <html>
      3  <head>
      4    <meta charset="utf-8" />
      5    <title>WebShare Test: Share with an invalid URL</title>
      6    <script src="/resources/testharness.js"></script>
      7    <script src="/resources/testharnessreport.js"></script>
      8    <script src="/resources/testdriver.js"></script>
      9    <script src="/resources/testdriver-vendor.js"></script>
     10  </head>
     11  <body>
     12    <script>
     13      promise_test(async t => {
     14        await test_driver.bless();
     15        const promise = navigator.share({ url: "http://a.com:65536" });
     16        return promise_rejects_js(t, TypeError, promise);
     17      }, "share() rejects when URL is invalid");
     18 
     19      promise_test(async t => {
     20        await test_driver.bless();
     21        const promise = navigator.share({ url: "file:///etc/passwd" });
     22        return promise_rejects_js(t, TypeError, promise);
     23      }, "share() rejects file:// URLs");
     24 
     25      promise_test(async t => {
     26        await test_driver.bless();
     27        const promise = navigator.share({ url: "wss://a.com/" });
     28        return promise_rejects_js(t, TypeError, promise);
     29      }, "share() rejects wss: URLs");
     30 
     31      promise_test(async t => {
     32        await test_driver.bless();
     33        const promise = navigator.share({ url: "about:config" });
     34        return promise_rejects_js(t, TypeError, promise);
     35      }, "share() rejects about: URLs");
     36 
     37      promise_test(async t => {
     38        await test_driver.bless();
     39        const promise = navigator.share({ url: "chrome://about" });
     40        return promise_rejects_js(t, TypeError, promise);
     41      }, "share() rejects chrome: URLs");
     42 
     43      promise_test(async t => {
     44        await test_driver.bless();
     45        const promise = navigator.share({ url: "javascript:window.alert('error')" });
     46        return promise_rejects_js(t, TypeError, promise);
     47      }, "share() rejects javascript: URLs");
     48 
     49      promise_test(async t => {
     50        await test_driver.bless();
     51        const file = new File([], "text/plain");
     52        const promise = navigator.share({ url: URL.createObjectURL(file) });
     53        return promise_rejects_js(t, TypeError, promise);
     54      }, "share() rejects blob: URLs");
     55 
     56      promise_test(async t => {
     57        const encoder = new TextEncoder();
     58        const encoded = encoder.encode(
     59          `<meta http-equiv="refresh" content="1;url=http://example.com/">`
     60        );
     61        const file = new File(encoded, "text/html");
     62        const url = URL.createObjectURL(file);
     63        const reader = new FileReader();
     64        reader.readAsDataURL(file);
     65        const dataURL = await new Promise(resolve => {
     66          reader.addEventListener("load", () => {
     67            resolve(reader.result);
     68          });
     69        });
     70        await test_driver.bless();
     71        const promise = navigator.share({ url: dataURL });
     72        return promise_rejects_js(t, TypeError, promise);
     73      }, "share() rejects data: URLs");
     74    </script>
     75  </body>
     76 </html>