summaryrefslogtreecommitdiffstats
path: root/dom/quota/test/browser/browser_permissionsPromptDeny.js
blob: 927cbdd07418fc86b05c3d899c56ce00cd1fa0c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
/**
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */

const testPageURL =
  "https://example.com/browser/dom/quota/test/browser/permissionsPrompt.html";

addTest(async function testPermissionTemporaryDenied() {
  registerPopupEventHandler("popupshowing", function () {
    ok(true, "prompt showing");
  });
  registerPopupEventHandler("popupshown", function () {
    ok(true, "prompt shown");
    triggerSecondaryCommand(this);
  });
  registerPopupEventHandler("popuphidden", function () {
    ok(true, "prompt hidden");
  });

  info("Creating tab");
  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);

  info("Loading test page: " + testPageURL);
  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
  await waitForMessage(false, gBrowser);

  is(
    getPermission(testPageURL, "persistent-storage"),
    Ci.nsIPermissionManager.UNKNOWN_ACTION,
    "Correct permission set"
  );

  let tempBlock = SitePermissions.getAllForBrowser(
    gBrowser.selectedBrowser
  ).find(
    p =>
      p.id == "persistent-storage" &&
      p.state == SitePermissions.BLOCK &&
      p.scope == SitePermissions.SCOPE_TEMPORARY
  );
  ok(tempBlock, "Should have a temporary block permission on active browser");

  unregisterAllPopupEventHandlers();
  gBrowser.removeCurrentTab();
  removePermission(testPageURL, "persistent-storage");
});

addTest(async function testPermissionDenied() {
  removePermission(testPageURL, "persistent-storage");

  registerPopupEventHandler("popupshowing", function () {
    ok(true, "prompt showing");
  });
  registerPopupEventHandler("popupshown", function () {
    ok(true, "prompt shown");
    triggerSecondaryCommand(this, /* remember = */ true);
  });
  registerPopupEventHandler("popuphidden", function () {
    ok(true, "prompt hidden");
  });

  info("Creating tab");
  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);

  info("Loading test page: " + testPageURL);
  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
  await waitForMessage(false, gBrowser);

  is(
    getPermission(testPageURL, "persistent-storage"),
    Ci.nsIPermissionManager.DENY_ACTION,
    "Correct permission set"
  );
  unregisterAllPopupEventHandlers();
  gBrowser.removeCurrentTab();
  // Keep persistent-storage permission for the next test.
});

addTest(async function testNoPermissionPrompt() {
  registerPopupEventHandler("popupshowing", function () {
    ok(false, "Shouldn't show a popup this time");
  });
  registerPopupEventHandler("popupshown", function () {
    ok(false, "Shouldn't show a popup this time");
  });
  registerPopupEventHandler("popuphidden", function () {
    ok(false, "Shouldn't show a popup this time");
  });

  info("Creating tab");
  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);

  info("Loading test page: " + testPageURL);
  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
  await waitForMessage(false, gBrowser);

  is(
    getPermission(testPageURL, "persistent-storage"),
    Ci.nsIPermissionManager.DENY_ACTION,
    "Correct permission set"
  );
  unregisterAllPopupEventHandlers();
  gBrowser.removeCurrentTab();
  removePermission(testPageURL, "persistent-storage");
});

addTest(async function testPermissionDeniedDismiss() {
  registerPopupEventHandler("popupshowing", function () {
    ok(true, "prompt showing");
  });
  registerPopupEventHandler("popupshown", function () {
    ok(true, "prompt shown");
    // Dismiss permission prompt.
    dismissNotification(this);
  });
  registerPopupEventHandler("popuphidden", function () {
    ok(true, "prompt hidden");
  });

  info("Creating tab");
  gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);

  info("Loading test page: " + testPageURL);
  BrowserTestUtils.startLoadingURIString(gBrowser.selectedBrowser, testPageURL);
  await waitForMessage(false, gBrowser);

  // Pressing ESC results in a temporary block permission on the browser object.
  // So the global permission for the URL should still be unknown, but the browser
  // should have a block permission with a temporary scope.
  is(
    getPermission(testPageURL, "persistent-storage"),
    Ci.nsIPermissionManager.UNKNOWN_ACTION,
    "Correct permission set"
  );

  let tempBlock = SitePermissions.getAllForBrowser(
    gBrowser.selectedBrowser
  ).find(
    p =>
      p.id == "persistent-storage" &&
      p.state == SitePermissions.BLOCK &&
      p.scope == SitePermissions.SCOPE_TEMPORARY
  );
  ok(tempBlock, "Should have a temporary block permission on active browser");

  unregisterAllPopupEventHandlers();
  gBrowser.removeCurrentTab();
  removePermission(testPageURL, "persistent-storage");
});