summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/alerts/browser_notification_close.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/alerts/browser_notification_close.js')
-rw-r--r--browser/base/content/test/alerts/browser_notification_close.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/browser/base/content/test/alerts/browser_notification_close.js b/browser/base/content/test/alerts/browser_notification_close.js
new file mode 100644
index 000000000..bbd444212
--- /dev/null
+++ b/browser/base/content/test/alerts/browser_notification_close.js
@@ -0,0 +1,71 @@
+"use strict";
+
+const {PlacesTestUtils} =
+ Cu.import("resource://testing-common/PlacesTestUtils.jsm", {});
+
+let notificationURL = "http://example.org/browser/browser/base/content/test/alerts/file_dom_notifications.html";
+let oldShowFavicons;
+
+add_task(function* test_notificationClose() {
+ let pm = Services.perms;
+ let notificationURI = makeURI(notificationURL);
+ pm.add(notificationURI, "desktop-notification", pm.ALLOW_ACTION);
+
+ oldShowFavicons = Services.prefs.getBoolPref("alerts.showFavicons");
+ Services.prefs.setBoolPref("alerts.showFavicons", true);
+
+ yield PlacesTestUtils.addVisits(notificationURI);
+ let faviconURI = yield new Promise(resolve => {
+ let faviconURI = makeURI("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQI12P4//8/AAX+Av7czFnnAAAAAElFTkSuQmCC");
+ PlacesUtils.favicons.setAndFetchFaviconForPage(notificationURI, faviconURI,
+ true, PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE,
+ (faviconURI, iconSize, iconData, mimeType) => resolve(faviconURI),
+ Services.scriptSecurityManager.getSystemPrincipal());
+ });
+
+ yield BrowserTestUtils.withNewTab({
+ gBrowser,
+ url: notificationURL
+ }, function* dummyTabTask(aBrowser) {
+ yield openNotification(aBrowser, "showNotification2");
+
+ info("Notification alert showing");
+
+ let alertWindow = Services.wm.getMostRecentWindow("alert:alert");
+ if (!alertWindow) {
+ ok(true, "Notifications don't use XUL windows on all platforms.");
+ yield closeNotification(aBrowser);
+ return;
+ }
+
+ let alertTitleLabel = alertWindow.document.getElementById("alertTitleLabel");
+ is(alertTitleLabel.value, "Test title", "Title text of notification should be present");
+ let alertTextLabel = alertWindow.document.getElementById("alertTextLabel");
+ is(alertTextLabel.textContent, "Test body 2", "Body text of notification should be present");
+ let alertIcon = alertWindow.document.getElementById("alertIcon");
+ is(alertIcon.src, faviconURI.spec, "Icon of notification should be present");
+
+ let alertCloseButton = alertWindow.document.querySelector(".alertCloseButton");
+ is(alertCloseButton.localName, "toolbarbutton", "close button found");
+ let promiseBeforeUnloadEvent =
+ BrowserTestUtils.waitForEvent(alertWindow, "beforeunload");
+ let closedTime = alertWindow.Date.now();
+ alertCloseButton.click();
+ info("Clicked on close button");
+ yield promiseBeforeUnloadEvent;
+
+ ok(true, "Alert should close when the close button is clicked");
+ let currentTime = alertWindow.Date.now();
+ // The notification will self-close at 12 seconds, so this checks
+ // that the notification closed before the timeout.
+ ok(currentTime - closedTime < 5000,
+ "Close requested at " + closedTime + ", actually closed at " + currentTime);
+ });
+});
+
+add_task(function* cleanup() {
+ Services.perms.remove(makeURI(notificationURL), "desktop-notification");
+ if (typeof oldShowFavicons == "boolean") {
+ Services.prefs.setBoolPref("alerts.showFavicons", oldShowFavicons);
+ }
+});