mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 06:08:24 +02:00
***
Bug 1514594: Part 3a - Change ChromeUtils.import to return an exports object; not pollute global. r=mccr8
This changes the behavior of ChromeUtils.import() to return an exports object,
rather than a module global, in all cases except when `null` is passed as a
second argument, and changes the default behavior not to pollute the global
scope with the module's exports. Thus, the following code written for the old
model:
ChromeUtils.import("resource://gre/modules/Services.jsm");
is approximately the same as the following, in the new model:
var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
Since the two behaviors are mutually incompatible, this patch will land with a
scripted rewrite to update all existing callers to use the new model rather
than the old.
***
Bug 1514594: Part 3b - Mass rewrite all JS code to use the new ChromeUtils.import API. rs=Gijs
This was done using the followng script:
https://bitbucket.org/kmaglione/m-c-rewrites/src/tip/processors/cu-import-exports.jsm
***
Bug 1514594: Part 3c - Update ESLint plugin for ChromeUtils.import API changes. r=Standard8
Differential Revision: https://phabricator.services.mozilla.com/D16747
***
Bug 1514594: Part 3d - Remove/fix hundreds of duplicate imports from sync tests. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16748
***
Bug 1514594: Part 3e - Remove no-op ChromeUtils.import() calls. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16749
***
Bug 1514594: Part 3f.1 - Cleanup various test corner cases after mass rewrite. r=Gijs
***
Bug 1514594: Part 3f.2 - Cleanup various non-test corner cases after mass rewrite. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D16750
--HG--
extra : rebase_source : 359574ee3064c90f33bf36c2ebe3159a24cc8895
extra : histedit_source : b93c8f42808b1599f9122d7842d2c0b3e656a594%2C64a3a4e3359dc889e2ab2b49461bab9e27fc10a7
95 lines
3 KiB
HTML
95 lines
3 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">
|
|
/* eslint-env mozilla/frame-script */
|
|
|
|
const Cc = SpecialPowers.Cc;
|
|
const Ci = SpecialPowers.Ci;
|
|
|
|
const chromeScript = SpecialPowers.loadChromeScript(_ => {
|
|
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
|
const {setTimeout} = ChromeUtils.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>
|