share-url-invalid.https.html (2887B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>WebShare Test: Share with an invalid URL</title> 6 <script src="/resources/testharness.js"></script> 7 <script src="/resources/testharnessreport.js"></script> 8 <script src="/resources/testdriver.js"></script> 9 <script src="/resources/testdriver-vendor.js"></script> 10 </head> 11 <body> 12 <script> 13 promise_test(async t => { 14 await test_driver.bless(); 15 const promise = navigator.share({ url: "http://a.com:65536" }); 16 return promise_rejects_js(t, TypeError, promise); 17 }, "share() rejects when URL is invalid"); 18 19 promise_test(async t => { 20 await test_driver.bless(); 21 const promise = navigator.share({ url: "file:///etc/passwd" }); 22 return promise_rejects_js(t, TypeError, promise); 23 }, "share() rejects file:// URLs"); 24 25 promise_test(async t => { 26 await test_driver.bless(); 27 const promise = navigator.share({ url: "wss://a.com/" }); 28 return promise_rejects_js(t, TypeError, promise); 29 }, "share() rejects wss: URLs"); 30 31 promise_test(async t => { 32 await test_driver.bless(); 33 const promise = navigator.share({ url: "about:config" }); 34 return promise_rejects_js(t, TypeError, promise); 35 }, "share() rejects about: URLs"); 36 37 promise_test(async t => { 38 await test_driver.bless(); 39 const promise = navigator.share({ url: "chrome://about" }); 40 return promise_rejects_js(t, TypeError, promise); 41 }, "share() rejects chrome: URLs"); 42 43 promise_test(async t => { 44 await test_driver.bless(); 45 const promise = navigator.share({ url: "javascript:window.alert('error')" }); 46 return promise_rejects_js(t, TypeError, promise); 47 }, "share() rejects javascript: URLs"); 48 49 promise_test(async t => { 50 await test_driver.bless(); 51 const file = new File([], "text/plain"); 52 const promise = navigator.share({ url: URL.createObjectURL(file) }); 53 return promise_rejects_js(t, TypeError, promise); 54 }, "share() rejects blob: URLs"); 55 56 promise_test(async t => { 57 const encoder = new TextEncoder(); 58 const encoded = encoder.encode( 59 `<meta http-equiv="refresh" content="1;url=http://example.com/">` 60 ); 61 const file = new File(encoded, "text/html"); 62 const url = URL.createObjectURL(file); 63 const reader = new FileReader(); 64 reader.readAsDataURL(file); 65 const dataURL = await new Promise(resolve => { 66 reader.addEventListener("load", () => { 67 resolve(reader.result); 68 }); 69 }); 70 await test_driver.bless(); 71 const promise = navigator.share({ url: dataURL }); 72 return promise_rejects_js(t, TypeError, promise); 73 }, "share() rejects data: URLs"); 74 </script> 75 </body> 76 </html>