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 151 152 153 154 155 156 157 158 159 160
|
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<!--
XUL Widget Test for bug 457632
-->
<window title="Bug 457632" width="500" height="600"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<vbox id="nb"/>
<!-- test results are displayed in the html:body -->
<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;"
onload="test()"/>
<!-- test code goes here -->
<script type="application/javascript">
<![CDATA[
var gNotificationBox;
function completeAnimation(nextTest) {
if (!gNotificationBox._animating) {
nextTest();
return;
}
setTimeout(completeAnimation, 50, nextTest);
}
async function test() {
SimpleTest.waitForExplicitFinish();
gNotificationBox = new MozElements.NotificationBox(e => {
document.getElementById("nb").appendChild(e);
});
is(gNotificationBox.allNotifications.length, 0, "There should be no initial notifications");
await gNotificationBox.appendNotification("notification1",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
is(gNotificationBox.allNotifications.length, 1, "Notification exists while animating in");
let notification = gNotificationBox.getNotificationWithValue("notification1");
ok(notification, "Notification should exist while animating in");
// Wait for the notificaton to finish displaying
completeAnimation(test1);
}
// Tests that a notification that is fully animated in gets removed immediately
async function test1() {
let notification = gNotificationBox.getNotificationWithValue("notification1");
gNotificationBox.removeNotification(notification);
notification = gNotificationBox.getNotificationWithValue("notification1");
ok(!notification, "Test 1 showed notification was still present");
ok(!gNotificationBox.currentNotification, "Test 1 said there was still a current notification");
is(gNotificationBox.allNotifications.length, 0, "Test 1 should show no notifications present");
// Wait for the notificaton to finish hiding
completeAnimation(test2);
}
// Tests that a notification that is animating in gets removed immediately
async function test2() {
let notification = await gNotificationBox.appendNotification("notification2",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
gNotificationBox.removeNotification(notification);
notification = gNotificationBox.getNotificationWithValue("notification2");
ok(!notification, "Test 2 showed notification was still present");
ok(!gNotificationBox.currentNotification, "Test 2 said there was still a current notification");
is(gNotificationBox.allNotifications.length, 0, "Test 2 should show no notifications present");
// Get rid of the hiding notifications
gNotificationBox.removeAllNotifications(true);
test3();
}
// Tests that a background notification goes away immediately
async function test3() {
let notification = await gNotificationBox.appendNotification("notification3",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
let notification2 = await gNotificationBox.appendNotification("notification4",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
is(gNotificationBox.allNotifications.length, 2, "Test 3 should show 2 notifications present");
gNotificationBox.removeNotification(notification);
is(gNotificationBox.allNotifications.length, 1, "Test 3 should show 1 notifications present");
notification = gNotificationBox.getNotificationWithValue("notification3");
ok(!notification, "Test 3 showed notification was still present");
gNotificationBox.removeNotification(notification2);
is(gNotificationBox.allNotifications.length, 0, "Test 3 should show 0 notifications present");
notification2 = gNotificationBox.getNotificationWithValue("notification4");
ok(!notification2, "Test 3 showed notification2 was still present");
ok(!gNotificationBox.currentNotification, "Test 3 said there was still a current notification");
// Get rid of the hiding notifications
gNotificationBox.removeAllNotifications(true);
test4();
}
// Tests that a foreground notification hiding a background one goes away
async function test4() {
let notification = await gNotificationBox.appendNotification("notification5",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
let notification2 = await gNotificationBox.appendNotification("notification6",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
gNotificationBox.removeNotification(notification2);
notification2 = gNotificationBox.getNotificationWithValue("notification6");
ok(!notification2, "Test 4 showed notification2 was still present");
is(gNotificationBox.currentNotification, notification, "Test 4 said the current notification was wrong");
is(gNotificationBox.allNotifications.length, 1, "Test 4 should show 1 notifications present");
gNotificationBox.removeNotification(notification);
notification = gNotificationBox.getNotificationWithValue("notification5");
ok(!notification, "Test 4 showed notification was still present");
ok(!gNotificationBox.currentNotification, "Test 4 said there was still a current notification");
is(gNotificationBox.allNotifications.length, 0, "Test 4 should show 0 notifications present");
// Get rid of the hiding notifications
gNotificationBox.removeAllNotifications(true);
test5();
}
// Tests that removeAllNotifications gets rid of everything
async function test5() {
let notification = await gNotificationBox.appendNotification("notification7",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
let notification2 = await gNotificationBox.appendNotification("notification8",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
gNotificationBox.removeAllNotifications();
notification = gNotificationBox.getNotificationWithValue("notification7");
notification2 = gNotificationBox.getNotificationWithValue("notification8");
ok(!notification, "Test 5 showed notification was still present");
ok(!notification2, "Test 5 showed notification2 was still present");
ok(!gNotificationBox.currentNotification, "Test 5 said there was still a current notification");
is(gNotificationBox.allNotifications.length, 0, "Test 5 should show 0 notifications present");
await gNotificationBox.appendNotification("notification9",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
// Wait for the notificaton to finish displaying
completeAnimation(test6);
}
// Tests whether removing an already removed notification doesn't break things
async function test6() {
let notification = gNotificationBox.getNotificationWithValue("notification9");
ok(notification, "Test 6 should have an initial notification");
gNotificationBox.removeNotification(notification);
gNotificationBox.removeNotification(notification);
ok(!gNotificationBox.currentNotification, "Test 6 shouldn't be any current notification");
is(gNotificationBox.allNotifications.length, 0, "Test 6 allNotifications.length should be 0");
notification = await gNotificationBox.appendNotification("notification10",
{ label: "Test notification", priority: gNotificationBox.PRIORITY_INFO_LOW });
is(notification, gNotificationBox.currentNotification, "Test 6 should have made the current notification");
gNotificationBox.removeNotification(notification);
SimpleTest.finish();
}
]]>
</script>
</window>
|