@duckduckgo/autoconsent 14.81.0 → 14.83.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +3 -1
- package/CHANGELOG.md +27 -0
- package/dist/addon-firefox/background.bundle.js +7 -0
- package/dist/addon-firefox/compact-rules.json +1 -1
- package/dist/addon-firefox/content.bundle.js +16 -2
- package/dist/addon-firefox/manifest.json +1 -1
- package/dist/addon-firefox/popup.bundle.js +20 -0
- package/dist/addon-firefox/popup.html +14 -0
- package/dist/addon-firefox/rules.json +1 -1
- package/dist/addon-mv3/background.bundle.js +7 -0
- package/dist/addon-mv3/compact-rules.json +1 -1
- package/dist/addon-mv3/content.bundle.js +16 -2
- package/dist/addon-mv3/manifest.json +1 -1
- package/dist/addon-mv3/popup.bundle.js +20 -0
- package/dist/addon-mv3/popup.html +14 -0
- package/dist/addon-mv3/rules.json +1 -1
- package/dist/autoconsent.cjs.js +16 -2
- package/dist/autoconsent.esm.js +16 -2
- package/dist/autoconsent.extra.cjs.js +16 -2
- package/dist/autoconsent.extra.esm.js +16 -2
- package/dist/autoconsent.playwright.js +16 -2
- package/dist/types/types.d.ts +1 -0
- package/lib/types.ts +1 -0
- package/lib/utils.ts +1 -0
- package/lib/web.ts +17 -3
- package/package.json +1 -1
- package/rules/autoconsent/facebook-mobile.json +17 -0
- package/rules/autoconsent/facebook.json +1 -1
- package/rules/compact-rules.json +1 -1
- package/rules/rules.json +1 -1
- package/tests/facebook-mobile.spec.ts +6 -0
- package/tests-wtr/lifecycle/wait-for-popup.html +14 -0
- package/tests-wtr/lifecycle/wait-for-popup.ts +214 -0
|
@@ -693,6 +693,7 @@
|
|
|
693
693
|
enableGeneratedRules: true,
|
|
694
694
|
enableHeuristicDetection: false,
|
|
695
695
|
enableHeuristicAction: false,
|
|
696
|
+
enablePopupMutationObserver: false,
|
|
696
697
|
detectRetries: 20,
|
|
697
698
|
isMainWorld: false,
|
|
698
699
|
prehideTimeout: 2e3,
|
|
@@ -3695,16 +3696,29 @@
|
|
|
3695
3696
|
this.updateState({ selfTest: selfTestResult });
|
|
3696
3697
|
return selfTestResult;
|
|
3697
3698
|
}
|
|
3698
|
-
// TODO: use MutationObserver like in findCmp()
|
|
3699
3699
|
async waitForPopup(cmp, retries = 10, interval = 500) {
|
|
3700
3700
|
const logsConfig = this.config.logs;
|
|
3701
3701
|
logsConfig.lifecycle && console.log("checking if popup is open...", cmp.name);
|
|
3702
|
+
let mutationObserver = null;
|
|
3703
|
+
if (this.config.enablePopupMutationObserver) {
|
|
3704
|
+
mutationObserver = this.domActions.waitForMutation("html", 1e4);
|
|
3705
|
+
mutationObserver.catch(() => {
|
|
3706
|
+
});
|
|
3707
|
+
}
|
|
3702
3708
|
const isOpen = await cmp.detectPopup().catch((e) => {
|
|
3703
3709
|
logsConfig.errors && console.warn(`error detecting popup for ${cmp.name}`, e);
|
|
3704
3710
|
return false;
|
|
3705
3711
|
});
|
|
3706
3712
|
if (!isOpen && retries > 0) {
|
|
3707
|
-
|
|
3713
|
+
if (mutationObserver) {
|
|
3714
|
+
try {
|
|
3715
|
+
await Promise.all([this.domActions.wait(interval), mutationObserver]);
|
|
3716
|
+
} catch (e) {
|
|
3717
|
+
logsConfig.lifecycle && console.log(cmp.name, "popup detection timed out waiting for DOM mutation");
|
|
3718
|
+
}
|
|
3719
|
+
} else {
|
|
3720
|
+
await this.domActions.wait(interval);
|
|
3721
|
+
}
|
|
3708
3722
|
return this.waitForPopup(cmp, retries - 1, interval);
|
|
3709
3723
|
}
|
|
3710
3724
|
logsConfig.lifecycle && console.log(cmp.name, `popup is ${isOpen ? "open" : "not open"}`);
|
|
@@ -524,6 +524,7 @@
|
|
|
524
524
|
enableGeneratedRules: true,
|
|
525
525
|
enableHeuristicDetection: false,
|
|
526
526
|
enableHeuristicAction: false,
|
|
527
|
+
enablePopupMutationObserver: false,
|
|
527
528
|
detectRetries: 20,
|
|
528
529
|
isMainWorld: false,
|
|
529
530
|
prehideTimeout: 2e3,
|
|
@@ -553,6 +554,12 @@
|
|
|
553
554
|
if (!storedConfig.enableHeuristicDetection) {
|
|
554
555
|
storedConfig.enableHeuristicDetection = true;
|
|
555
556
|
}
|
|
557
|
+
if (storedConfig.enablePopupMutationObserver === void 0) {
|
|
558
|
+
storedConfig.enablePopupMutationObserver = true;
|
|
559
|
+
}
|
|
560
|
+
if (storedConfig.enableHeuristicAction === void 0) {
|
|
561
|
+
storedConfig.enableHeuristicAction = true;
|
|
562
|
+
}
|
|
556
563
|
if (!storedConfig.logs) {
|
|
557
564
|
storedConfig.logs = {
|
|
558
565
|
lifecycle: true,
|
|
@@ -654,6 +661,8 @@
|
|
|
654
661
|
const heuristicActionOffRadio = document.querySelector("input#heuristic-action-off");
|
|
655
662
|
const visualTestOnRadio = document.querySelector("input#visual-test-on");
|
|
656
663
|
const visualTestOffRadio = document.querySelector("input#visual-test-off");
|
|
664
|
+
const popupMutationOnRadio = document.querySelector("input#popup-mutation-on");
|
|
665
|
+
const popupMutationOffRadio = document.querySelector("input#popup-mutation-off");
|
|
657
666
|
const retriesInput = document.querySelector("input#retries");
|
|
658
667
|
const logsLifecycleCheckbox = document.querySelector("input#logs-lifecycle");
|
|
659
668
|
const logsRulestepsCheckbox = document.querySelector("input#logs-rulesteps");
|
|
@@ -739,6 +748,11 @@
|
|
|
739
748
|
} else {
|
|
740
749
|
visualTestOffRadio.checked = true;
|
|
741
750
|
}
|
|
751
|
+
if (autoconsentConfig.enablePopupMutationObserver) {
|
|
752
|
+
popupMutationOnRadio.checked = true;
|
|
753
|
+
} else {
|
|
754
|
+
popupMutationOffRadio.checked = true;
|
|
755
|
+
}
|
|
742
756
|
enabledCheckbox.addEventListener("change", async () => {
|
|
743
757
|
await setIsEnabledForDomain(currentDomain, enabledCheckbox.checked);
|
|
744
758
|
});
|
|
@@ -789,6 +803,12 @@
|
|
|
789
803
|
}
|
|
790
804
|
visualTestOnRadio.addEventListener("change", visualTestChange);
|
|
791
805
|
visualTestOffRadio.addEventListener("change", visualTestChange);
|
|
806
|
+
function popupMutationChange() {
|
|
807
|
+
autoconsentConfig.enablePopupMutationObserver = popupMutationOnRadio.checked;
|
|
808
|
+
storageSet({ config: autoconsentConfig });
|
|
809
|
+
}
|
|
810
|
+
popupMutationOnRadio.addEventListener("change", popupMutationChange);
|
|
811
|
+
popupMutationOffRadio.addEventListener("change", popupMutationChange);
|
|
792
812
|
function updateLogsConfig() {
|
|
793
813
|
autoconsentConfig.logs = {
|
|
794
814
|
lifecycle: logsLifecycleCheckbox.checked,
|
|
@@ -123,6 +123,20 @@
|
|
|
123
123
|
</div>
|
|
124
124
|
</fieldset>
|
|
125
125
|
|
|
126
|
+
<fieldset>
|
|
127
|
+
<legend>Popup mutation observer</legend>
|
|
128
|
+
|
|
129
|
+
<div>
|
|
130
|
+
<input type="radio" id="popup-mutation-on" name="popup-mutation" value="true" />
|
|
131
|
+
<label for="popup-mutation-on">On</label>
|
|
132
|
+
</div>
|
|
133
|
+
|
|
134
|
+
<div>
|
|
135
|
+
<input type="radio" id="popup-mutation-off" name="popup-mutation" value="false" checked />
|
|
136
|
+
<label for="popup-mutation-off">Off</label>
|
|
137
|
+
</div>
|
|
138
|
+
</fieldset>
|
|
139
|
+
|
|
126
140
|
<fieldset>
|
|
127
141
|
<legend>Debug logging</legend>
|
|
128
142
|
<div>
|