test_rfp_api_disabling_enabled.html (1609B)
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 const apis = [ 11 "AudioData", 12 "AudioDecoder", 13 "AudioEncoder", 14 "EncodedAudioChunk", 15 "EncodedVideoChunk", 16 "ImageDecoder", 17 "ImageTrack", 18 "ImageTrackList", 19 "VideoColorSpace", 20 "VideoDecoder", 21 "VideoEncoder", 22 "VideoFrame", 23 ]; 24 25 function enabledAPIs() { 26 return apis.filter(api => typeof window[api] !== "undefined"); 27 } 28 29 function enabledAPIsWorker() { 30 const code = ` 31 onmessage = e => { 32 const apis = ${JSON.stringify(apis)}; 33 postMessage(apis.filter(api => typeof self[api] !== "undefined")); 34 };`; 35 const blob = new Blob([code], { type: "application/javascript" }); 36 const worker = new Worker(URL.createObjectURL(blob)); 37 38 return new Promise((resolve) => { 39 worker.addEventListener("message", async (e) => { 40 worker.terminate(); 41 resolve(e.data); 42 }); 43 44 worker.postMessage({}); 45 }); 46 } 47 48 add_setup(async () => { 49 await SpecialPowers.pushPrefEnv({ 50 set: [ 51 ["dom.media.webcodecs.enabled", true], 52 ["dom.media.webcodecs.image-decoder.enabled", true], 53 ["privacy.fingerprintingProtection", true], 54 ["privacy.fingerprintingProtection.overrides", "-AllTargets,+WebCodecs"], 55 ], 56 }); 57 }); 58 59 add_task(async () => { 60 is(enabledAPIs().length, 0, true, "All WebCodecs APIs should be disabled"); 61 is( 62 (await enabledAPIsWorker()).length, 63 0, 64 "All WebCodecs APIs should be disabled in workers too" 65 ); 66 }); 67 </script> 68 </body> 69 </html>