tor-browser

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

test_ManifestProcessor_start_url.html (2266B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1079453
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1079453</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     11  <script src="common.js"></script>
     12  <script>
     13 /**
     14 * Manifest start_url
     15 * https://w3c.github.io/manifest/#start_url-member
     16 */
     17 "use strict";
     18 typeTests.forEach((type) => {
     19  var expected = `Expect non - string start_url to be doc's url: ${typeof type}.`;
     20  data.jsonText = JSON.stringify({
     21    start_url: type,
     22  });
     23  var result = processor.process(data);
     24  is(result.start_url.toString(), docURL.toString(), expected);
     25 });
     26 
     27 // Not same origin
     28 var expected = `Expect different origin URLs to become document's URL.`;
     29 data.jsonText = JSON.stringify({
     30  start_url: "http://not-same-origin",
     31 });
     32 var result = processor.process(data);
     33 is(result.start_url.toString(), docURL.toString(), expected);
     34 
     35 // Empty string test
     36 expected = `Expect empty string for start_url to become document's URL.`;
     37 data.jsonText = JSON.stringify({
     38  start_url: "",
     39 });
     40 result = processor.process(data);
     41 is(result.start_url.toString(), docURL.toString(), expected);
     42 
     43 // Resolve URLs relative to manifest
     44 var URLs = [
     45  "path",
     46  "/path",
     47  "../../path",
     48  `${whiteSpace}path${whiteSpace}`,
     49  `${whiteSpace}/path`,
     50  `${whiteSpace}../../path`,
     51 ];
     52 
     53 URLs.forEach((url) => {
     54  expected = `Resolve URLs relative to manifest.`;
     55  data.jsonText = JSON.stringify({
     56    start_url: url,
     57  });
     58  var absURL = new URL(url, manifestURL).toString();
     59  result = processor.process(data);
     60  is(result.start_url.toString(), absURL, expected);
     61 });
     62 
     63 // It retains the fragment
     64 var startURL = "./path?query=123#fragment";
     65 data.jsonText = JSON.stringify({
     66  start_url: startURL,
     67 });
     68 var absURL = new URL(startURL, manifestURL).href;
     69 result = processor.process(data);
     70 is(result.start_url.toString(), absURL, "Retains fragment");
     71 
     72 // It retains the fragment on the document's location too.
     73 window.location = "#here";
     74 data.jsonText = JSON.stringify({});
     75 result = processor.process(data);
     76 is(
     77  window.location.href,
     78  result.start_url.toString(),
     79  `Retains the fragment of document's location`
     80 );
     81 </script>
     82  </head>
     83 </html>