tor-browser

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

test_notification_permissions.html (1993B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 Tests that the Notification.requestPermission and navigator.permissions.query
      5 return values are consistent with the stored permission.
      6 https://bugzilla.mozilla.org/show_bug.cgi?id=1589754
      7 -->
      8 <head>
      9  <title>Notification permissions and permissions API</title>
     10  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     11  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
     12 </head>
     13 <body>
     14  <p id="display"></p>
     15  <div id="content" style="display: none">
     16  </div>
     17  <pre id="test">
     18 <script class="testbody">
     19 
     20 add_task(async function test_notifications_permission() {
     21  await SpecialPowers.pushPrefEnv({
     22    set: [
     23      // Automatically dismiss the permission request when it appears.
     24      ["dom.webnotifications.requireuserinteraction", true],
     25    ],
     26  });
     27 
     28  async function testPermissionInWindow(win) {
     29    async function checkPermission(perm, expectedResult, expectedPermission) {
     30      await SpecialPowers.pushPermissions([
     31        {
     32          type: "desktop-notification",
     33          allow: SpecialPowers.Ci.nsIPermissionManager[perm],
     34          context: document,
     35        },
     36      ]);
     37      is(
     38        await win.Notification.requestPermission(),
     39        expectedResult,
     40        `expected requestPermission() result for permission ${perm}`
     41      );
     42 
     43      let result =
     44        await win.navigator.permissions.query({ name: "notifications" });
     45      is(
     46        result.state,
     47        expectedPermission,
     48        `expected permissions API result for permission ${perm}`
     49      );
     50    }
     51 
     52    await checkPermission("UNKNOWN_ACTION", "default", "prompt");
     53    await checkPermission("ALLOW_ACTION", "granted", "granted");
     54    await checkPermission("DENY_ACTION", "denied", "denied");
     55    await checkPermission("PROMPT_ACTION", "default", "prompt");
     56  }
     57 
     58  var win = window.open("blank.html");
     59  await new Promise(resolve => { win.onload = resolve; });
     60  await testPermissionInWindow(win);
     61  win.close();
     62 });
     63 
     64 </script>
     65  </pre>
     66 </body>
     67 </html>