summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/notificationbox/browser_notification_stacking.js
blob: bd8817ea4b9b20067ac3d4c27d5bf1eebbc746f6 (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
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

async function addNotification(box, label, value, priorityName) {
  let added = BrowserTestUtils.waitForNotificationInNotificationBox(box, value);
  let priority = gNotificationBox[`PRIORITY_${priorityName}_MEDIUM`];
  let notification = box.appendNotification(value, { label, priority });
  await added;
  return notification;
}

add_task(async function testStackingOrder() {
  const tabNotificationBox = gBrowser.getNotificationBox();
  ok(
    gNotificationBox.stack.hasAttribute("prepend-notifications"),
    "Browser stack will prepend"
  );
  ok(
    !tabNotificationBox.stack.hasAttribute("prepend-notifications"),
    "Tab stack will append"
  );

  let browserOne = await addNotification(
    gNotificationBox,
    "My first browser notification",
    "browser-one",
    "INFO"
  );

  let tabOne = await addNotification(
    tabNotificationBox,
    "My first tab notification",
    "tab-one",
    "CRITICAL"
  );

  let browserTwo = await addNotification(
    gNotificationBox,
    "My second browser notification",
    "browser-two",
    "CRITICAL"
  );
  let browserThree = await addNotification(
    gNotificationBox,
    "My third browser notification",
    "browser-three",
    "WARNING"
  );

  let tabTwo = await addNotification(
    tabNotificationBox,
    "My second tab notification",
    "tab-two",
    "INFO"
  );
  let tabThree = await addNotification(
    tabNotificationBox,
    "My third tab notification",
    "tab-three",
    "WARNING"
  );

  Assert.deepEqual(
    [browserThree, browserTwo, browserOne],
    [...gNotificationBox.stack.children],
    "Browser notifications prepended"
  );
  Assert.deepEqual(
    [tabOne, tabTwo, tabThree],
    [...tabNotificationBox.stack.children],
    "Tab notifications appended"
  );

  gNotificationBox.removeAllNotifications(true);
  tabNotificationBox.removeAllNotifications(true);
});