test_track_getNativeSizes.html (1657B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <title></title> 5 <script src="/tests/SimpleTest/SimpleTest.js"></script> 6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 7 </head> 8 <body> 9 <script> 10 11 // Bug 1924775 - ESLint doesn't yet know about `ImageDecoder`. 12 /* globals ImageDecoder:false */ 13 14 add_task(async function test() { 15 const imgResponse = await fetch("multiple.ico"); 16 const data = await imgResponse.bytes(); 17 18 let decoder = new ImageDecoder({ 19 data, 20 type: "image/x-icon", 21 }); 22 await decoder.tracks.ready; 23 24 is(typeof decoder.tracks[0].getSizes, "undefined", "getSizes should be hidden from normal content"); 25 let sizes = SpecialPowers.wrap(decoder.tracks[0]).getSizes(); 26 is(sizes.length, 3, "Should have 3 sizes"); 27 28 let expected = [[16, {r: 205, g: 8, b: 59}], [32, {r: 88, g: 205, b: 103 }], [512, {r:100, g: 205, b: 224}]]; 29 for (let i = 0; i < expected.length; i++) { 30 const [size, color] = expected[i]; 31 32 is(sizes[i].width, size, "width matches"); 33 is(sizes[i].height, size, "height matches"); 34 35 let decoder = new ImageDecoder({ 36 data, 37 type: "image/x-icon", 38 desiredWidth: size, 39 desiredHeight: size, 40 }); 41 42 let { image } = await decoder.decode({ completeFramesOnly: true } ); 43 44 let offscreen = new OffscreenCanvas(size, size); 45 let ctx = offscreen.getContext("2d"); 46 ctx.drawImage(image, 0, 0); 47 48 let imageData = ctx.getImageData(0, 0, 1, 1); 49 is(imageData.data[0], color.r, `${size}x${size} red`); 50 is(imageData.data[1], color.g, `${size}x${size} green`); 51 is(imageData.data[2], color.b, `${size}x${size} bluee`); 52 } 53 }); 54 </script> 55 </body> 56 </html>