diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-15 03:35:49 +0000 |
commit | d8bbc7858622b6d9c278469aab701ca0b609cddf (patch) | |
tree | eff41dc61d9f714852212739e6b3738b82a2af87 /toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs | |
parent | Releasing progress-linux version 125.0.3-1~progress7.99u1. (diff) | |
download | firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.tar.xz firefox-d8bbc7858622b6d9c278469aab701ca0b609cddf.zip |
Merging upstream version 126.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs')
-rw-r--r-- | toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs | 56 |
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() { |