Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
-
CI results over the last 22 days
- Manifest: toolkit/components/content-classifier/test/browser/browser.toml
"use strict";
// principal, which has no base domain. That must not make the classifier
// treat a first-party request as third-party.
const IMAGE_PATH =
"browser/toolkit/components/antitracking/test/browser/raptor.jpg";
const FIRST_PARTY_IMAGE = TEST_DOMAIN + IMAGE_PATH;
const THIRD_PARTY_IMAGE = TEST_BLOCKED_3RD_PARTY_DOMAIN + IMAGE_PATH;
add_task(async function test_content_script_first_party_fetch_not_blocked() {
let client = getRSClient();
let records = await populateMultipleRS(client.db, [
{
id: "trackers",
name: "disconnect-tracker-base",
rules: ["||example.net^", "||example.org^"],
},
]);
await pushEnginePrefs({ protection: "trackers" });
let extension = ExtensionTestUtils.loadExtension({
manifest: {
content_scripts: [
{
js: ["cs.js"],
run_at: "document_end",
},
],
},
files: {
"cs.js": function () {
const { browser } = this;
browser.test.onMessage.addListener(async (msg, url) => {
if (msg !== "fetch") {
return;
}
try {
await fetch(url + "?" + Math.random(), { mode: "no-cors" });
browser.test.sendMessage("fetch-result", true);
} catch (_e) {
browser.test.sendMessage("fetch-result", false);
}
});
browser.test.sendMessage("content-script-ready");
},
},
});
await extension.startup();
let tab = await openTestTab();
await extension.awaitMessage("content-script-ready");
await syncAndWaitForLists(client, records);
extension.sendMessage("fetch", FIRST_PARTY_IMAGE);
ok(
await extension.awaitMessage("fetch-result"),
"content script fetch of a first-party image on a listed site is not blocked"
);
extension.sendMessage("fetch", THIRD_PARTY_IMAGE);
ok(
!(await extension.awaitMessage("fetch-result")),
"content script fetch of a third-party image on a listed site is blocked"
);
BrowserTestUtils.removeTab(tab);
await extension.unload();
});