tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_useractivation_open_new_window.html (3652B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <title>User activation test: consume user activation when opending a new window</title>
      5  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6  <script src="/tests/SimpleTest/EventUtils.js"></script>
      7  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
      8 </head>
      9 <body>
     10 <a href="file_self_close.html" target="_blank">link</a>
     11 <script>
     12 
     13 const ALLOW_ACTION = SpecialPowers.Ci.nsIPermissionManager.ALLOW_ACTION;
     14 const DENY_ACTION = SpecialPowers.Ci.nsIPermissionManager.DENY_ACTION;
     15 const UNKNOWN_ACTION = SpecialPowers.Ci.nsIPermissionManager.UNKNOWN_ACTION;
     16 
     17 async function test_useractivation_window_open() {
     18  info("Test user activation after calling window.open()")
     19  SpecialPowers.wrap(document).notifyUserGestureActivation();
     20  // Open a new window
     21  ok(navigator.userActivation.isActive, `has user activation`);
     22  let w = window.open("file_empty.html", "testWindow");
     23  ok(!navigator.userActivation.isActive, `user activation should be consumed after opening a new window`);
     24 
     25  SpecialPowers.wrap(document).notifyUserGestureActivation();
     26  ok(navigator.userActivation.isActive, `has user activation`);
     27  let w2 = window.open("file_empty.html", "testWindow");
     28  ok(w2 == w, "should use the existing window");
     29  ok(navigator.userActivation.isActive, `user activation should not be consumed if window is existed`);
     30 
     31  if (w2 && w2 !== w) {
     32    w2.close();
     33  }
     34  if (w) {
     35    w.close();
     36  }
     37 }
     38 
     39 async function test_useractivation_anchor_blank() {
     40  info("Test user activation after calling window.open()")
     41  let link = document.querySelector("a");
     42  link.addEventListener("click", () => {
     43    ok(navigator.userActivation.isActive, `has user activation`);
     44  });
     45  synthesizeMouseAtCenter(link, {});
     46  await new Promise(resolve => SimpleTest.executeSoon(resolve));
     47  ok(!navigator.userActivation.isActive, `user activation should be consumed`);
     48 }
     49 
     50 async function test_useractivation() {
     51  await test_useractivation_window_open();
     52  await test_useractivation_anchor_blank();
     53 }
     54 
     55 add_task(async function testPopupBlockerDisabled() {
     56  await SpecialPowers.pushPrefEnv({
     57    set: [
     58      // Disable popup blocker
     59      ["dom.disable_open_during_load", false],
     60    ],
     61  });
     62  await test_useractivation();
     63  await SpecialPowers.popPrefEnv();
     64 });
     65 
     66 add_task(async function testPopupBlockerEnabled() {
     67  await SpecialPowers.pushPrefEnv({
     68    set: [
     69      // Enable popup blocker
     70      ["dom.disable_open_during_load", true],
     71    ],
     72  });
     73 
     74  await test_useractivation();
     75  await SpecialPowers.popPrefEnv();
     76 });
     77 
     78 add_task(async function testUnknownPermission() {
     79  await SpecialPowers.pushPermissions([
     80    {'type': 'popup', 'remove': true, 'context': document}
     81  ]);
     82  ok(await SpecialPowers.testPermission('popup', UNKNOWN_ACTION, document),
     83     'popup value should have UNKNOWN permission');
     84  await test_useractivation();
     85  await SpecialPowers.popPermissions();
     86 });
     87 
     88 add_task(async function testAllowPermission() {
     89  await SpecialPowers.pushPermissions([
     90    {'type': 'popup', 'allow': ALLOW_ACTION, 'context': document}
     91  ]);
     92  ok(await SpecialPowers.testPermission('popup', ALLOW_ACTION, document),
     93     'popup value should have ALLOW permission');
     94  await test_useractivation();
     95  await SpecialPowers.popPermissions();
     96 });
     97 
     98 add_task(async function testDenyPermission() {
     99  await SpecialPowers.pushPermissions([
    100    {'type': 'popup', 'allow': DENY_ACTION, 'context': document}
    101  ]);
    102  ok(await SpecialPowers.testPermission('popup', DENY_ACTION, document),
    103     'popup value should have ALLOW permission');
    104  await test_useractivation();
    105  await SpecialPowers.popPermissions();
    106 });
    107 
    108 </script>
    109 </body>