<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=1079453 --> <head> <meta charset="utf-8"> <title>Test for Bug 1079453</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> <script src="common.js"></script> <script> /** * Image object's src member * https://w3c.github.io/manifest/#src-member **/ 'use strict'; var noSrc = { icons: [{}, { src: [] }, { src: {} }, { src: null }, { type: 'image/jpg' }, { sizes: '1x1,2x2' }, { sizes: 'any', type: 'image/jpg' }] }; var expected = `Expect icons without a src prop to be filtered out.`; data.jsonText = JSON.stringify(noSrc); var result = processor.process(data); is(result.icons.length, 0, expected); var invalidSrc = { icons: [{ src: null }, { src: 1 }, { src: [] }, { src: {} }, { src: true }, { src: '' }] }; var expected = `Expect icons with invalid src prop to be filtered out.`; data.jsonText = JSON.stringify(noSrc); var result = processor.process(data); is(result.icons.length, 0, expected); var expected = `Expect icon's src to be a string.`; var withSrc = { icons: [{ src: 'pass' }] }; data.jsonText = JSON.stringify(withSrc); var result = processor.process(data); is(typeof result.icons[0].src, "string", expected); var expected = `Expect only icons with a src prop to be kept.`; var withSrc = { icons: [{ src: 'pass' }, { src: 'pass', }, {}, { foo: 'foo' }] }; data.jsonText = JSON.stringify(withSrc); var result = processor.process(data); is(result.icons.length, 2, expected); var expectedURL = new URL('pass', manifestURL); for (var icon of result.icons) { var expected = `Expect src prop to be ${expectedURL.toString()}`; is(icon.src.toString(), expectedURL.toString(), expected); } //Resolve URLs relative to manfiest var URLs = ['path', '/path', '../../path']; URLs.forEach((url) => { var expected = `Resolve icon src URLs relative to manifest.`; data.jsonText = JSON.stringify({ icons: [{ src: url }] }); var absURL = new URL(url, manifestURL).toString(); var result = processor.process(data); is(result.icons[0].src.toString(), absURL, expected); }); </script> </head>