mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-21 01:05:45 +00:00
Bug 1560040 - Introduce 2 new URL-Classifier features to annotate and block social trackers - tests, r=dimi
Differential Revision: https://phabricator.services.mozilla.com/D35422 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
85b42f62ab
commit
6c816c5de8
@ -64,18 +64,22 @@ async function runTest(test, expectedFlag, expectedTrackingResource, prefs) {
|
||||
[ "urlclassifier.trackingAnnotationTable.testEntries", prefBlacklistValue(test.config[0]) ],
|
||||
[ "urlclassifier.features.fingerprinting.annotate.blacklistHosts", prefBlacklistValue(test.config[0]) ],
|
||||
[ "urlclassifier.features.cryptomining.annotate.blacklistHosts", prefBlacklistValue(test.config[0]) ],
|
||||
[ "urlclassifier.features.socialtracking.annotate.blacklistHosts", prefBlacklistValue(test.config[0]) ],
|
||||
|
||||
[ "urlclassifier.trackingAnnotationWhitelistTable.testEntries", prefWhitelistValue(test.config[1]) ],
|
||||
[ "urlclassifier.features.fingerprinting.annotate.whitelistHosts", prefWhitelistValue(test.config[1]) ],
|
||||
[ "urlclassifier.features.cryptomining.annotate.whitelistHosts", prefWhitelistValue(test.config[1]) ],
|
||||
[ "urlclassifier.features.socialtracking.annotate.whitelistHosts", prefWhitelistValue(test.config[1]) ],
|
||||
|
||||
[ "urlclassifier.trackingTable.testEntries", prefBlacklistValue(test.config[2]) ],
|
||||
[ "urlclassifier.features.fingerprinting.blacklistHosts", prefBlacklistValue(test.config[2]) ],
|
||||
[ "urlclassifier.features.cryptomining.blacklistHosts", prefBlacklistValue(test.config[2]) ],
|
||||
[ "urlclassifier.features.socialtracking.blacklistHosts", prefBlacklistValue(test.config[2]) ],
|
||||
|
||||
[ "urlclassifier.trackingWhitelistTable.testEntries", prefWhitelistValue(test.config[3]) ],
|
||||
[ "urlclassifier.features.fingerprinting.whitelistHosts", prefWhitelistValue(test.config[3]) ],
|
||||
[ "urlclassifier.features.cryptomining.whitelistHosts", prefWhitelistValue(test.config[3]) ],
|
||||
[ "urlclassifier.features.socialtracking.whitelistHosts", prefWhitelistValue(test.config[3]) ],
|
||||
];
|
||||
|
||||
info("Testing: " + config.toSource() + "\n");
|
||||
|
@ -56,3 +56,5 @@ skip-if = toolkit == 'android' && debug && !is_fennec
|
||||
skip-if = toolkit == 'android' && debug && !is_fennec
|
||||
[test_cryptomining.html]
|
||||
[test_cryptomining_annotate.html]
|
||||
[test_socialtracking.html]
|
||||
[test_socialtracking_annotate.html]
|
||||
|
@ -39,6 +39,7 @@ async function runTest(test) {
|
||||
[ "privacy.trackingprotection.annotate_channels", false ],
|
||||
[ "privacy.trackingprotection.cryptomining.enabled", true ],
|
||||
[ "privacy.trackingprotection.fingerprinting.enabled", false ],
|
||||
[ "privacy.trackingprotection.socialtracking.enabled", false ],
|
||||
]});
|
||||
|
||||
info("Testing: " + test.config.toSource() + "\n");
|
||||
|
@ -18,6 +18,8 @@ runTests(SpecialPowers.Ci.nsIHttpChannel.CLASSIFIED_CRYPTOMINING,
|
||||
["privacy.trackingprotection.fingerprinting.enabled", false],
|
||||
["privacy.trackingprotection.cryptomining.annotate.enabled", true],
|
||||
["privacy.trackingprotection.cryptomining.enabled", true],
|
||||
["privacy.trackingprotection.socialtracking.annotate.enabled", false],
|
||||
["privacy.trackingprotection.socialtracking.enabled", false],
|
||||
],
|
||||
false /* a tracking resource */);
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
@ -39,6 +39,7 @@ async function runTest(test) {
|
||||
[ "privacy.trackingprotection.annotate_channels", false ],
|
||||
[ "privacy.trackingprotection.cryptomining.enabled", false ],
|
||||
[ "privacy.trackingprotection.fingerprinting.enabled", true ],
|
||||
[ "privacy.trackingprotection.socialtracking.enabled", false ],
|
||||
]});
|
||||
|
||||
info("Testing: " + test.config.toSource() + "\n");
|
||||
|
@ -18,6 +18,8 @@ runTests(SpecialPowers.Ci.nsIHttpChannel.CLASSIFIED_FINGERPRINTING,
|
||||
["privacy.trackingprotection.fingerprinting.enabled", true],
|
||||
["privacy.trackingprotection.cryptomining.annotate.enabled", false],
|
||||
["privacy.trackingprotection.cryptomining.enabled", false],
|
||||
["privacy.trackingprotection.socialtracking.annotate.enabled", false],
|
||||
["privacy.trackingprotection.socialtracking.enabled", false],
|
||||
],
|
||||
true /* a tracking resource */);
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
@ -0,0 +1,107 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test the socialtracking classifier</title>
|
||||
<script 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.socialtracking.blacklistHosts", prefValue(test.config[0], "example.com") ],
|
||||
[ "urlclassifier.features.socialtracking.whitelistHosts", prefValue(test.config[1], "mochi.test") ],
|
||||
[ "urlclassifier.features.socialtracking.blacklistTables", prefValue(test.config[0], "mochitest1-track-simple") ],
|
||||
[ "urlclassifier.features.socialtracking.whitelistTables", "" ],
|
||||
[ "privacy.trackingprotection.enabled", false ],
|
||||
[ "privacy.trackingprotection.annotate_channels", false ],
|
||||
[ "privacy.trackingprotection.cryptomining.enabled", false ],
|
||||
[ "privacy.trackingprotection.fingerprinting.enabled", false ],
|
||||
[ "privacy.trackingprotection.socialtracking.enabled", true ],
|
||||
]});
|
||||
|
||||
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>
|
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Test the relationship between annotation vs blocking - socialtracking</title>
|
||||
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<script type="text/javascript" src="features.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script class="testbody" type="text/javascript">
|
||||
|
||||
runTests(SpecialPowers.Ci.nsIHttpChannel.CLASSIFIED_SOCIALTRACKING,
|
||||
[
|
||||
["privacy.trackingprotection.enabled", false],
|
||||
["privacy.trackingprotection.annotate_channels", false],
|
||||
["privacy.trackingprotection.fingerprinting.annotate.enabled", false],
|
||||
["privacy.trackingprotection.fingerprinting.enabled", false],
|
||||
["privacy.trackingprotection.cryptomining.annotate.enabled", false],
|
||||
["privacy.trackingprotection.cryptomining.enabled", false],
|
||||
["privacy.trackingprotection.socialtracking.annotate.enabled", true],
|
||||
["privacy.trackingprotection.socialtracking.enabled", true],
|
||||
],
|
||||
false /* a tracking resource */);
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user