test_ImageObjectProcessor_src.html (2297B)
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 * Image object's src member 15 * https://w3c.github.io/manifest/#src-member 16 */ 17 "use strict"; 18 19 var noSrc = { 20 icons: [{}, { 21 src: [], 22 }, { 23 src: {}, 24 }, { 25 src: null, 26 }, { 27 type: "image/jpg", 28 }, { 29 sizes: "1x1,2x2", 30 }, { 31 sizes: "any", 32 type: "image/jpg", 33 }], 34 }; 35 36 var expected = `Expect icons without a src prop to be filtered out.`; 37 data.jsonText = JSON.stringify(noSrc); 38 var result = processor.process(data); 39 is(result.icons.length, 0, expected); 40 41 var invalidSrc = { 42 icons: [{ 43 src: null, 44 }, { 45 src: 1, 46 }, { 47 src: [], 48 }, { 49 src: {}, 50 }, { 51 src: true, 52 }, { 53 src: "", 54 }], 55 }; 56 57 expected = `Expect icons with invalid src prop to be filtered out.`; 58 data.jsonText = JSON.stringify(invalidSrc); 59 result = processor.process(data); 60 is(result.icons.length, 0, expected); 61 62 expected = `Expect icon's src to be a string.`; 63 var withSrc = { 64 icons: [{ 65 src: "pass", 66 }], 67 }; 68 data.jsonText = JSON.stringify(withSrc); 69 result = processor.process(data); 70 is(typeof result.icons[0].src, "string", expected); 71 72 73 expected = `Expect only icons with a src prop to be kept.`; 74 withSrc = { 75 icons: [{ 76 src: "pass", 77 }, { 78 src: "pass", 79 }, {}, { 80 foo: "foo", 81 }], 82 }; 83 data.jsonText = JSON.stringify(withSrc); 84 result = processor.process(data); 85 is(result.icons.length, 2, expected); 86 87 var expectedURL = new URL("pass", manifestURL); 88 for (var icon of result.icons) { 89 expected = `Expect src prop to be ${expectedURL.toString()}`; 90 is(icon.src.toString(), expectedURL.toString(), expected); 91 } 92 93 94 // Resolve URLs relative to manfiest 95 var URLs = ["path", "/path", "../../path"]; 96 97 URLs.forEach((url) => { 98 expected = `Resolve icon src URLs relative to manifest.`; 99 data.jsonText = JSON.stringify({ 100 icons: [{ 101 src: url, 102 }], 103 }); 104 var absURL = new URL(url, manifestURL).toString(); 105 result = processor.process(data); 106 is(result.icons[0].src.toString(), absURL, expected); 107 }); 108 109 </script> 110 </head>