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>