Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
"use strict";
const { SiteDataTestUtils } = ChromeUtils.importESModule(
);
/**
* Registers a console listener and waits for the cookie banner handled message
* to be logged.
* @returns {Promise} - Promise which resolves once the message has been logged.
*/
async function waitForCookieBannerHandledConsoleMsg() {
let msg;
let checkFn = msg =>
msg && msg.match(/handled a cookie banner on behalf of the user./);
await new Promise(resolve => {
SpecialPowers.registerConsoleListener(consoleMsg => {
msg = consoleMsg.message;
if (checkFn(msg)) {
resolve();
}
});
});
SpecialPowers.postConsoleSentinel();
ok(checkFn(msg), "Observed cookie banner handled console message.");
}
add_setup(clickTestSetup);
/**
* Tests that when we handle a banner via clicking a message is logged to the
* website console.
*/
add_task(async function test_banner_clicking_log_web_console() {
await SpecialPowers.pushPrefEnv({
set: [
[
"cookiebanners.service.mode",
Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
],
],
});
insertTestClickRules();
let consoleMsgPromise = waitForCookieBannerHandledConsoleMsg();
// Clear the executed records before testing.
Services.cookieBanners.removeAllExecutedRecords(false);
info("Handle the banner via click and wait for console message to appear.");
await openPageAndVerify({
domain: TEST_DOMAIN_A,
testURL: TEST_PAGE_A,
visible: false,
expected: "OptOut",
});
await consoleMsgPromise;
});
/**
* Tests that when we handle a banner via cookie injection a message is logged
* to the website console.
*/
add_task(async function test_cookie_injection_log_web_console() {
await SpecialPowers.pushPrefEnv({
set: [
[
"cookiebanners.service.mode",
Ci.nsICookieBannerService.MODE_REJECT_OR_ACCEPT,
],
["cookiebanners.cookieInjector.enabled", true],
],
});
insertTestCookieRules();
let consoleMsgPromise = waitForCookieBannerHandledConsoleMsg();
// Clear the executed records before testing.
Services.cookieBanners.removeAllExecutedRecords(false);
info(
"Handle the banner via cookie injection and wait for console message to appear."
);
let tab = await BrowserTestUtils.openNewForegroundTab(
gBrowser,
TEST_ORIGIN_A
);
BrowserTestUtils.removeTab(tab);
await consoleMsgPromise;
// Clear injected cookies.
await SiteDataTestUtils.clear();
});