diff options
Diffstat (limited to 'toolkit/components/alerts/test/test_alerts_requireinteraction.html')
-rw-r--r-- | toolkit/components/alerts/test/test_alerts_requireinteraction.html | 168 |
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> |