summaryrefslogtreecommitdiffstats
path: root/toolkit/components/alerts/test/test_alerts_requireinteraction.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/alerts/test/test_alerts_requireinteraction.html')
-rw-r--r--toolkit/components/alerts/test/test_alerts_requireinteraction.html168
1 files changed, 0 insertions, 168 deletions
diff --git a/toolkit/components/alerts/test/test_alerts_requireinteraction.html b/toolkit/components/alerts/test/test_alerts_requireinteraction.html
deleted file mode 100644
index 26fe87104..000000000
--- a/toolkit/components/alerts/test/test_alerts_requireinteraction.html
+++ /dev/null
@@ -1,168 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test for alerts with requireInteraction</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<pre id="test">
-<script class="testbody" type="text/javascript">
-
-const Cc = SpecialPowers.Cc;
-const Ci = SpecialPowers.Ci;
-
-const chromeScript = SpecialPowers.loadChromeScript(_ => {
- const { utils: Cu } = Components;
-
- Cu.import("resource://gre/modules/Services.jsm");
- Cu.import("resource://gre/modules/Timer.jsm");
-
- addMessageListener("waitForXULAlert", function() {
- var timer = setTimeout(function() {
- Services.ww.unregisterNotification(windowObserver);
- sendAsyncMessage("waitForXULAlert", false);
- }, 2000);
-
- var windowObserver = function(aSubject, aTopic, aData) {
- if (aTopic != "domwindowopened") {
- return;
- }
-
- var win = aSubject.QueryInterface(Components.interfaces.nsIDOMWindow);
- win.addEventListener("load", function onLoad() {
- win.removeEventListener("load", onLoad);
- let windowType = win.document.documentElement.getAttribute("windowtype");
- if (windowType == "alert:alert") {
- clearTimeout(timer);
- Services.ww.unregisterNotification(windowObserver);
-
- sendAsyncMessage("waitForXULAlert", true);
- }
- });
- };
-
- Services.ww.registerNotification(windowObserver);
- });
-});
-
-var cookie = 0;
-function promiseCreateXULAlert(alertService, listener, name) {
- return new Promise(resolve => {
- chromeScript.addMessageListener("waitForXULAlert", function waitedForAlert(result) {
- chromeScript.removeMessageListener("waitForXULAlert", waitedForAlert);
- resolve(result);
- });
-
- chromeScript.sendAsyncMessage("waitForXULAlert");
- alertService.showAlertNotification(null, "title", "body",
- true, cookie++, listener, name, null, null, null,
- null, false, true);
- });
-}
-
-add_task(function* test_require_interaction() {
- if (!("@mozilla.org/alerts-service;1" in Cc)) {
- todo(false, "Alerts service does not exist in this application.");
- return;
- }
-
- ok(true, "Alerts service exists in this application.");
-
- var alertService;
- try {
- alertService = Cc["@mozilla.org/alerts-service;1"].getService(Ci.nsIAlertsService);
- ok(true, "Alerts service is available.");
- } catch (ex) {
- todo(false, "Alerts service is not available.");
- return;
- }
-
- yield SpecialPowers.pushPrefEnv({"set": [
- [ "dom.webnotifications.requireinteraction.enabled", true ],
- [ "dom.webnotifications.requireinteraction.count", 2 ]
- ]});
-
- var expectedSequence = [
- "first show",
- "second show",
- "second finished",
- "second replacement show",
- "third finished",
- "first finished",
- "third replacement show",
- "second replacement finished",
- "third replacement finished"
- ];
-
- var actualSequence = [];
-
- function createAlertListener(name, showCallback, finishCallback) {
- return (subject, topic, data) => {
- if (topic == "alertshow") {
- actualSequence.push(name + " show");
- if (showCallback) {
- showCallback();
- }
- } else if (topic == "alertfinished") {
- actualSequence.push(name + " finished");
- if (finishCallback) {
- finishCallback();
- }
- }
- }
- }
-
- var xulAlertCreated = yield promiseCreateXULAlert(alertService,
- createAlertListener("first"), "first");
- if (!xulAlertCreated) {
- ok(true, "Platform does not use XUL alerts.");
- alertService.closeAlert("first");
- return;
- }
-
- xulAlertCreated = yield promiseCreateXULAlert(alertService,
- createAlertListener("second"), "second");
- ok(xulAlertCreated, "Create XUL alert");
-
- // Replace second alert
- xulAlertCreated = yield promiseCreateXULAlert(alertService,
- createAlertListener("second replacement"), "second");
- ok(xulAlertCreated, "Create XUL alert");
-
- var testFinishResolve;
- var testFinishPromise = new Promise((resolve) => { testFinishResolve = resolve; });
-
- xulAlertCreated = yield promiseCreateXULAlert(alertService,
- createAlertListener("third"), "third"),
- ok(!xulAlertCreated, "XUL alert should not be visible");
-
- // Replace the not-yet-visible third alert.
- xulAlertCreated = yield promiseCreateXULAlert(alertService,
- createAlertListener("third replacement",
- function showCallback() {
- alertService.closeAlert("second");
- alertService.closeAlert("third");
- },
- function finishCallback() {
- // Check actual sequence of alert events compared to expected sequence.
- for (var i = 0; i < actualSequence.length; i++) {
- is(actualSequence[i], expectedSequence[i],
- "Alert callback at index " + i + " should be in expected order.");
- }
-
- testFinishResolve();
- }), "third");
-
- ok(!xulAlertCreated, "XUL alert should not be visible");
-
- alertService.closeAlert("first");
-
- yield testFinishPromise;
-});
-
-</script>
-</pre>
-</body>
-</html>