mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 05:39:41 +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
106 lines
3.4 KiB
HTML
106 lines
3.4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test the cryptomining classifier</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
|
|
<body>
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
/* eslint-env mozilla/frame-script */
|
|
|
|
var tests = [
|
|
// All disabled.
|
|
{ config: [ false, false ], loadExpected: true },
|
|
|
|
// Just whitelisted.
|
|
{ config: [ false, true ], loadExpected: true },
|
|
|
|
// Just blacklisted.
|
|
{ config: [ true, false ], loadExpected: false },
|
|
|
|
// whitelist + blacklist: whitelist wins
|
|
{ config: [ true, true ], loadExpected: true },
|
|
];
|
|
|
|
function prefValue(value, what) {
|
|
return value ? what : "";
|
|
}
|
|
|
|
async function runTest(test) {
|
|
await SpecialPowers.pushPrefEnv({set: [
|
|
[ "urlclassifier.features.cryptomining.blacklistHosts", prefValue(test.config[0], "example.com") ],
|
|
[ "urlclassifier.features.cryptomining.whitelistHosts", prefValue(test.config[1], "mochi.test") ],
|
|
[ "urlclassifier.features.cryptomining.blacklistTables", prefValue(test.config[0], "mochitest1-track-simple") ],
|
|
[ "urlclassifier.features.cryptomining.whitelistTables", "" ],
|
|
[ "privacy.trackingprotection.enabled", false ],
|
|
[ "privacy.trackingprotection.annotate_channels", false ],
|
|
[ "privacy.trackingprotection.cryptomining.enabled", true ],
|
|
[ "privacy.trackingprotection.fingerprinting.enabled", false ],
|
|
]});
|
|
|
|
info("Testing: " + test.config.toSource() + "\n");
|
|
|
|
// Let's load an image with a random query string, just to avoid network cache.
|
|
let result = await new Promise(resolve => {
|
|
let image = new Image();
|
|
image.src = "http://example.com/tests/toolkit/components/url-classifier/tests/mochitest/raptor.jpg?" + Math.random();
|
|
image.onload = _ => resolve(true);
|
|
image.onerror = _ => resolve(false);
|
|
});
|
|
|
|
is(result, test.loadExpected, "The loading happened correctly");
|
|
|
|
// Let's load an image with a random query string, just to avoid network cache.
|
|
result = await new Promise(resolve => {
|
|
let image = new Image();
|
|
image.src = "http://tracking.example.org/tests/toolkit/components/url-classifier/tests/mochitest/raptor.jpg?" + Math.random();
|
|
image.onload = _ => resolve(true);
|
|
image.onerror = _ => resolve(false);
|
|
});
|
|
|
|
is(result, test.loadExpected, "The loading happened correctly (by table)");
|
|
}
|
|
|
|
async function runTests() {
|
|
let chromeScript = SpecialPowers.loadChromeScript(_ => {
|
|
const {UrlClassifierTestUtils} = ChromeUtils.import("resource://testing-common/UrlClassifierTestUtils.jsm");
|
|
|
|
addMessageListener("loadTrackers", __ => {
|
|
UrlClassifierTestUtils.addTestTrackers().then(___ => {
|
|
sendAsyncMessage("trackersLoaded");
|
|
});
|
|
});
|
|
|
|
addMessageListener("unloadTrackers", __ => {
|
|
UrlClassifierTestUtils.cleanupTestTrackers();
|
|
sendAsyncMessage("trackersUnloaded");
|
|
});
|
|
});
|
|
|
|
await new Promise(resolve => {
|
|
chromeScript.addMessageListener("trackersLoaded", resolve);
|
|
chromeScript.sendAsyncMessage("loadTrackers");
|
|
});
|
|
|
|
for (let test in tests) {
|
|
await runTest(tests[test]);
|
|
}
|
|
|
|
await new Promise(resolve => {
|
|
chromeScript.addMessageListener("trackersUnloaded", resolve);
|
|
chromeScript.sendSyncMessage("unloadTrackers");
|
|
});
|
|
|
|
chromeScript.destroy();
|
|
SimpleTest.finish();
|
|
}
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
runTests();
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|