зеркало из https://github.com/mozilla/gecko-dev.git
97 строки
2.9 KiB
HTML
97 строки
2.9 KiB
HTML
<!DOCTYPE HTML>
|
|
<!-- Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ -->
|
|
<html>
|
|
<head>
|
|
<title>Test for Alerts Service</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
|
|
<body>
|
|
<p id="display"></p>
|
|
|
|
<br>Alerts service, without observer "asynchronous" case.
|
|
<br>
|
|
<br>A notification should soon appear somewhere.
|
|
<br>If there has been no crash when the notification (later) disappears, assume all is good.
|
|
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
const Cc = SpecialPowers.Cc;
|
|
const Ci = SpecialPowers.Ci;
|
|
|
|
const chromeScript = SpecialPowers.loadChromeScript(_ => {
|
|
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
|
|
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
Cu.import("resource://gre/modules/Timer.jsm");
|
|
|
|
function anyXULAlertsVisible() {
|
|
var windows = Services.wm.getEnumerator("alert:alert");
|
|
return windows.hasMoreElements();
|
|
}
|
|
|
|
addMessageListener("anyXULAlertsVisible", anyXULAlertsVisible);
|
|
|
|
addMessageListener("waitForAlerts", function waitForAlerts() {
|
|
if (anyXULAlertsVisible()) {
|
|
setTimeout(waitForAlerts, 1000);
|
|
} else {
|
|
sendAsyncMessage("waitedForAlerts");
|
|
}
|
|
});
|
|
});
|
|
|
|
function waitForAlertsThenFinish() {
|
|
chromeScript.addMessageListener("waitedForAlerts", function waitedForAlerts() {
|
|
chromeScript.removeMessageListener("waitedForAlerts", waitedForAlerts);
|
|
ok(true, "Alert disappeared.");
|
|
SimpleTest.finish();
|
|
});
|
|
chromeScript.sendAsyncMessage("waitForAlerts");
|
|
}
|
|
|
|
function runTest() {
|
|
if (!("@mozilla.org/alerts-service;1" in Cc)) {
|
|
todo(false, "Alerts service does not exist in this application");
|
|
} else {
|
|
ok(true, "Alerts service exists in this application");
|
|
|
|
var notifier;
|
|
try {
|
|
notifier = Cc["@mozilla.org/alerts-service;1"].
|
|
getService(Ci.nsIAlertsService);
|
|
ok(true, "Alerts service is available");
|
|
} catch (ex) {
|
|
todo(false, "Alerts service is not available.", ex);
|
|
}
|
|
|
|
if (notifier) {
|
|
try {
|
|
notifier.showAlertNotification(null, "Notification test",
|
|
"This notification has no observer");
|
|
ok(true, "showAlertNotification() succeeded");
|
|
} catch (ex) {
|
|
todo(false, "showAlertNotification() failed.", ex);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
SimpleTest.requestFlakyTimeout("untriaged");
|
|
|
|
// sendSyncMessage returns an array of arrays: the outer array is from the
|
|
// message manager, and the inner array is from the chrome script's listeners.
|
|
// See the comment in test_SpecialPowersLoadChromeScript.html.
|
|
var [[alertsVisible]] = chromeScript.sendSyncMessage("anyXULAlertsVisible");
|
|
ok(!alertsVisible, "Alerts should not be present at the start of the test.");
|
|
runTest();
|
|
setTimeout(waitForAlertsThenFinish, 1000);
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|