test_popup_blocker_form_target_blank.html (1769B)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test for triggering the popup blocker by submitting a target=_blank form</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <script src="/tests/SimpleTest/EventUtils.js"></script> 8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 9 </head> 10 <body> 11 <form action="file_self_close.html" target="_blank"><button>Submit</button></form> 12 <script> 13 14 let { ContentTaskUtils } = SpecialPowers.ChromeUtils.importESModule( 15 "resource://testing-common/ContentTaskUtils.sys.mjs" 16 ); 17 18 function testTargetBlankForm(aSubmitFun, aMsg) { 19 add_task(async () => { 20 info(aMsg); 21 let popupBlockedPromise = ContentTaskUtils.waitForEvent(document, "DOMPopupBlocked", false, () => { 22 ok(true, "received DOMPopupBlocked event"); 23 return true; 24 }); 25 let form = document.querySelector("form"); 26 form.addEventListener("submit", () => { 27 // Consume the user activation to ensure the popup is blocked. 28 SpecialPowers.wrap(document).clearUserGestureActivation(); 29 }); 30 aSubmitFun(); 31 await popupBlockedPromise; 32 }); 33 } 34 35 add_setup(async function() { 36 await SpecialPowers.pushPrefEnv({"set": [ 37 // Enbale popup blocker 38 ["dom.disable_open_during_load", true], 39 ]}); 40 }); 41 42 testTargetBlankForm(() => { 43 synthesizeMouseAtCenter(document.querySelector("button"), {}); 44 }, "Submit form by clicking submit button"); 45 46 testTargetBlankForm(() => { 47 // Bug 1930678, form.submit() throws an error when the popup is blocked. 48 try { 49 document.querySelector("form").submit(); 50 } catch(e) {} 51 }, "Submit form by submit()"); 52 53 testTargetBlankForm(() => { 54 document.querySelector("form").requestSubmit(); 55 }, "Submit form by requestSubmit()"); 56 57 </script> 58 </body> 59 </html>