diff options
Diffstat (limited to 'toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs')
-rw-r--r-- | toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs | 60 |
1 files changed, 34 insertions, 26 deletions
diff --git a/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs b/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs index d9c1995821..2880ef4356 100644 --- a/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs +++ b/toolkit/components/antitracking/URLQueryStrippingListService.sys.mjs @@ -31,7 +31,7 @@ XPCOMUtils.defineLazyPreferenceGetter( PREF_STRIP_IS_TEST ); -async function fetchAndParseList(fileName) { +async function fetchList(fileName) { let response = await fetch( "chrome://global/content/antitracking/" + fileName ); @@ -43,14 +43,14 @@ async function fetchAndParseList(fileName) { "Error fetching strip-on-share strip list" + response.status ); } - return await response.json(); + return 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"), + fetchList("StripOnShare.json"), + fetchList("StripOnShareLGPL.json"), ]); if (!stripOnShareList || !stripOnShareLGPLParams) { @@ -60,32 +60,40 @@ ChromeUtils.defineLazyGetter(lazy, "StripOnShareList", async () => { // 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 - ); + return combineAndParseLists(stripOnShareList, [stripOnShareLGPLParams]); +}); - // Removes duplicates topLevelSitres - stripOnShareList[key].topLevelSites = [ - ...new Set(stripOnShareList[key].topLevelSites), - ]; +function combineAndParseLists(mainList, arrOfLists) { + arrOfLists.forEach(additionalList => { + for (let key in additionalList) { + if (Object.hasOwn(mainList, key)) { + mainList[key].queryParams.push(...additionalList[key].queryParams); - // Removes duplicates queryParams - stripOnShareList[key].queryParams = [ - ...new Set(stripOnShareList[key].queryParams), - ]; - } else { - stripOnShareList[key] = stripOnShareLGPLParams[key]; + mainList[key].topLevelSites.push(...additionalList[key].topLevelSites); + } else { + mainList[key] = additionalList[key]; + } } + }); + + for (let key in mainList) { + mainList[key].queryParams = mainList[key].queryParams.map(param => + param.toLowerCase() + ); + + mainList[key].topLevelSites = mainList[key].topLevelSites.map(param => + param.toLowerCase() + ); + + // Removes duplicates topLevelSites + mainList[key].topLevelSites = [...new Set(mainList[key].topLevelSites)]; + + // Removes duplicates queryParams + mainList[key].queryParams = [...new Set(mainList[key].queryParams)]; } - return stripOnShareList; -}); + return mainList; +} export class URLQueryStrippingListService { classId = Components.ID("{afff16f0-3fd2-4153-9ccd-c6d9abd879e4}"); @@ -121,7 +129,7 @@ export class URLQueryStrippingListService { } async testSetList(testList) { - this.#stripOnShareTestList = testList; + this.#stripOnShareTestList = combineAndParseLists(testList, []); await this._notifyStripOnShareObservers(); } |