summaryrefslogtreecommitdiffstats
path: root/browser/components/preferences/tests/browser_notifications_do_not_disturb.js
blob: afc31b9041eda565bf1bf48929e545e07f71ddb2 (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
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

registerCleanupFunction(function () {
  while (gBrowser.tabs[1]) {
    gBrowser.removeTab(gBrowser.tabs[1]);
  }
});

add_task(async function () {
  let prefs = await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
    leaveOpen: true,
  });
  is(prefs.selectedPane, "panePrivacy", "Privacy pane was selected");

  let doc = gBrowser.contentDocument;
  let notificationsDoNotDisturbBox = doc.getElementById(
    "notificationsDoNotDisturbBox"
  );
  if (notificationsDoNotDisturbBox.hidden) {
    todo(false, "Do not disturb is not available on this platform");
    return;
  }

  let alertService;
  try {
    alertService = Cc["@mozilla.org/alerts-service;1"]
      .getService(Ci.nsIAlertsService)
      .QueryInterface(Ci.nsIAlertsDoNotDisturb);
  } catch (ex) {
    ok(true, "Do not disturb is not available on this platform: " + ex.message);
    return;
  }

  let checkbox = doc.getElementById("notificationsDoNotDisturb");
  ok(!checkbox.checked, "Checkbox should not be checked by default");
  ok(
    !alertService.manualDoNotDisturb,
    "Do not disturb should be off by default"
  );

  let checkboxChanged = BrowserTestUtils.waitForEvent(checkbox, "command");
  checkbox.click();
  await checkboxChanged;
  ok(
    alertService.manualDoNotDisturb,
    "Do not disturb should be enabled when checked"
  );

  checkboxChanged = BrowserTestUtils.waitForEvent(checkbox, "command");
  checkbox.click();
  await checkboxChanged;
  ok(
    !alertService.manualDoNotDisturb,
    "Do not disturb should be disabled when unchecked"
  );
});