embed-javascript-url.html (1797B)
1 <!DOCTYPE html> 2 <meta charset="utf-8"> 3 <title>embed - javascript: URL</title> 4 <link rel="help" href="https://html.spec.whatwg.org/#the-embed-element-setup-steps"> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <div id="log"></div> 8 <script> 9 // embed element setup steps fetches url, which results in a network error 10 // and thus "Display no plugin". 11 promise_test(async function (t) { 12 const embed = document.createElement('embed'); 13 embed.src = 'javascript:"foo"'; 14 embed.onload = t.unreached_func('No load event expected'); 15 document.body.append(embed); 16 t.add_cleanup(() => { embed.remove(); }); 17 await new Promise(resolve => { t.step_timeout(resolve, 100); }); 18 }, "javascript: in src attribute should do nothing"); 19 20 function insertEmbedNavigable(t) { 21 const embed = document.createElement('embed'); 22 embed.src = '/resources/blank.html'; 23 document.body.append(embed); 24 t.add_cleanup(() => { embed.remove(); }); 25 return embed; 26 } 27 28 promise_test(async function (t) { 29 const embed = insertEmbedNavigable(t); 30 await new Promise(resolve => { embed.onload = resolve; }); 31 const loaded = new Promise(resolve => { embed.onload = resolve; }); 32 window[0].location.href = 'javascript:"test"'; 33 await loaded; 34 }, 'location.href = \'javascript:"test"\' should fire a load event'); 35 36 promise_test(async function (t) { 37 const embed = insertEmbedNavigable(t); 38 await new Promise(resolve => { embed.onload = resolve; }); 39 embed.onload = t.unreached_func('No second load event expected'); 40 window[0].location.href = 'javascript:1'; 41 await new Promise(resolve => { t.step_timeout(resolve, 100); }); 42 }, 'location.href = \'javascript:1\' should not fire a load event'); 43 </script>