summaryrefslogtreecommitdiffstats
path: root/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs')
-rw-r--r--toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs56
1 files changed, 48 insertions, 8 deletions
diff --git a/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs b/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs
index baaa9f3824..d9c1995821 100644
--- a/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs
+++ b/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs
@@ -31,10 +31,9 @@ XPCOMUtils.defineLazyPreferenceGetter(
PREF_STRIP_IS_TEST
);
-// Lazy getter for the strip-on-share strip list.
-ChromeUtils.defineLazyGetter(lazy, "StripOnShareList", async () => {
+async function fetchAndParseList(fileName) {
let response = await fetch(
- "chrome://global/content/antitracking/StripOnShare.json"
+ "chrome://global/content/antitracking/" + fileName
);
if (!response.ok) {
lazy.logger.error(
@@ -44,7 +43,48 @@ ChromeUtils.defineLazyGetter(lazy, "StripOnShareList", async () => {
"Error fetching strip-on-share strip list" + response.status
);
}
- return response.json();
+ return await response.json();
+}
+
+// Lazy getter for the strip-on-share strip list.
+ChromeUtils.defineLazyGetter(lazy, "StripOnShareList", async () => {
+ let [stripOnShareList, stripOnShareLGPLParams] = await Promise.all([
+ fetchAndParseList("StripOnShare.json"),
+ fetchAndParseList("StripOnShareLGPL.json"),
+ ]);
+
+ if (!stripOnShareList || !stripOnShareLGPLParams) {
+ lazy.logger.error("Error strip-on-share strip list were not loaded");
+ throw new Error("Error fetching strip-on-share strip list were not loaded");
+ }
+
+ // Combines the mozilla licensed strip on share param
+ // list and the LGPL licensed strip on share param list
+ for (const key in stripOnShareLGPLParams) {
+ if (Object.hasOwn(stripOnShareList, key)) {
+ stripOnShareList[key].queryParams.push(
+ ...stripOnShareLGPLParams[key].queryParams
+ );
+
+ stripOnShareList[key].topLevelSites.push(
+ ...stripOnShareLGPLParams[key].topLevelSites
+ );
+
+ // Removes duplicates topLevelSitres
+ stripOnShareList[key].topLevelSites = [
+ ...new Set(stripOnShareList[key].topLevelSites),
+ ];
+
+ // Removes duplicates queryParams
+ stripOnShareList[key].queryParams = [
+ ...new Set(stripOnShareList[key].queryParams),
+ ];
+ } else {
+ stripOnShareList[key] = stripOnShareLGPLParams[key];
+ }
+ }
+
+ return stripOnShareList;
});
export class URLQueryStrippingListService {
@@ -142,11 +182,11 @@ export class URLQueryStrippingListService {
}
// Get the list from pref.
- this._onPrefUpdate(
+ await this._onPrefUpdate(
PREF_STRIP_LIST_NAME,
Services.prefs.getStringPref(PREF_STRIP_LIST_NAME, "")
);
- this._onPrefUpdate(
+ await this._onPrefUpdate(
PREF_ALLOW_LIST_NAME,
Services.prefs.getStringPref(PREF_ALLOW_LIST_NAME, "")
);
@@ -219,7 +259,7 @@ export class URLQueryStrippingListService {
this._notifyObservers();
}
- _onPrefUpdate(pref, value) {
+ async _onPrefUpdate(pref, value) {
switch (pref) {
case PREF_STRIP_LIST_NAME:
this.prefStripList = new Set(value ? value.split(" ") : []);
@@ -235,7 +275,7 @@ export class URLQueryStrippingListService {
}
this._notifyObservers();
- this._notifyStripOnShareObservers();
+ await this._notifyStripOnShareObservers();
}
_getListFromSharedData() {