115 lines
2.7 KiB
JavaScript
115 lines
2.7 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
add_setup(clickTestSetup);
|
|
|
|
/**
|
|
* Insert a test rule with the specified runContext.
|
|
* @param {RunContext} - The runContext to set for the rule. See nsIClickRule
|
|
* for documentation.
|
|
*/
|
|
function insertTestRules({ runContext }) {
|
|
info("Clearing existing rules");
|
|
Services.cookieBanners.resetRules(false);
|
|
|
|
info("Inserting test rules. " + JSON.stringify({ runContext }));
|
|
|
|
info("Add opt-out click rule for DOMAIN_A.");
|
|
let ruleA = Cc["@mozilla.org/cookie-banner-rule;1"].createInstance(
|
|
Ci.nsICookieBannerRule
|
|
);
|
|
ruleA.id = genUUID();
|
|
ruleA.domains = [TEST_DOMAIN_A];
|
|
|
|
ruleA.addClickRule(
|
|
"div#banner",
|
|
false,
|
|
runContext,
|
|
null,
|
|
"button#optOut",
|
|
"button#optIn"
|
|
);
|
|
Services.cookieBanners.insertRule(ruleA);
|
|
}
|
|
|
|
/**
|
|
* Test that banner clicking only runs if the context matches the runContext
|
|
* specified in the click rule.
|
|
*/
|
|
add_task(async function test_embedded_iframe() {
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["cookiebanners.service.mode", Ci.nsICookieBannerService.MODE_REJECT],
|
|
],
|
|
});
|
|
|
|
insertTestRules({ runContext: Ci.nsIClickRule.RUN_TOP });
|
|
|
|
// Clear executed records before testing.
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
|
|
await openIframeAndVerify({
|
|
win: window,
|
|
domain: TEST_DOMAIN_A,
|
|
testURL: TEST_PAGE_A,
|
|
visible: true,
|
|
expected: "NoClick",
|
|
});
|
|
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
|
|
await openPageAndVerify({
|
|
win: window,
|
|
domain: TEST_DOMAIN_A,
|
|
testURL: TEST_PAGE_A,
|
|
visible: false,
|
|
expected: "OptOut",
|
|
});
|
|
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
|
|
insertTestRules({ runContext: Ci.nsIClickRule.RUN_CHILD });
|
|
|
|
await openIframeAndVerify({
|
|
win: window,
|
|
domain: TEST_DOMAIN_A,
|
|
testURL: TEST_PAGE_A,
|
|
visible: false,
|
|
expected: "OptOut",
|
|
});
|
|
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
|
|
await openPageAndVerify({
|
|
win: window,
|
|
domain: TEST_DOMAIN_A,
|
|
testURL: TEST_PAGE_A,
|
|
visible: true,
|
|
expected: "NoClick",
|
|
});
|
|
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
|
|
insertTestRules({ runContext: Ci.nsIClickRule.RUN_ALL });
|
|
await openIframeAndVerify({
|
|
win: window,
|
|
domain: TEST_DOMAIN_A,
|
|
testURL: TEST_PAGE_A,
|
|
visible: false,
|
|
expected: "OptOut",
|
|
});
|
|
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
|
|
await openPageAndVerify({
|
|
win: window,
|
|
domain: TEST_DOMAIN_A,
|
|
testURL: TEST_PAGE_A,
|
|
visible: false,
|
|
expected: "OptOut",
|
|
});
|
|
|
|
Services.cookieBanners.removeAllExecutedRecords(false);
|
|
});
|