tor-browser

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

browser_permissionsPromptDeny.js (4757B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 const testPageURL =
      7  "https://example.com/browser/dom/quota/test/browser/permissionsPrompt.html";
      8 
      9 addTest(async function testPermissionTemporaryDenied() {
     10  registerPopupEventHandler("popupshowing", function () {
     11    ok(true, "prompt showing");
     12  });
     13  registerPopupEventHandler("popupshown", function () {
     14    ok(true, "prompt shown");
     15    triggerSecondaryCommand(this);
     16  });
     17  registerPopupEventHandler("popuphidden", function () {
     18    ok(true, "prompt hidden");
     19  });
     20 
     21  info("Creating tab");
     22  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
     23 
     24  info("Loading test page: " + testPageURL);
     25  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
     26  await waitForMessage(false, gBrowser);
     27 
     28  is(
     29    getPermission(testPageURL, "persistent-storage"),
     30    Ci.nsIPermissionManager.UNKNOWN_ACTION,
     31    "Correct permission set"
     32  );
     33 
     34  let tempBlock = SitePermissions.getAllForBrowser(
     35    gBrowser.selectedBrowser
     36  ).find(
     37    p =>
     38      p.id == "persistent-storage" &&
     39      p.state == SitePermissions.BLOCK &&
     40      p.scope == SitePermissions.SCOPE_TEMPORARY
     41  );
     42  ok(tempBlock, "Should have a temporary block permission on active browser");
     43 
     44  unregisterAllPopupEventHandlers();
     45  gBrowser.removeCurrentTab();
     46  removePermission(testPageURL, "persistent-storage");
     47 });
     48 
     49 addTest(async function testPermissionDenied() {
     50  removePermission(testPageURL, "persistent-storage");
     51 
     52  registerPopupEventHandler("popupshowing", function () {
     53    ok(true, "prompt showing");
     54  });
     55  registerPopupEventHandler("popupshown", function () {
     56    ok(true, "prompt shown");
     57    triggerSecondaryCommand(this, /* remember = */ true);
     58  });
     59  registerPopupEventHandler("popuphidden", function () {
     60    ok(true, "prompt hidden");
     61  });
     62 
     63  info("Creating tab");
     64  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
     65 
     66  info("Loading test page: " + testPageURL);
     67  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
     68  await waitForMessage(false, gBrowser);
     69 
     70  is(
     71    getPermission(testPageURL, "persistent-storage"),
     72    Ci.nsIPermissionManager.DENY_ACTION,
     73    "Correct permission set"
     74  );
     75  unregisterAllPopupEventHandlers();
     76  gBrowser.removeCurrentTab();
     77  // Keep persistent-storage permission for the next test.
     78 });
     79 
     80 addTest(async function testNoPermissionPrompt() {
     81  registerPopupEventHandler("popupshowing", function () {
     82    ok(false, "Shouldn't show a popup this time");
     83  });
     84  registerPopupEventHandler("popupshown", function () {
     85    ok(false, "Shouldn't show a popup this time");
     86  });
     87  registerPopupEventHandler("popuphidden", function () {
     88    ok(false, "Shouldn't show a popup this time");
     89  });
     90 
     91  info("Creating tab");
     92  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
     93 
     94  info("Loading test page: " + testPageURL);
     95  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
     96  await waitForMessage(false, gBrowser);
     97 
     98  is(
     99    getPermission(testPageURL, "persistent-storage"),
    100    Ci.nsIPermissionManager.DENY_ACTION,
    101    "Correct permission set"
    102  );
    103  unregisterAllPopupEventHandlers();
    104  gBrowser.removeCurrentTab();
    105  removePermission(testPageURL, "persistent-storage");
    106 });
    107 
    108 addTest(async function testPermissionDeniedDismiss() {
    109  registerPopupEventHandler("popupshowing", function () {
    110    ok(true, "prompt showing");
    111  });
    112  registerPopupEventHandler("popupshown", function () {
    113    ok(true, "prompt shown");
    114    // Dismiss permission prompt.
    115    dismissNotification(this);
    116  });
    117  registerPopupEventHandler("popuphidden", function () {
    118    ok(true, "prompt hidden");
    119  });
    120 
    121  info("Creating tab");
    122  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
    123 
    124  info("Loading test page: " + testPageURL);
    125  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
    126  await waitForMessage(false, gBrowser);
    127 
    128  // Pressing ESC results in a temporary block permission on the browser object.
    129  // So the global permission for the URL should still be unknown, but the browser
    130  // should have a block permission with a temporary scope.
    131  is(
    132    getPermission(testPageURL, "persistent-storage"),
    133    Ci.nsIPermissionManager.UNKNOWN_ACTION,
    134    "Correct permission set"
    135  );
    136 
    137  let tempBlock = SitePermissions.getAllForBrowser(
    138    gBrowser.selectedBrowser
    139  ).find(
    140    p =>
    141      p.id == "persistent-storage" &&
    142      p.state == SitePermissions.BLOCK &&
    143      p.scope == SitePermissions.SCOPE_TEMPORARY
    144  );
    145  ok(tempBlock, "Should have a temporary block permission on active browser");
    146 
    147  unregisterAllPopupEventHandlers();
    148  gBrowser.removeCurrentTab();
    149  removePermission(testPageURL, "persistent-storage");
    150 });