From 730a5ec3628116000016ffe79b25bc9561a2955c Mon Sep 17 00:00:00 2001 From: Soren Stoutner Date: Thu, 11 Sep 2025 15:29:43 -0700 Subject: [PATCH] Concatonate the applied entry lists with four spaces instead of `*`. https://redmine.stoutner.com/issues/1291 --- src/dialogs/FilterListsDialog.cpp | 52 +- src/dialogs/FilterListsDialog.h | 4 +- src/dialogs/RequestDetailDialog.cpp | 88 +-- src/dialogs/RequestsDialog.cpp | 44 +- src/helpers/FilterListHelper.cpp | 693 +++++++++--------- src/helpers/FilterListHelper.h | 16 +- ...{EntryStruct.h => FilterListEntryStruct.h} | 10 +- src/structs/FilterListStruct.h | 16 +- ...Struct.h => FilterOptionsOverrideStruct.h} | 6 +- src/structs/RequestStruct.h | 25 +- 10 files changed, 480 insertions(+), 474 deletions(-) rename src/structs/{EntryStruct.h => FilterListEntryStruct.h} (93%) rename src/structs/{OverrideStruct.h => FilterOptionsOverrideStruct.h} (91%) diff --git a/src/dialogs/FilterListsDialog.cpp b/src/dialogs/FilterListsDialog.cpp index faf3b49..f30dfb6 100644 --- a/src/dialogs/FilterListsDialog.cpp +++ b/src/dialogs/FilterListsDialog.cpp @@ -71,7 +71,7 @@ FilterListsDialog::FilterListsDialog(QWidget *parentWidgetPointer) : QDialog(par populateFilterListComboBox(globalFilterListHelperPointer->fanboyAnnoyanceStructPointer); } -std::forward_list* FilterListsDialog::getFilterListForwardList(FilterListStruct *filterListStructPointer) const +std::forward_list* FilterListsDialog::getFilterListForwardList(FilterListStruct *filterListStructPointer) const { // Return the filter list forward list. switch (sublistComboBoxPointer->currentIndex()) @@ -85,7 +85,7 @@ std::forward_list* FilterListsDialog::getFilterListForwardList(Fi } // This return statement should never be reached. - return new std::forward_list; + return new std::forward_list; } FilterListStruct *FilterListsDialog::getFilterListStruct(int filterListComboBoxIndex) const @@ -169,7 +169,7 @@ void FilterListsDialog::populateTableWidget(int sublistComboBoxIndex) const FilterListStruct *filterListStructPointer = getFilterListStruct(filterListComboBoxPointer->currentIndex()); // Create a filter list forward list. - std::forward_list *filterListForwardListPointer; + std::forward_list *filterListForwardListPointer; // Populate the filter list forward list. switch (sublistComboBoxIndex) @@ -256,34 +256,34 @@ void FilterListsDialog::populateTableWidget(int sublistComboBoxIndex) const // Populate the table. for (auto filterListEntry = filterListForwardListPointer->begin(); filterListEntry != filterListForwardListPointer->end(); ++filterListEntry) { // Get the entry struct. - EntryStruct *entryStructPointer = *filterListEntry; + FilterListEntryStruct *filterListEntryStructPointer = *filterListEntry; // Add a new row. sublistTableWidgetPointer->insertRow(rowCounter); // Create the entry items. - QTableWidgetItem *appliedEntryListItemPointer = new QTableWidgetItem(entryStructPointer->appliedEntryList.join(QLatin1String(" * "))); - QTableWidgetItem *initialMatchItemPointer = new QTableWidgetItem(entryStructPointer->initialMatch ? i18n("Yes") : QLatin1String()); - QTableWidgetItem *finalMatchItemPointer = new QTableWidgetItem(entryStructPointer->finalMatch ? i18n("Yes") : QLatin1String()); - QTableWidgetItem *domainItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->domain)); - QTableWidgetItem *domainListItemPointer = new QTableWidgetItem(entryStructPointer->domainList.join(QLatin1String(" | "))); - QTableWidgetItem *thirdPartyItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->thirdParty)); - QTableWidgetItem *hasRequestOptionsItemPointer = new QTableWidgetItem(entryStructPointer->hasRequestOptions ? i18n("Yes") : QLatin1String()); - QTableWidgetItem *fontItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->font)); - QTableWidgetItem *imageItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->image)); - QTableWidgetItem *mainFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->mainFrame)); - QTableWidgetItem *mediaItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->media)); - QTableWidgetItem *objectItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->object)); - QTableWidgetItem *otherItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->other)); - QTableWidgetItem *pingItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->ping)); - QTableWidgetItem *scriptItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->script)); - QTableWidgetItem *styleSheetItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->styleSheet)); - QTableWidgetItem *subFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->subFrame)); - QTableWidgetItem *webSocketItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->webSocket)); - QTableWidgetItem *xmlHttpRequestItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(entryStructPointer->xmlHttpRequest)); - QTableWidgetItem *appliedFilterOptionsItemPointer = new QTableWidgetItem(entryStructPointer->appliedFilterOptionsList.join(QLatin1String(" , "))); - QTableWidgetItem *originalFilterOptionsItemPointer = new QTableWidgetItem(entryStructPointer->originalFilterOptions); - QTableWidgetItem *originalEntryItemPointer = new QTableWidgetItem(entryStructPointer->originalEntry); + QTableWidgetItem *appliedEntryListItemPointer = new QTableWidgetItem(filterListEntryStructPointer->appliedEntryList.join(QLatin1String(" "))); + QTableWidgetItem *initialMatchItemPointer = new QTableWidgetItem(filterListEntryStructPointer->initialMatch ? i18n("Yes") : QLatin1String()); + QTableWidgetItem *finalMatchItemPointer = new QTableWidgetItem(filterListEntryStructPointer->finalMatch ? i18n("Yes") : QLatin1String()); + QTableWidgetItem *domainItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->domain)); + QTableWidgetItem *domainListItemPointer = new QTableWidgetItem(filterListEntryStructPointer->domainList.join(QLatin1String(" | "))); + QTableWidgetItem *thirdPartyItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->thirdParty)); + QTableWidgetItem *hasRequestOptionsItemPointer = new QTableWidgetItem(filterListEntryStructPointer->hasRequestOptions ? i18n("Yes") : QLatin1String()); + QTableWidgetItem *fontItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->font)); + QTableWidgetItem *imageItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->image)); + QTableWidgetItem *mainFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->mainFrame)); + QTableWidgetItem *mediaItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->media)); + QTableWidgetItem *objectItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->object)); + QTableWidgetItem *otherItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->other)); + QTableWidgetItem *pingItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->ping)); + QTableWidgetItem *scriptItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->script)); + QTableWidgetItem *styleSheetItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->styleSheet)); + QTableWidgetItem *subFrameItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->subFrame)); + QTableWidgetItem *webSocketItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->webSocket)); + QTableWidgetItem *xmlHttpRequestItemPointer = new QTableWidgetItem(globalFilterListHelperPointer->getRequestOptionDispositionString(filterListEntryStructPointer->xmlHttpRequest)); + QTableWidgetItem *appliedFilterOptionsItemPointer = new QTableWidgetItem(filterListEntryStructPointer->appliedFilterOptionsList.join(QLatin1String(" , "))); + QTableWidgetItem *originalFilterOptionsItemPointer = new QTableWidgetItem(filterListEntryStructPointer->originalFilterOptionsString); + QTableWidgetItem *originalEntryItemPointer = new QTableWidgetItem(filterListEntryStructPointer->originalEntryString); // Add the entries to the table. sublistTableWidgetPointer->setItem(rowCounter, 0, appliedEntryListItemPointer); diff --git a/src/dialogs/FilterListsDialog.h b/src/dialogs/FilterListsDialog.h index f04b9bb..c23938a 100644 --- a/src/dialogs/FilterListsDialog.h +++ b/src/dialogs/FilterListsDialog.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-3.0-or-later - * SPDX-FileCopyrightText: 2024 Soren Stoutner + * SPDX-FileCopyrightText: 2024-2025 Soren Stoutner * * This file is part of Privacy Browser PC . * @@ -52,7 +52,7 @@ private: QTableWidget *sublistTableWidgetPointer; // The private functions. - std::forward_list* getFilterListForwardList(FilterListStruct *filterListStructPointer) const; + std::forward_list* getFilterListForwardList(FilterListStruct *filterListStructPointer) const; FilterListStruct* getFilterListStruct(int filterListComboBoxIndex) const; void populateFilterListComboBox(const FilterListStruct *filterListStructPointer) const; }; diff --git a/src/dialogs/RequestDetailDialog.cpp b/src/dialogs/RequestDetailDialog.cpp index 2b72386..6775569 100644 --- a/src/dialogs/RequestDetailDialog.cpp +++ b/src/dialogs/RequestDetailDialog.cpp @@ -146,28 +146,28 @@ void RequestDetailDialog::populateDialog(const int row) // Populate the new request struct. The order needs to match how the data stream is populated in RequestsDialog.cpp. requestStructDataStreamReader >> requestStructPointer->dispositionInt; - requestStructDataStreamReader >> requestStructPointer->entryStruct.originalEntry; - requestStructDataStreamReader >> requestStructPointer->entryStruct.originalFilterOptions; - requestStructDataStreamReader >> requestStructPointer->entryStruct.appliedEntryList; - requestStructDataStreamReader >> requestStructPointer->entryStruct.appliedFilterOptionsList; - requestStructDataStreamReader >> requestStructPointer->entryStruct.domainList; - requestStructDataStreamReader >> requestStructPointer->entryStruct.finalMatch; - requestStructDataStreamReader >> requestStructPointer->entryStruct.hasRequestOptions; - requestStructDataStreamReader >> requestStructPointer->entryStruct.initialMatch; - requestStructDataStreamReader >> requestStructPointer->entryStruct.domain; - requestStructDataStreamReader >> requestStructPointer->entryStruct.font; - requestStructDataStreamReader >> requestStructPointer->entryStruct.image; - requestStructDataStreamReader >> requestStructPointer->entryStruct.mainFrame; - requestStructDataStreamReader >> requestStructPointer->entryStruct.media; - requestStructDataStreamReader >> requestStructPointer->entryStruct.object; - requestStructDataStreamReader >> requestStructPointer->entryStruct.other; - requestStructDataStreamReader >> requestStructPointer->entryStruct.ping; - requestStructDataStreamReader >> requestStructPointer->entryStruct.script; - requestStructDataStreamReader >> requestStructPointer->entryStruct.styleSheet; - requestStructDataStreamReader >> requestStructPointer->entryStruct.subFrame; - requestStructDataStreamReader >> requestStructPointer->entryStruct.thirdParty; - requestStructDataStreamReader >> requestStructPointer->entryStruct.webSocket; - requestStructDataStreamReader >> requestStructPointer->entryStruct.xmlHttpRequest; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.originalEntryString; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.originalFilterOptionsString; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.appliedEntryList; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.appliedFilterOptionsList; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.domainList; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.finalMatch; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.hasRequestOptions; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.initialMatch; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.domain; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.font; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.image; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.mainFrame; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.media; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.object; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.other; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.ping; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.script; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.styleSheet; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.subFrame; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.thirdParty; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.webSocket; + requestStructDataStreamReader >> requestStructPointer->filterListEntryStruct.xmlHttpRequest; requestStructDataStreamReader >> requestStructPointer->filterListTitle; requestStructDataStreamReader >> requestStructPointer->isThirdPartyRequest; requestStructDataStreamReader >> requestStructPointer->matchedUrlType; @@ -182,7 +182,7 @@ void RequestDetailDialog::populateDialog(const int row) requestStructDataStreamReader >> requestStructPointer->webPageUrlString; // Make a local copy of the has request options boolean. - bool hasRequestOptions = requestStructPointer->entryStruct.hasRequestOptions; + bool hasRequestOptions = requestStructPointer->filterListEntryStruct.hasRequestOptions; // Populate the views. dispositionLineEditPointer->setText(globalFilterListHelperPointer->getDispositionString(requestStructPointer->dispositionInt)); @@ -197,28 +197,28 @@ void RequestDetailDialog::populateDialog(const int row) resourceTypeLineEditPointer->setText(globalFilterListHelperPointer->getResourceTypeString(requestStructPointer->resourceTypeInt)); filterListLineEditPointer->setText(requestStructPointer->filterListTitle); sublistLineEditPointer->setText(globalFilterListHelperPointer->getSublistName(requestStructPointer->sublistInt)); - appliedEntryListLineEditPointer->setText(requestStructPointer->entryStruct.appliedEntryList.join(QLatin1String(" * "))); - domainLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.domain)); - thirdPartyFilterLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.thirdParty)); - initialMatchLineEditPointer->setText(requestStructPointer->entryStruct.initialMatch ? i18n("Yes") : QLatin1String()); - finalMatchLineEditPointer->setText(requestStructPointer->entryStruct.finalMatch ? i18n("Yes") : QLatin1String()); - domainListLineEditPointer->setText(requestStructPointer->entryStruct.domainList.join(QLatin1String(" | "))); + appliedEntryListLineEditPointer->setText(requestStructPointer->filterListEntryStruct.appliedEntryList.join(QLatin1String(" * "))); + domainLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.domain)); + thirdPartyFilterLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.thirdParty)); + initialMatchLineEditPointer->setText(requestStructPointer->filterListEntryStruct.initialMatch ? i18n("Yes") : QLatin1String()); + finalMatchLineEditPointer->setText(requestStructPointer->filterListEntryStruct.finalMatch ? i18n("Yes") : QLatin1String()); + domainListLineEditPointer->setText(requestStructPointer->filterListEntryStruct.domainList.join(QLatin1String(" | "))); hasRequestOptionsCheckBoxPointer->setChecked(hasRequestOptions); - fontLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.font)); - imageLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.image)); - mainFrameLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.mainFrame)); - mediaLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.media)); - objectLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.object)); - otherLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.other)); - pingLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.ping)); - scriptLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.script)); - styleSheetLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.styleSheet)); - subFrameLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.subFrame)); - webSocketLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.webSocket)); - xmlHttpRequestLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->entryStruct.xmlHttpRequest)); - appliedFilterOptionsLineEditPointer->setText(requestStructPointer->entryStruct.appliedFilterOptionsList.join(QLatin1String(" , "))); - originalFilterOptionsLineEditPointer->setText(requestStructPointer->entryStruct.originalFilterOptions); - originalEntryLineEditPointer->setText(requestStructPointer->entryStruct.originalEntry); + fontLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.font)); + imageLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.image)); + mainFrameLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.mainFrame)); + mediaLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.media)); + objectLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.object)); + otherLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.other)); + pingLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.ping)); + scriptLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.script)); + styleSheetLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.styleSheet)); + subFrameLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.subFrame)); + webSocketLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.webSocket)); + xmlHttpRequestLineEditPointer->setText(globalFilterListHelperPointer->getRequestOptionDispositionString(requestStructPointer->filterListEntryStruct.xmlHttpRequest)); + appliedFilterOptionsLineEditPointer->setText(requestStructPointer->filterListEntryStruct.appliedFilterOptionsList.join(QLatin1String(" , "))); + originalFilterOptionsLineEditPointer->setText(requestStructPointer->filterListEntryStruct.originalFilterOptionsString); + originalEntryLineEditPointer->setText(requestStructPointer->filterListEntryStruct.originalEntryString); // Determine if this is an allow list, which have a sublist int of of 0-2. isAllowList = (requestStructPointer->sublistInt <= 2); diff --git a/src/dialogs/RequestsDialog.cpp b/src/dialogs/RequestsDialog.cpp index 452b898..1dc15ef 100644 --- a/src/dialogs/RequestsDialog.cpp +++ b/src/dialogs/RequestsDialog.cpp @@ -97,28 +97,28 @@ RequestsDialog::RequestsDialog(QWidget *parentWidgetPointer, QListdispositionInt; - requestStructDataStream << requestStructPointer->entryStruct.originalEntry; - requestStructDataStream << requestStructPointer->entryStruct.originalFilterOptions; - requestStructDataStream << requestStructPointer->entryStruct.appliedEntryList; - requestStructDataStream << requestStructPointer->entryStruct.appliedFilterOptionsList; - requestStructDataStream << requestStructPointer->entryStruct.domainList; - requestStructDataStream << requestStructPointer->entryStruct.finalMatch; - requestStructDataStream << requestStructPointer->entryStruct.hasRequestOptions; - requestStructDataStream << requestStructPointer->entryStruct.initialMatch; - requestStructDataStream << requestStructPointer->entryStruct.domain; - requestStructDataStream << requestStructPointer->entryStruct.font; - requestStructDataStream << requestStructPointer->entryStruct.image; - requestStructDataStream << requestStructPointer->entryStruct.mainFrame; - requestStructDataStream << requestStructPointer->entryStruct.media; - requestStructDataStream << requestStructPointer->entryStruct.object; - requestStructDataStream << requestStructPointer->entryStruct.other; - requestStructDataStream << requestStructPointer->entryStruct.ping; - requestStructDataStream << requestStructPointer->entryStruct.script; - requestStructDataStream << requestStructPointer->entryStruct.styleSheet; - requestStructDataStream << requestStructPointer->entryStruct.subFrame; - requestStructDataStream << requestStructPointer->entryStruct.thirdParty; - requestStructDataStream << requestStructPointer->entryStruct.webSocket; - requestStructDataStream << requestStructPointer->entryStruct.xmlHttpRequest; + requestStructDataStream << requestStructPointer->filterListEntryStruct.originalEntryString; + requestStructDataStream << requestStructPointer->filterListEntryStruct.originalFilterOptionsString; + requestStructDataStream << requestStructPointer->filterListEntryStruct.appliedEntryList; + requestStructDataStream << requestStructPointer->filterListEntryStruct.appliedFilterOptionsList; + requestStructDataStream << requestStructPointer->filterListEntryStruct.domainList; + requestStructDataStream << requestStructPointer->filterListEntryStruct.finalMatch; + requestStructDataStream << requestStructPointer->filterListEntryStruct.hasRequestOptions; + requestStructDataStream << requestStructPointer->filterListEntryStruct.initialMatch; + requestStructDataStream << requestStructPointer->filterListEntryStruct.domain; + requestStructDataStream << requestStructPointer->filterListEntryStruct.font; + requestStructDataStream << requestStructPointer->filterListEntryStruct.image; + requestStructDataStream << requestStructPointer->filterListEntryStruct.mainFrame; + requestStructDataStream << requestStructPointer->filterListEntryStruct.media; + requestStructDataStream << requestStructPointer->filterListEntryStruct.object; + requestStructDataStream << requestStructPointer->filterListEntryStruct.other; + requestStructDataStream << requestStructPointer->filterListEntryStruct.ping; + requestStructDataStream << requestStructPointer->filterListEntryStruct.script; + requestStructDataStream << requestStructPointer->filterListEntryStruct.styleSheet; + requestStructDataStream << requestStructPointer->filterListEntryStruct.subFrame; + requestStructDataStream << requestStructPointer->filterListEntryStruct.thirdParty; + requestStructDataStream << requestStructPointer->filterListEntryStruct.webSocket; + requestStructDataStream << requestStructPointer->filterListEntryStruct.xmlHttpRequest; requestStructDataStream << requestStructPointer->filterListTitle; requestStructDataStream << requestStructPointer->isThirdPartyRequest; requestStructDataStream << requestStructPointer->matchedUrlType; diff --git a/src/helpers/FilterListHelper.cpp b/src/helpers/FilterListHelper.cpp index 0f81e0d..d782c24 100644 --- a/src/helpers/FilterListHelper.cpp +++ b/src/helpers/FilterListHelper.cpp @@ -19,7 +19,7 @@ // Application headers. #include "FilterListHelper.h" -#include "structs/OverrideStruct.h" +#include "structs/FilterOptionsOverrideStruct.h" // KDE Framework headers. #include @@ -123,7 +123,7 @@ bool FilterListHelper::checkFilterLists(PrivacyWebEngineView *privacyWebEngineVi requestStructPointer->urlStringWithSeparators.replace(QLatin1Char('='), QLatin1Char('^')); requestStructPointer->urlStringWithSeparators.replace(QLatin1Char('&'), QLatin1Char('^')); - // Add a `^` to the end of the string it it doesn't already contain one. + // Add a `^` to the end of the string if it doesn't already contain one. if (!requestStructPointer->urlStringWithSeparators.endsWith(QLatin1Char('^'))) requestStructPointer->urlStringWithSeparators.append(QLatin1Char('^')); @@ -172,17 +172,17 @@ bool FilterListHelper::checkIndividualList(QWebEngineUrlRequestInfo &urlRequestI // Check the main allow list. while (continueChecking && (mainAllowListEntry != mainAllowListEnd)) { - // Get the entry struct. - EntryStruct *entryStructPointer = *mainAllowListEntry; + // Get the filter list entry struct. + FilterListEntryStruct *filterListEntryStructPointer = *mainAllowListEntry; // Check the applied entry against the request URL. continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, MAIN_ALLOWLIST, requestStructPointer->urlString, - RequestUrlType::Url, entryStructPointer); + RequestUrlType::Url, filterListEntryStructPointer); // Check the applied entry against the request URL with separators. if (continueChecking) continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, MAIN_ALLOWLIST, requestStructPointer->urlStringWithSeparators, - RequestUrlType::UrlWithSeparators, entryStructPointer); + RequestUrlType::UrlWithSeparators, filterListEntryStructPointer); // Increment the main allow list entry. ++mainAllowListEntry; @@ -198,17 +198,17 @@ bool FilterListHelper::checkIndividualList(QWebEngineUrlRequestInfo &urlRequestI // Check the initial domain white list. while (continueChecking && (initialDomainAllowListEntry != initialDomainAllowListEnd)) { - // Get the entry struct. - EntryStruct *entryStructPointer = *initialDomainAllowListEntry; + // Get the filter list entry struct. + FilterListEntryStruct *filterListEntryStructPointer = *initialDomainAllowListEntry; // Check the applied entry against the truncated URL. continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, INITIAL_DOMAIN_ALLOWLIST, requestStructPointer->truncatedUrlString, - RequestUrlType::TruncatedUrl, entryStructPointer); + RequestUrlType::TruncatedUrl, filterListEntryStructPointer); //Check the applied entry against the truncated URL with separators. if (continueChecking) continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, INITIAL_DOMAIN_ALLOWLIST, - requestStructPointer->truncatedUrlStringWithSeparators, RequestUrlType::TruncatedUrlWithSeparators, entryStructPointer); + requestStructPointer->truncatedUrlStringWithSeparators, RequestUrlType::TruncatedUrlWithSeparators, filterListEntryStructPointer); // Increment the initial domain allow list entry. ++initialDomainAllowListEntry; @@ -225,17 +225,17 @@ bool FilterListHelper::checkIndividualList(QWebEngineUrlRequestInfo &urlRequestI // Check the main block list. while (continueChecking && (mainBlockListEntry != mainBlockListEnd)) { - // Get the entry struct. - EntryStruct *entryStructPointer = *mainBlockListEntry; + // Get the filter list entry struct. + FilterListEntryStruct *filterListEntryStructPointer = *mainBlockListEntry; // Check the applied entry against the request URL. continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, MAIN_BLOCKLIST, requestStructPointer->urlString, - RequestUrlType::Url, entryStructPointer); + RequestUrlType::Url, filterListEntryStructPointer); // Check the applied entry against the request URL with separators. if (continueChecking) continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, MAIN_BLOCKLIST, requestStructPointer->urlStringWithSeparators, - RequestUrlType::UrlWithSeparators, entryStructPointer); + RequestUrlType::UrlWithSeparators, filterListEntryStructPointer); // Increment the main block list entry. ++mainBlockListEntry; @@ -253,16 +253,16 @@ bool FilterListHelper::checkIndividualList(QWebEngineUrlRequestInfo &urlRequestI while (continueChecking && (initialDomainBlockListEntry != initialDomainBlockListEnd)) { // Get the entry struct. - EntryStruct *entryStructPointer = *initialDomainBlockListEntry; + FilterListEntryStruct *filterListEntryStructPointer = *initialDomainBlockListEntry; // Check the applied entry against the truncated URL. continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, INITIAL_DOMAIN_BLOCKLIST, requestStructPointer->truncatedUrlString, - RequestUrlType::TruncatedUrl, entryStructPointer); + RequestUrlType::TruncatedUrl, filterListEntryStructPointer); // Check the applied entry against the truncated URL with separators. if (continueChecking) continueChecking = checkAppliedEntry(urlRequestInfo, requestStructPointer, filterListStructPointer->title, INITIAL_DOMAIN_BLOCKLIST, - requestStructPointer->truncatedUrlStringWithSeparators, RequestUrlType::TruncatedUrlWithSeparators, entryStructPointer); + requestStructPointer->truncatedUrlStringWithSeparators, RequestUrlType::TruncatedUrlWithSeparators, filterListEntryStructPointer); // Increment the initial domain block list entry. ++initialDomainBlockListEntry; @@ -279,10 +279,10 @@ bool FilterListHelper::checkIndividualList(QWebEngineUrlRequestInfo &urlRequestI while (continueChecking && (regularExpressionBlockListEntry != regularExpressionBlockListEnd)) { // Get the entry struct. - EntryStruct *entryStructPointer = *regularExpressionBlockListEntry; + FilterListEntryStruct *filterListEntryStructPointer = *regularExpressionBlockListEntry; // Check the applied entries. - continueChecking = checkRegularExpression(urlRequestInfo, requestStructPointer, filterListStructPointer->title, REGULAR_EXPRESSION_BLOCKLIST, entryStructPointer); + continueChecking = checkRegularExpression(urlRequestInfo, requestStructPointer, filterListStructPointer->title, REGULAR_EXPRESSION_BLOCKLIST, filterListEntryStructPointer); // Increment the regular expression block list entry. ++regularExpressionBlockListEntry; @@ -294,77 +294,77 @@ bool FilterListHelper::checkIndividualList(QWebEngineUrlRequestInfo &urlRequestI } bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, QString urlString, - const RequestUrlType requestUrlType, EntryStruct *entryStructPointer) const + const RequestUrlType requestUrlType, FilterListEntryStruct *filterListEntryStructPointer) const { // Check the entries according to the number. - if (entryStructPointer->singleAppliedEntry) // There is a single entry. + if (filterListEntryStructPointer->singleAppliedEntry) // There is a single entry. { // Process initial and final matches. - if (entryStructPointer->initialMatch && entryStructPointer->finalMatch) // This is both an initial and final match. + if (filterListEntryStructPointer->initialMatch && filterListEntryStructPointer->finalMatch) // This is both an initial and final match. { // Check the URL against the applied entry. - if (urlString == entryStructPointer->appliedEntryList[0]) + if (urlString == filterListEntryStructPointer->appliedEntryList[0]) { // Set the matched URL type. requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } - else if (entryStructPointer->initialMatch) // This is an initial match. + else if (filterListEntryStructPointer->initialMatch) // This is an initial match. { // Check the URL against the applied entry. - if (urlString.startsWith(entryStructPointer->appliedEntryList[0])) + if (urlString.startsWith(filterListEntryStructPointer->appliedEntryList[0])) { // Set the matched URL type. requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } - else if (entryStructPointer->finalMatch) // This is a final match. + else if (filterListEntryStructPointer->finalMatch) // This is a final match. { // Check the URL against the applied entry. - if (urlString.endsWith(entryStructPointer->appliedEntryList[0])) + if (urlString.endsWith(filterListEntryStructPointer->appliedEntryList[0])) { // Set the matched URL type. requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } else // There is no initial or final matching. { // Check if the URL string contains the applied entry. - if (urlString.contains(entryStructPointer->appliedEntryList[0])) + if (urlString.contains(filterListEntryStructPointer->appliedEntryList[0])) { // Set the matched URL type. requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } } else // There are multiple entries. { // Process initial and final matches. - if (entryStructPointer->initialMatch && entryStructPointer->finalMatch) // This is both an initial and final match. + if (filterListEntryStructPointer->initialMatch && filterListEntryStructPointer->finalMatch) // This is both an initial and final match. { // Check the URL. - if (urlString.startsWith(entryStructPointer->appliedEntryList[0])) + if (urlString.startsWith(filterListEntryStructPointer->appliedEntryList[0])) { // Get the number of characters to remove from the front of the URL string. - int charactersToRemove = entryStructPointer->appliedEntryList[0].size(); + int charactersToRemove = filterListEntryStructPointer->appliedEntryList[0].size(); // Remove the entry from the front of the URL string copies. urlString.remove(0, charactersToRemove); // Get the entry locations. - int penultimateEntryNumber = (entryStructPointer->sizeOfAppliedEntryList - 1); + int penultimateEntryNumber = (filterListEntryStructPointer->sizeOfAppliedEntryList - 1); int ultimateEntryIndex = penultimateEntryNumber; // Create a URL matches flag. @@ -374,13 +374,13 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf for (int i = 1; i < penultimateEntryNumber; ++i) { // Get the applied entry index, which will be `-1` if it doesn't exist. - int appliedEntryIndex = urlString.indexOf(entryStructPointer->appliedEntryList[i]); + int appliedEntryIndex = urlString.indexOf(filterListEntryStructPointer->appliedEntryList[i]); // Check if the entry was found. if (appliedEntryIndex >= 0) // The entry is contained in the URL string. { // Get the number of characters to remove from the front of the URL strings. - int charactersToRemove = appliedEntryIndex + entryStructPointer->appliedEntryList[i].size(); + int charactersToRemove = appliedEntryIndex + filterListEntryStructPointer->appliedEntryList[i].size(); // Remove the entry from the front of the URL string copies. urlString.remove(0, charactersToRemove); @@ -395,24 +395,24 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf // Check the final entry if the URL still matches. if (urlMatches) { - if (urlString.endsWith(entryStructPointer->appliedEntryList[ultimateEntryIndex])) // The URL string ends with the last applied entry. + if (urlString.endsWith(filterListEntryStructPointer->appliedEntryList[ultimateEntryIndex])) // The URL string ends with the last applied entry. { // Set the matched URL type. requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } } } - else if (entryStructPointer->initialMatch) // This is an initial match. + else if (filterListEntryStructPointer->initialMatch) // This is an initial match. { // Check the URL. - if (urlString.startsWith(entryStructPointer->appliedEntryList[0])) + if (urlString.startsWith(filterListEntryStructPointer->appliedEntryList[0])) { // Get the number of characters to remove from the front of the URL strings. - int charactersToRemove = entryStructPointer->appliedEntryList[0].size(); + int charactersToRemove = filterListEntryStructPointer->appliedEntryList[0].size(); // Remove the entry from the front of the URL string copies. urlString.remove(0, charactersToRemove); @@ -420,16 +420,16 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf // Create a URL matches flag. bool urlMatches = true; - for (int i = 1; i < entryStructPointer->sizeOfAppliedEntryList; ++i) + for (int i = 1; i < filterListEntryStructPointer->sizeOfAppliedEntryList; ++i) { // Get the applied entry index, which will be `-1` if it doesn't exist. - int appliedEntryIndex = urlString.indexOf(entryStructPointer->appliedEntryList[i]); + int appliedEntryIndex = urlString.indexOf(filterListEntryStructPointer->appliedEntryList[i]); // Check if the entry was found. if (appliedEntryIndex >= 0) // The entry is contained in the URL string. { // Get the number of characters to remove from the front of the URL strings. - int charactersToRemove = appliedEntryIndex + entryStructPointer->appliedEntryList[i].size(); + int charactersToRemove = appliedEntryIndex + filterListEntryStructPointer->appliedEntryList[i].size(); // Remove the entry from the front of the URL string copies. urlString.remove(0, charactersToRemove); @@ -448,14 +448,14 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } } - else if (entryStructPointer->finalMatch) // This is a final match. + else if (filterListEntryStructPointer->finalMatch) // This is a final match. { // Get the entry locations. - int penultimateEntryNumber = (entryStructPointer->sizeOfAppliedEntryList - 1); + int penultimateEntryNumber = (filterListEntryStructPointer->sizeOfAppliedEntryList - 1); int ultimateEntryIndex = penultimateEntryNumber; // Create a URL matches flag. @@ -465,13 +465,13 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf for (int i = 0; i < penultimateEntryNumber; ++i) { // Get the applied entry index, which will be `-1` if it doesn't exist. - int appliedEntryIndex = urlString.indexOf(entryStructPointer->appliedEntryList[i]); + int appliedEntryIndex = urlString.indexOf(filterListEntryStructPointer->appliedEntryList[i]); // Check if the entry was found. if (appliedEntryIndex >= 0) // The entry is contained in the URL string. { // Get the number of characters to remove from the front of the URL strings. - int charactersToRemove = appliedEntryIndex + entryStructPointer->appliedEntryList[i].size(); + int charactersToRemove = appliedEntryIndex + filterListEntryStructPointer->appliedEntryList[i].size(); // Remove the entry from the front of the URL string copies. urlString.remove(0, charactersToRemove); @@ -486,13 +486,13 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf // Check the final entry if the URL still matches. if (urlMatches) { - if (urlString.endsWith(entryStructPointer->appliedEntryList[ultimateEntryIndex])) // The URL string ends with the last applied entry. + if (urlString.endsWith(filterListEntryStructPointer->appliedEntryList[ultimateEntryIndex])) // The URL string ends with the last applied entry. { // Set the matched URL type. requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } } @@ -501,16 +501,16 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf // Create a URL matches flag. bool urlMatches = true; - for (int i = 0; i < entryStructPointer->sizeOfAppliedEntryList; ++i) + for (int i = 0; i < filterListEntryStructPointer->sizeOfAppliedEntryList; ++i) { // Get the applied entry index, which will be `-1` if it doesn't exist. - int appliedEntryIndex = urlString.indexOf(entryStructPointer->appliedEntryList[i]); + int appliedEntryIndex = urlString.indexOf(filterListEntryStructPointer->appliedEntryList[i]); // Check if the entry was found. if (appliedEntryIndex >= 0) // The entry is contained in the URL string. { // Get the number of characters to remove from the front of the URL strings. - int charactersToRemove = appliedEntryIndex + entryStructPointer->appliedEntryList[i].size(); + int charactersToRemove = appliedEntryIndex + filterListEntryStructPointer->appliedEntryList[i].size(); // Remove the entry from the front of the URL string copies. urlString.remove(0, charactersToRemove); @@ -529,7 +529,7 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf requestStructPointer->matchedUrlType = requestUrlType; // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } } @@ -539,16 +539,16 @@ bool FilterListHelper::checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInf } bool FilterListHelper::checkRegularExpression(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const + FilterListEntryStruct *filterListEntryStructPointer) const { // Create an applied entry regular expression. - QRegularExpression appliedEntryRegularExpression(entryStructPointer->appliedEntryList[0]); + QRegularExpression appliedEntryRegularExpression(filterListEntryStructPointer->appliedEntryList[0]); // Check if the regular expression matches the applied entry. if (requestStructPointer->urlString.contains(appliedEntryRegularExpression)) { // Check the domain status. - return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkDomain(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } // If the regular expression doesn't match, return `true` to continue processing the URL request. @@ -556,34 +556,34 @@ bool FilterListHelper::checkRegularExpression(QWebEngineUrlRequestInfo &urlReque } bool FilterListHelper::checkDomain(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const + FilterListEntryStruct *filterListEntryStructPointer) const { // Check domain status. - if (entryStructPointer->domain == FilterOptionDisposition::Null) // Ignore domain status. + if (filterListEntryStructPointer->domain == FilterOptionDisposition::Null) // Ignore domain status. { // Check the third-party status. - return checkThirdParty(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkThirdParty(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } - else if (entryStructPointer->domain == FilterOptionDisposition::Apply) // Block requests from listed domains. + else if (filterListEntryStructPointer->domain == FilterOptionDisposition::Apply) // Block requests from listed domains. { // Check each domain. - for (QString blockedDomain : entryStructPointer->domainList) + for (QString blockedDomain : filterListEntryStructPointer->domainList) { // Check if the request came from a blocked domain. if (requestStructPointer->firstPartyHost.endsWith(blockedDomain)) { // Check the third-party status. - return checkThirdParty(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkThirdParty(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } } - else if (entryStructPointer->domain == FilterOptionDisposition::Override) // Block domains that are not overridden. + else if (filterListEntryStructPointer->domain == FilterOptionDisposition::Override) // Block domains that are not overridden. { // Create a block domain flag. bool blockDomain = true; // Check each overridden domain. - for (QString overriddenDomain : entryStructPointer->domainList) + for (QString overriddenDomain : filterListEntryStructPointer->domainList) { // Check if the request came from an overridden domain. if (requestStructPointer->firstPartyHost.endsWith(overriddenDomain)) @@ -597,7 +597,7 @@ bool FilterListHelper::checkDomain(QWebEngineUrlRequestInfo &urlRequestInfo, Req if (blockDomain) { // Check the third-party status. - return checkThirdParty(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkThirdParty(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } @@ -606,49 +606,49 @@ bool FilterListHelper::checkDomain(QWebEngineUrlRequestInfo &urlRequestInfo, Req } bool FilterListHelper::checkThirdParty(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const + FilterListEntryStruct *filterListEntryStructPointer) const { // Check third-party status. - if (entryStructPointer->thirdParty == FilterOptionDisposition::Null) // Ignore third-party status. + if (filterListEntryStructPointer->thirdParty == FilterOptionDisposition::Null) // Ignore third-party status. { // Check if request options are applied. - if (entryStructPointer->hasRequestOptions) // Request options are applied. + if (filterListEntryStructPointer->hasRequestOptions) // Request options are applied. { // Check the request options. - return checkRequestOptions(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkRequestOptions(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } else // Request options are not applied. { // Process the request. - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } - else if ((entryStructPointer->thirdParty == FilterOptionDisposition::Apply) && requestStructPointer->isThirdPartyRequest) // Block third-party request. + else if ((filterListEntryStructPointer->thirdParty == FilterOptionDisposition::Apply) && requestStructPointer->isThirdPartyRequest) // Block third-party request. { // Check if request options are applied. - if (entryStructPointer->hasRequestOptions) // Request options are applied. + if (filterListEntryStructPointer->hasRequestOptions) // Request options are applied. { // Check the request options. - return checkRequestOptions(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkRequestOptions(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } else // Request options are not applied. { // Process the request. - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } - else if ((entryStructPointer->thirdParty == FilterOptionDisposition::Override) && !requestStructPointer->isThirdPartyRequest) // Block first-party requests. + else if ((filterListEntryStructPointer->thirdParty == FilterOptionDisposition::Override) && !requestStructPointer->isThirdPartyRequest) // Block first-party requests. { // Check if request options are applied. - if (entryStructPointer->hasRequestOptions) // Request options are applied. + if (filterListEntryStructPointer->hasRequestOptions) // Request options are applied. { // Check the request options. - return checkRequestOptions(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return checkRequestOptions(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } else // Request options are not applied. { // Process the request. - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); } } @@ -657,31 +657,31 @@ bool FilterListHelper::checkThirdParty(QWebEngineUrlRequestInfo &urlRequestInfo, } bool FilterListHelper::checkRequestOptions(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const + FilterListEntryStruct *filterListEntryStructPointer) const { // Process font requests. - if ((entryStructPointer->font == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeFontResource)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->font == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeFontResource)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process image requests. - if ((entryStructPointer->image == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeImage)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->image == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeImage)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process main frame requests. - if ((entryStructPointer->mainFrame == FilterOptionDisposition::Apply) && ((requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) || + if ((filterListEntryStructPointer->mainFrame == FilterOptionDisposition::Apply) && ((requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeNavigationPreloadMainFrame))) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process media requests. - if ((entryStructPointer->media == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeMedia)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->media == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeMedia)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process object requests. - if ((entryStructPointer->object == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeObject)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->object == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeObject)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process other requests. - if ((entryStructPointer->other == FilterOptionDisposition::Apply) && ((requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeSubResource) || + if ((filterListEntryStructPointer->other == FilterOptionDisposition::Apply) && ((requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeSubResource) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeWorker) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeSharedWorker) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypePrefetch) || @@ -690,39 +690,39 @@ bool FilterListHelper::checkRequestOptions(QWebEngineUrlRequestInfo &urlRequestI (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeCspReport) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypePluginResource) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeUnknown))) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process ping requests - if ((entryStructPointer->ping == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypePing)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->ping == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypePing)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process script requests. - if ((entryStructPointer->script == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeScript)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->script == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeScript)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process style sheet requests. - if ((entryStructPointer->styleSheet == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeStylesheet)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->styleSheet == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeStylesheet)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process sub resource requests. - if ((entryStructPointer->subFrame == FilterOptionDisposition::Apply) && ((requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeSubFrame) || + if ((filterListEntryStructPointer->subFrame == FilterOptionDisposition::Apply) && ((requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeSubFrame) || (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeNavigationPreloadSubFrame))) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process web socket requests. - if ((entryStructPointer->webSocket == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeWebSocket)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->webSocket == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeWebSocket)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // Process XML HTTP requests. - if ((entryStructPointer->xmlHttpRequest == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeXhr)) - return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, entryStructPointer); + if ((filterListEntryStructPointer->xmlHttpRequest == FilterOptionDisposition::Apply) && (requestStructPointer->resourceTypeInt == QWebEngineUrlRequestInfo::ResourceTypeXhr)) + return processRequest(urlRequestInfo, requestStructPointer, filterListTitle, sublistInt, filterListEntryStructPointer); // The request options specified don't match this request. Return `true` to continue processing the URL request. return true; } bool FilterListHelper::processRequest(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const + FilterListEntryStruct *filterListEntryStructPointer) const { // Set the request disposition. if (sublistInt <= 2) @@ -733,7 +733,7 @@ bool FilterListHelper::processRequest(QWebEngineUrlRequestInfo &urlRequestInfo, // Populate the request struct. requestStructPointer->filterListTitle = filterListTitle; requestStructPointer->sublistInt = sublistInt; - requestStructPointer->entryStruct = *entryStructPointer; + requestStructPointer->filterListEntryStruct = *filterListEntryStructPointer; // Block the request if specified. if (requestStructPointer->dispositionInt == BLOCKED) @@ -846,88 +846,87 @@ FilterListStruct* FilterListHelper::populateFilterList(const QString &filterList // Populate the filter list file name. filterListStructPointer->filePath = filterListFileName; - // Create a filter list string. - QString filterListString; + // Create the temporary filter list entry string. + QString filterListEntryString; - // Process each line of the filter list. - while (filterListTextStream.readLineInto(&filterListString)) { - // Create an entry struct. - EntryStruct *entryStructPointer = new EntryStruct; + // Parse each line of the filter list. + while (filterListTextStream.readLineInto(&filterListEntryString)) { + // Create a filter list entry struct. + FilterListEntryStruct *filterListEntryStructPointer = new FilterListEntryStruct; // Store the original entry. - entryStructPointer->originalEntry = filterListString; + filterListEntryStructPointer->originalEntryString = filterListEntryString; - // Process the entry. - if (filterListString.isEmpty()) // Ignore empty lines. + // Parse the entry. + if (filterListEntryString.isEmpty()) // Ignore empty lines. { // Do nothing. // Log the dropping of the line. - //qDebug().noquote().nospace() << filterListString << " NOT added from " << filterListFileName << " (empty line)."; + //qDebug().noquote().nospace() << filterListEntryString << " NOT added from " << filterListFileName << " (empty line)."; } - else if (filterListString.startsWith(QLatin1Char('['))) // The line starts with `[`, which is the file format. + else if (filterListEntryString.startsWith(QLatin1Char('['))) // The line starts with `[`, which is the file format. { // Do nothing. // Log the dropping of the line. - //qDebug().noquote().nospace() << filterListString << " NOT added from " << filterListFileName << " (file format)."; + //qDebug().noquote().nospace() << filterListEntryString << " NOT added from " << filterListFileName << " (file format)."; } - else if (filterListString.contains(QLatin1String("##")) || - filterListString.contains(QLatin1String("#?#")) || - filterListString.contains(QLatin1String("#@#")) || - filterListString.contains(QLatin1String("#$#"))) // The line contains unimplemented content filtering. + else if (filterListEntryString.contains(QLatin1String("##")) || + filterListEntryString.contains(QLatin1String("#?#")) || + filterListEntryString.contains(QLatin1String("#@#")) || + filterListEntryString.contains(QLatin1String("#$#"))) // The line contains unimplemented content filtering. { // Do nothing. // Log the dropping of the line. - //qDebug().noquote().nospace() << filterListString << " NOT added from " << filterListFileName << " (content filtering)."; + //qDebug().noquote().nospace() << filterListEntryString << " NOT added from " << filterListFileName << " (content filtering)."; } - else if (filterListString.startsWith(QLatin1Char('!'))) // The line starts with `!`, which are comments. + else if (filterListEntryString.startsWith(QLatin1Char('!'))) // The line starts with `!`, which are comments. { - if (filterListString.startsWith(QLatin1String("! Title: "))) // The line contains the title. + if (filterListEntryString.startsWith(QLatin1String("! Title: "))) // The line contains the title. { // Add the title to the filter list struct. - filterListStructPointer->title = filterListString.remove(0, 9); + filterListStructPointer->title = filterListEntryString.remove(0, 9); // Log the addition of the filter list title. - //qDebug().noquote().nospace() << "Filter list title: " << filterListString << " added from " << filterListFileName; + //qDebug().noquote().nospace() << "Filter list title: " << filterListEntryString << " ADDED from " << filterListFileName << "."; } - else if (filterListString.startsWith(QLatin1String("! Version: "))) // The line contains the version. + else if (filterListEntryString.startsWith(QLatin1String("! Version: "))) // The line contains the version. { // Add the version to the filter list struct. - filterListStructPointer->version = filterListString.remove(0, 11); + filterListStructPointer->version = filterListEntryString.remove(0, 11); // Log the addition of the filter list version. - //qDebug().noquote().nospace() << "Filter list version: " << filterListString << " added from " << filterListFileName; + //qDebug().noquote().nospace() << "Filter list version: " << filterListEntryString << " ADDED from " << filterListFileName << "."; } + else // The comment is not important + { + // Else do nothing. - // Else do nothing. - - // Log the dropping of the line. - //qDebug().noquote().nospace() << originalFilterListString << " NOT added from " << filterListFileName; + // Log the dropping of the line. + //qDebug().noquote().nospace() << filterListEntryString << " NOT added from " << filterListFileName << " (comment)."; + } } - else // Process the filter options. + else // Process the entry. { // Get the index of the last dollar sign. - int indexOfLastDollarSign = filterListString.lastIndexOf(QLatin1Char('$')); + int indexOfLastDollarSign = filterListEntryString.lastIndexOf(QLatin1Char('$')); // Process the filter options if they exist. if (indexOfLastDollarSign > -1) { - // Get the filter options. - entryStructPointer->originalFilterOptions = filterListString.section(QLatin1Char('$'), -1); + // Store the original filter options. + filterListEntryStructPointer->originalFilterOptionsString = filterListEntryString.section(QLatin1Char('$'), -1); // Store the entry without the filter options as the filter list string. - filterListString.truncate(indexOfLastDollarSign); + filterListEntryString.truncate(indexOfLastDollarSign); // Split the filter options. - QStringList originalFilterOptionsList = entryStructPointer->originalFilterOptions.split(QLatin1Char(',')); - - // Create an applied filter options list. - QStringList appliedFilterOptionsList; + QStringList originalFilterOptionsList = filterListEntryStructPointer->originalFilterOptionsString.split(QLatin1Char(',')); // Populate the applied filter options list. - for (QString filterOption : originalFilterOptionsList) + for (QString filterOptionString : originalFilterOptionsList) { // Only add filter options that are handled by Privacy Browser. // `csp` specifies a Content Security Policy, which isn't handled by Privacy Browser. @@ -940,416 +939,412 @@ FilterListStruct* FilterListHelper::populateFilterList(const QString &filterList // `generichide` isn't implemented by Privacy Browser. // `match-case` isn't currently implemented by Privacy Browser, but it could be if that became important. // `xhr` is probably a misspelling of `xmlhttprequest`. - if (!(filterOption.startsWith(QLatin1String("csp=")) || - filterOption.startsWith(QLatin1String("method=")) || - filterOption.startsWith(QLatin1String("redirect=")) || - filterOption.startsWith(QLatin1String("rewrite=")) || - (filterOption == (QLatin1String("1p"))) || - (filterOption == (QLatin1String("elemhide"))) || - (filterOption == (QLatin1String("genericblock"))) || - (filterOption == (QLatin1String("generichide"))) || - (filterOption == (QLatin1String("match-case"))) || - (filterOption == (QLatin1String("xhr"))))) - appliedFilterOptionsList.append(filterOption); + if (!(filterOptionString.startsWith(QLatin1String("csp=")) || + filterOptionString.startsWith(QLatin1String("method=")) || + filterOptionString.startsWith(QLatin1String("redirect=")) || + filterOptionString.startsWith(QLatin1String("rewrite=")) || + (filterOptionString == (QLatin1String("1p"))) || + (filterOptionString == (QLatin1String("elemhide"))) || + (filterOptionString == (QLatin1String("genericblock"))) || + (filterOptionString == (QLatin1String("generichide"))) || + (filterOptionString == (QLatin1String("match-case"))) || + (filterOptionString == (QLatin1String("xhr"))))) + // Add the filter option to the applied filter options list. + filterListEntryStructPointer->appliedFilterOptionsList.append(filterOptionString); } - // Store the applied filter options list. - entryStructPointer->appliedFilterOptionsList = appliedFilterOptionsList; - // Initialize an override struct. - OverrideStruct overrideStruct; + FilterOptionsOverrideStruct filterOptionsOverrideStruct; // Populate the filter options entries. - for (QString filterOption : appliedFilterOptionsList) + for (QString filterOptionString : filterListEntryStructPointer->appliedFilterOptionsList) { // Parse the filter options. - if (filterOption.startsWith(QLatin1String("domain="))) // Domain. + if (filterOptionString.startsWith(QLatin1String("domain="))) // Domain. { // Remove `domain=` from the filter option. - filterOption.remove(0, 7); - - // Store the domain list. - entryStructPointer->domainList = filterOption.split(QLatin1Char('|')); + filterOptionString.remove(0, 7); - // Set the disposition. - if (entryStructPointer->domainList[0].startsWith(QLatin1Char('~'))) // Override domains. + // Set the disposition according to the domain type. + if (filterOptionString.contains(QLatin1Char('~'))) // Override domains. { - // Populate the domain filter disposition. - entryStructPointer->domain = FilterOptionDisposition::Override; + // Remove the tilde from the beginning of each domain. + filterOptionString.remove(QLatin1Char('~')); - // Remove the initial `~` from each domain. - entryStructPointer->domainList.replaceInStrings(QLatin1String("~"), QLatin1String("")); + // Populate the domain filter disposition. + filterListEntryStructPointer->domain = FilterOptionDisposition::Override; } else // Standard domains. { // Populate the domain filter disposition. - entryStructPointer->domain = FilterOptionDisposition::Apply; + filterListEntryStructPointer->domain = FilterOptionDisposition::Apply; } + + // Store the domain list. + filterListEntryStructPointer->domainList = filterOptionString.split(QLatin1Char('|')); } - else if (filterOption == QLatin1String("third-party")) // Third-party. + else if (filterOptionString == QLatin1String("third-party")) // Third-party. { // Populate the third-party filter disposition. - entryStructPointer->thirdParty = FilterOptionDisposition::Apply; + filterListEntryStructPointer->thirdParty = FilterOptionDisposition::Apply; } - else if (filterOption == QLatin1String("~third-party")) // Third-party override. + else if (filterOptionString == QLatin1String("~third-party")) // Third-party override. { // Populate the third-party filter disposition. - entryStructPointer->thirdParty = FilterOptionDisposition::Override; + filterListEntryStructPointer->thirdParty = FilterOptionDisposition::Override; } - else if ((filterOption == QLatin1String("document")) || (filterOption == QLatin1String("popup"))) // Document (and popup). + else if ((filterOptionString == QLatin1String("document")) || (filterOptionString == QLatin1String("popup"))) // Document (and popup). { // Populate the main frame disposition. - entryStructPointer->mainFrame = FilterOptionDisposition::Apply; + filterListEntryStructPointer->mainFrame = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("font")) // Font. + else if (filterOptionString == QLatin1String("font")) // Font. { // Populate the font disposition. - entryStructPointer->font = FilterOptionDisposition::Apply; + filterListEntryStructPointer->font = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("image")) // Image. + else if (filterOptionString == QLatin1String("image")) // Image. { // Populate the image disposition. - entryStructPointer->image = FilterOptionDisposition::Apply; + filterListEntryStructPointer->image = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("media")) // Media. + else if (filterOptionString == QLatin1String("media")) // Media. { // Populate the media disposition. - entryStructPointer->media = FilterOptionDisposition::Apply; + filterListEntryStructPointer->media = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("object")) // Object. + else if (filterOptionString == QLatin1String("object")) // Object. { // Populate the object disposition. - entryStructPointer->object = FilterOptionDisposition::Apply; + filterListEntryStructPointer->object = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if ((filterOption == QLatin1String("other")) || (filterOption == QLatin1String("webrtc"))) // Other. + else if ((filterOptionString == QLatin1String("other")) || (filterOptionString == QLatin1String("webrtc"))) // Other. { // Populate the other disposition. - entryStructPointer->other = FilterOptionDisposition::Apply; + filterListEntryStructPointer->other = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("ping")) // Ping. + else if (filterOptionString == QLatin1String("ping")) // Ping. { // Populate the ping disposition. - entryStructPointer->ping = FilterOptionDisposition::Apply; + filterListEntryStructPointer->ping = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("script")) // Script. + else if (filterOptionString == QLatin1String("script")) // Script. { // Populate the script disposition. - entryStructPointer->script = FilterOptionDisposition::Apply; + filterListEntryStructPointer->script = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("stylesheet")) // Style sheet. + else if (filterOptionString == QLatin1String("stylesheet")) // Style sheet. { // Populate the script disposition. - entryStructPointer->styleSheet = FilterOptionDisposition::Apply; + filterListEntryStructPointer->styleSheet = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("subdocument")) // Sub document. + else if (filterOptionString == QLatin1String("subdocument")) // Sub document. { // Populate the sub resource disposition. - entryStructPointer->subFrame = FilterOptionDisposition::Apply; + filterListEntryStructPointer->subFrame = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("websocket")) // Web socket. + else if (filterOptionString == QLatin1String("websocket")) // Web socket. { // Populate the web socket disposition. - entryStructPointer->webSocket = FilterOptionDisposition::Apply; + filterListEntryStructPointer->webSocket = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("xmlhttprequest")) // XML HTTP request. + else if (filterOptionString == QLatin1String("xmlhttprequest")) // XML HTTP request. { //Populate the XML HTTP request disposition. - entryStructPointer->xmlHttpRequest = FilterOptionDisposition::Apply; + filterListEntryStructPointer->xmlHttpRequest = FilterOptionDisposition::Apply; // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; } - else if (filterOption == QLatin1String("~document")) // Document override. + else if (filterOptionString == QLatin1String("~document")) // Document override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.mainFrame = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.mainFrame = true; } - else if (filterOption == QLatin1String("~font")) // Font override. + else if (filterOptionString == QLatin1String("~font")) // Font override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.font = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.font = true; } - else if (filterOption == QLatin1String("~image")) // Image override. + else if (filterOptionString == QLatin1String("~image")) // Image override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.image = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.image = true; } - else if (filterOption == QLatin1String("~media")) // Media override. + else if (filterOptionString == QLatin1String("~media")) // Media override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.media = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.media = true; } - else if (filterOption == QLatin1String("~object")) // Object override. + else if (filterOptionString == QLatin1String("~object")) // Object override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.object = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.object = true; } - else if ((filterOption == QLatin1String("~other")) || (filterOption == QLatin1String("~webrtc"))) // Other override. + else if ((filterOptionString == QLatin1String("~other")) || (filterOptionString == QLatin1String("~webrtc"))) // Other override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.other = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.other = true; } - else if (filterOption == QLatin1String("~ping")) // Ping override. + else if (filterOptionString == QLatin1String("~ping")) // Ping override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.ping = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.ping = true; } - else if (filterOption == QLatin1String("~script")) // Script override. + else if (filterOptionString == QLatin1String("~script")) // Script override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.script = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.script = true; } - else if (filterOption == QLatin1String("~stylesheet")) // Style sheet override. + else if (filterOptionString == QLatin1String("~stylesheet")) // Style sheet override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.styleSheet = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.styleSheet = true; } - else if (filterOption == QLatin1String("~subdocument")) // Sub document override. + else if (filterOptionString == QLatin1String("~subdocument")) // Sub document override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.subFrame = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.subFrame = true; } - else if (filterOption == QLatin1String("~websocket")) // Web socket override. + else if (filterOptionString == QLatin1String("~websocket")) // Web socket override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.webSocket = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.webSocket = true; } - else if (filterOption == QLatin1String("~xmlhttprequest")) // XML HTTP request override. + else if (filterOptionString == QLatin1String("~xmlhttprequest")) // XML HTTP request override. { // Populate the override struct. - overrideStruct.hasOverride = true; - overrideStruct.xmlHttpRequest = true; + filterOptionsOverrideStruct.hasOverride = true; + filterOptionsOverrideStruct.xmlHttpRequest = true; } } // Apply the overrides. - if (overrideStruct.hasOverride) + if (filterOptionsOverrideStruct.hasOverride) { // Set the has request options flag. - entryStructPointer->hasRequestOptions = true; + filterListEntryStructPointer->hasRequestOptions = true; // Font. - if (overrideStruct.font) - entryStructPointer->font = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.font) + filterListEntryStructPointer->font = FilterOptionDisposition::Override; else - entryStructPointer->font = FilterOptionDisposition::Apply; + filterListEntryStructPointer->font = FilterOptionDisposition::Apply; // Image. - if (overrideStruct.image) - entryStructPointer->image = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.image) + filterListEntryStructPointer->image = FilterOptionDisposition::Override; else - entryStructPointer->image = FilterOptionDisposition::Apply; + filterListEntryStructPointer->image = FilterOptionDisposition::Apply; // Main Frame (document). - if (overrideStruct.mainFrame) - entryStructPointer->mainFrame = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.mainFrame) + filterListEntryStructPointer->mainFrame = FilterOptionDisposition::Override; else - entryStructPointer->mainFrame = FilterOptionDisposition::Apply; + filterListEntryStructPointer->mainFrame = FilterOptionDisposition::Apply; // Media. - if (overrideStruct.media) - entryStructPointer->media = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.media) + filterListEntryStructPointer->media = FilterOptionDisposition::Override; else - entryStructPointer->media = FilterOptionDisposition::Apply; + filterListEntryStructPointer->media = FilterOptionDisposition::Apply; // Object. - if (overrideStruct.object) - entryStructPointer->object = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.object) + filterListEntryStructPointer->object = FilterOptionDisposition::Override; else - entryStructPointer->object = FilterOptionDisposition::Apply; + filterListEntryStructPointer->object = FilterOptionDisposition::Apply; // Other. - if (overrideStruct.other) - entryStructPointer->other = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.other) + filterListEntryStructPointer->other = FilterOptionDisposition::Override; else - entryStructPointer->other = FilterOptionDisposition::Apply; + filterListEntryStructPointer->other = FilterOptionDisposition::Apply; // Ping. - if (overrideStruct.ping) - entryStructPointer->ping = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.ping) + filterListEntryStructPointer->ping = FilterOptionDisposition::Override; else - entryStructPointer->ping = FilterOptionDisposition::Apply; + filterListEntryStructPointer->ping = FilterOptionDisposition::Apply; // Script. - if (overrideStruct.script) - entryStructPointer->script = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.script) + filterListEntryStructPointer->script = FilterOptionDisposition::Override; else - entryStructPointer->script = FilterOptionDisposition::Apply; + filterListEntryStructPointer->script = FilterOptionDisposition::Apply; // Style Sheet. - if (overrideStruct.styleSheet) - entryStructPointer->styleSheet = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.styleSheet) + filterListEntryStructPointer->styleSheet = FilterOptionDisposition::Override; else - entryStructPointer->styleSheet = FilterOptionDisposition::Apply; + filterListEntryStructPointer->styleSheet = FilterOptionDisposition::Apply; // Sub Resource. - if (overrideStruct.subFrame) - entryStructPointer->subFrame = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.subFrame) + filterListEntryStructPointer->subFrame = FilterOptionDisposition::Override; else - entryStructPointer->subFrame = FilterOptionDisposition::Apply; + filterListEntryStructPointer->subFrame = FilterOptionDisposition::Apply; // Web Socket. - if (overrideStruct.webSocket) - entryStructPointer->webSocket = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.webSocket) + filterListEntryStructPointer->webSocket = FilterOptionDisposition::Override; else - entryStructPointer->webSocket = FilterOptionDisposition::Apply; + filterListEntryStructPointer->webSocket = FilterOptionDisposition::Apply; // XML HTTP Request. - if (overrideStruct.xmlHttpRequest) - entryStructPointer->xmlHttpRequest = FilterOptionDisposition::Override; + if (filterOptionsOverrideStruct.xmlHttpRequest) + filterListEntryStructPointer->xmlHttpRequest = FilterOptionDisposition::Override; else - entryStructPointer->xmlHttpRequest = FilterOptionDisposition::Apply; + filterListEntryStructPointer->xmlHttpRequest = FilterOptionDisposition::Apply; } } // Finish processing filter options. - - - if ((entryStructPointer->originalFilterOptions == QLatin1String("1p")) || - (entryStructPointer->originalFilterOptions == QLatin1String("elemhide")) || - (entryStructPointer->originalFilterOptions == QLatin1String("genericblock")) || - (entryStructPointer->originalFilterOptions == QLatin1String("generichide")) || - (entryStructPointer->originalFilterOptions == QLatin1String("match-case")) || - (entryStructPointer->originalFilterOptions == QLatin1String("xhr"))) // There is a single filter option that Privacy Browser cannot process. + // Process the base entry. + if ((filterListEntryStructPointer->originalFilterOptionsString.length() > 0) && + !filterListEntryStructPointer->hasRequestOptions && + (filterListEntryStructPointer->domain == FilterOptionDisposition::Null) && + (filterListEntryStructPointer->thirdParty == FilterOptionDisposition::Null)) + // There were filter options, but they have all been removed because they don't apply to Privacy Browser. { - // Ignore entries that contain a single, unsupported filter option. See . - // `1p` is not an official filter option. - // `elemhide` isn't implemented by Privacy Browser. - // `genericblock` isn't implemented by Privacy Browser. - // `generichide` isn't implemented by Privacy Browser. - // `match-case` isn't currently implemented by Privacy Browser, but it could be if that became important. - // `xhr` is probably a misspelling of `xmlhttprequest`. + // Ignore these entries as they will have unintended consequences. // Log the dropping of the entry. - //qDebug().noquote().nospace() << "Unsupported filter option: " << entryStructPointer->originalEntry << " NOT added from " << filterListFileName << "."; + //qDebug().noquote().nospace() << "Unsupported filter options: " << filterListEntryStructPointer->originalEntryString << " NOT added from " << filterListFileName << "."; } - else if (filterListString.isEmpty() && !entryStructPointer->hasRequestOptions) // There are no applied entries and no request options. + else if (filterListEntryString.isEmpty() && !filterListEntryStructPointer->hasRequestOptions) // There are no applied entries and no request options. { // Ignore these entries as they will block all requests generally or for a specified domain. Typically these are left over after removing `csp=` filter options. // Log the dropping of the entry. - //qDebug().noquote().nospace() << entryStructPointer->originalEntry << " NOT added from " << filterListFileName << "."; + //qDebug().noquote().nospace() << "Nothing left is applied: " << filterListEntryStructPointer->originalEntryString << " NOT added from " << filterListFileName << "."; } - else if (filterListString.startsWith(QLatin1String("@@"))) // Process an allow list entry. + else if (filterListEntryString.startsWith(QLatin1String("@@"))) // Process an allow list entry. { // Remove the initial `@@`. - filterListString.remove(0, 2); + filterListEntryString.remove(0, 2); - if (filterListString.startsWith(QLatin1String("||"))) // Process an initial domain allow list entry. + if (filterListEntryString.startsWith(QLatin1String("||"))) // Process an initial domain allow list entry. { // Remove the initial `||`. - filterListString.remove(0, 2); + filterListEntryString.remove(0, 2); // Set the initial match flag. - entryStructPointer->initialMatch = true; + filterListEntryStructPointer->initialMatch = true; // Prepare the filter list string. - prepareFilterListString(filterListString, entryStructPointer); + prepareFilterListString(filterListEntryString, filterListEntryStructPointer); // Add the entry struct to the initial domain allow list. - filterListStructPointer->initialDomainAllowListPointer->push_front(entryStructPointer); + filterListStructPointer->initialDomainAllowListPointer->push_front(filterListEntryStructPointer); // Log the addition to the filter list. - //qDebug().noquote().nospace() << entryStructPointer->originalEntry << " added to Initial Domain Allow List from " << filterListFileName << "."; + //qDebug().noquote().nospace() << filterListEntryStructPointer->originalEntry << " added to Initial Domain Allow List from " << filterListFileName << "."; } - else if (filterListString.contains(QLatin1String("\\"))) // Process a regular expression allow list entry. + else if (filterListEntryString.contains(QLatin1String("\\"))) // Process a regular expression allow list entry. { // Add the regular expression to the applied entry list. - entryStructPointer->appliedEntryList.append(filterListString); + filterListEntryStructPointer->appliedEntryList.append(filterListEntryString); // Add the entry struct to the regular expression allow list. - filterListStructPointer->regularExpressionAllowListPointer->push_front(entryStructPointer); + filterListStructPointer->regularExpressionAllowListPointer->push_front(filterListEntryStructPointer); + + // Log the addition to the filter list. + //qDebug().noquote().nospace() << filterListEntryStructPointer->originalEntry << " added to Regular Expression Allow List from " << filterListFileName << "."; } else // Process a main allow list entry. { // Prepare the filter list string. - prepareFilterListString(filterListString, entryStructPointer); + prepareFilterListString(filterListEntryString, filterListEntryStructPointer); // Add the entry struct to the main allow list. - filterListStructPointer->mainAllowListPointer->push_front(entryStructPointer); + filterListStructPointer->mainAllowListPointer->push_front(filterListEntryStructPointer); // Log the addition to the filter list. - //qDebug().noquote().nospace() << entryStructPointer->originalEntry << " added to Main Allow List from " << filterListFileName << "."; + //qDebug().noquote().nospace() << filterListEntryStructPointer->originalEntry << " added to Main Allow List from " << filterListFileName << "."; } } - else if (filterListString.startsWith(QLatin1String("||"))) // Process an initial domain block list entry. + else if (filterListEntryString.startsWith(QLatin1String("||"))) // Process an initial domain block list entry. { // Remove the initial `||`. - filterListString.remove(0, 2); + filterListEntryString.remove(0, 2); // Set the initial match flag. - entryStructPointer->initialMatch = true; + filterListEntryStructPointer->initialMatch = true; // Prepare the filter list string. - prepareFilterListString(filterListString, entryStructPointer); + prepareFilterListString(filterListEntryString, filterListEntryStructPointer); // Add the entry struct to the initial domain block list. - filterListStructPointer->initialDomainBlockListPointer->push_front(entryStructPointer); + filterListStructPointer->initialDomainBlockListPointer->push_front(filterListEntryStructPointer); // Log the addition to the filter list. - //qDebug().noquote().nospace() << entryStructPointer->originalEntry << " added to Initial Domain Block List from " << filterListFileName << "."; + //qDebug().noquote().nospace() << filterListEntryStructPointer->originalEntryString << " added to Initial Domain Block List from " << filterListFileName << "."; } - else if (filterListString.contains(QLatin1String("\\"))) // Process a regular expression block list entry. + else if (filterListEntryString.contains(QLatin1String("\\"))) // Process a regular expression block list entry. { // Add the regular expression to the applied entry list. - entryStructPointer->appliedEntryList.append(filterListString); + filterListEntryStructPointer->appliedEntryList.append(filterListEntryString); // Add the entry struct to the regular expression block list. - filterListStructPointer->regularExpressionBlockListPointer->push_front(entryStructPointer); + filterListStructPointer->regularExpressionBlockListPointer->push_front(filterListEntryStructPointer); + + // Log the addition to the filter list. + //qDebug().noquote().nospace() << filterListEntryStructPointer->originalEntryString << " added to Regular Expression Block List from " << filterListFileName << "."; } else // Process a main block list entry. { // Prepare the filter list string. - prepareFilterListString(filterListString, entryStructPointer); + prepareFilterListString(filterListEntryString, filterListEntryStructPointer); // Add the entry struct to the main block list. - filterListStructPointer->mainBlockListPointer->push_front(entryStructPointer); + filterListStructPointer->mainBlockListPointer->push_front(filterListEntryStructPointer); // Log the addition to the filter list. - //qDebug().noquote().nospace() << entryStructPointer->originalEntry << " added to Main Block List from " << filterListFileName << "."; + //qDebug().noquote().nospace() << filterListEntryStructPointer->originalEntry << " added to Main Block List from " << filterListFileName << "."; } } } @@ -1357,46 +1352,46 @@ FilterListStruct* FilterListHelper::populateFilterList(const QString &filterList // Close the filter list file. filterListFile.close(); - // Return the filter list pair. + // Return the filter list struct pointer. return filterListStructPointer; } -void FilterListHelper::prepareFilterListString(QString &filterListString, EntryStruct *entryStructPointer) const +void FilterListHelper::prepareFilterListString(QString &filterListEntryString, FilterListEntryStruct *filterListEntryStructPointer) const { // Check if this is an initial match. - if (filterListString.startsWith(QLatin1Char('|'))) + if (filterListEntryString.startsWith(QLatin1Char('|'))) { // Strip the initial `|`. - filterListString.remove(0, 1); + filterListEntryString.remove(0, 1); // Set the initial match flag. - entryStructPointer->initialMatch = true; + filterListEntryStructPointer->initialMatch = true; } // Check if this is a final match. - if (filterListString.endsWith(QLatin1Char('|'))) + if (filterListEntryString.endsWith(QLatin1Char('|'))) { // Strip the final `|`. - filterListString.chop(1); + filterListEntryString.chop(1); // Set the final match flag. - entryStructPointer->finalMatch = true; + filterListEntryStructPointer->finalMatch = true; } // Remove the initial asterisk if it exists. - if (filterListString.startsWith(QLatin1Char('*'))) - filterListString.remove(0, 1); + if (filterListEntryString.startsWith(QLatin1Char('*'))) + filterListEntryString.remove(0, 1); // Remove the final asterisk if it exists. - if (filterListString.endsWith(QLatin1Char('*'))) - filterListString.chop(1); + if (filterListEntryString.endsWith(QLatin1Char('*'))) + filterListEntryString.chop(1); - // Split the filter list string and set it as the applied entry list. - entryStructPointer->appliedEntryList = filterListString.split(QLatin1Char('*')); + // Split the filter list entry string and set it as the applied entry list. + filterListEntryStructPointer->appliedEntryList = filterListEntryString.split(QLatin1Char('*')); // Store the size of the applied entry list. - entryStructPointer->sizeOfAppliedEntryList = entryStructPointer->appliedEntryList.size(); + filterListEntryStructPointer->sizeOfAppliedEntryList = filterListEntryStructPointer->appliedEntryList.size(); // Determine if this is a single applied entry (including an empty entry). - entryStructPointer->singleAppliedEntry = (entryStructPointer->sizeOfAppliedEntryList == 1); + filterListEntryStructPointer->singleAppliedEntry = (filterListEntryStructPointer->sizeOfAppliedEntryList == 1); } diff --git a/src/helpers/FilterListHelper.h b/src/helpers/FilterListHelper.h index 4115ae1..7904bcd 100644 --- a/src/helpers/FilterListHelper.h +++ b/src/helpers/FilterListHelper.h @@ -118,17 +118,19 @@ private: // The private functions. bool checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, QString urlString, - const RequestUrlType requestUrlType, EntryStruct *entryStructPointer) const; + const RequestUrlType requestUrlType, FilterListEntryStruct *filterListEntryStructPointer) const; bool checkDomain(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const; + FilterListEntryStruct *filterListEntryStructPointer) const; bool checkIndividualList(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, FilterListStruct *filterListStructPointer) const; bool checkRegularExpression(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const; + FilterListEntryStruct *filterListEntryStructPointer) const; bool checkRequestOptions(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, - EntryStruct *entryStructPointer) const; - bool checkThirdParty(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, EntryStruct *entryStructPointer) const; + FilterListEntryStruct *filterListEntryStructPointer) const; + bool checkThirdParty(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, + FilterListEntryStruct *filterListEntryStructPointer) const; FilterListStruct* populateFilterList(const QString &filterListFileName) const; - void prepareFilterListString(QString &filterListString, EntryStruct *entryStructPointer) const; - bool processRequest(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, EntryStruct *entryStructPointer) const; + void prepareFilterListString(QString &filterListEntryString, FilterListEntryStruct *filterListEntryStructPointer) const; + bool processRequest(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, + FilterListEntryStruct *filterListEntryStructPointer) const; }; #endif diff --git a/src/structs/EntryStruct.h b/src/structs/FilterListEntryStruct.h similarity index 93% rename from src/structs/EntryStruct.h rename to src/structs/FilterListEntryStruct.h index d730392..1665888 100644 --- a/src/structs/EntryStruct.h +++ b/src/structs/FilterListEntryStruct.h @@ -17,8 +17,8 @@ * this program. If not, see . */ -#ifndef ENTRY_STRUCT_H -#define ENTRY_STRUCT_H +#ifndef FILTER_LIST_ENTRY_STRUCT_H +#define FILTER_LIST_ENTRY_STRUCT_H // Qt toolkit headers. #include @@ -30,11 +30,11 @@ enum FilterOptionDisposition Override = 2, }; -struct EntryStruct +struct FilterListEntryStruct { // The strings. - QString originalEntry; - QString originalFilterOptions; + QString originalEntryString; + QString originalFilterOptionsString; // The string lists. QStringList appliedEntryList; diff --git a/src/structs/FilterListStruct.h b/src/structs/FilterListStruct.h index c732f56..e0360de 100644 --- a/src/structs/FilterListStruct.h +++ b/src/structs/FilterListStruct.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-3.0-or-later - * SPDX-FileCopyrightText: 2024 Soren Stoutner + * SPDX-FileCopyrightText: 2024-2025 Soren Stoutner * * This file is part of Privacy Browser PC . * @@ -21,7 +21,7 @@ #define FILTER_LIST_STRUCT_H // Application headers. -#include "EntryStruct.h" +#include "FilterListEntryStruct.h" // C++ headers. #include @@ -37,11 +37,11 @@ struct FilterListStruct QString filePath; // The filter lists. - std::forward_list *mainAllowListPointer = new std::forward_list; - std::forward_list *initialDomainAllowListPointer = new std::forward_list; - std::forward_list *regularExpressionAllowListPointer = new std::forward_list; - std::forward_list *mainBlockListPointer = new std::forward_list; - std::forward_list *initialDomainBlockListPointer = new std::forward_list; - std::forward_list *regularExpressionBlockListPointer = new std::forward_list; + std::forward_list *mainAllowListPointer = new std::forward_list; + std::forward_list *initialDomainAllowListPointer = new std::forward_list; + std::forward_list *regularExpressionAllowListPointer = new std::forward_list; + std::forward_list *mainBlockListPointer = new std::forward_list; + std::forward_list *initialDomainBlockListPointer = new std::forward_list; + std::forward_list *regularExpressionBlockListPointer = new std::forward_list; }; #endif diff --git a/src/structs/OverrideStruct.h b/src/structs/FilterOptionsOverrideStruct.h similarity index 91% rename from src/structs/OverrideStruct.h rename to src/structs/FilterOptionsOverrideStruct.h index 25cb96d..ace99d8 100644 --- a/src/structs/OverrideStruct.h +++ b/src/structs/FilterOptionsOverrideStruct.h @@ -17,10 +17,10 @@ * this program. If not, see . */ -#ifndef OVERRIDESTRUCT_H -#define OVERRIDESTRUCT_H +#ifndef FILTER_OPTIONS_OVERRIDE_STRUCT_H +#define FILTER_OPTIONS_OVERRIDE_STRUCT_H -struct OverrideStruct +struct FilterOptionsOverrideStruct { bool hasOverride = false; bool font = false; diff --git a/src/structs/RequestStruct.h b/src/structs/RequestStruct.h index 85a6eab..d7d0d15 100644 --- a/src/structs/RequestStruct.h +++ b/src/structs/RequestStruct.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: GPL-3.0-or-later - * SPDX-FileCopyrightText: 2024 Soren Stoutner + * SPDX-FileCopyrightText: 2024-2025 Soren Stoutner * * This file is part of Privacy Browser PC . * @@ -21,7 +21,7 @@ #define REQUEST_STRUCT_H // Application headers. -#include "EntryStruct.h" +#include "FilterListEntryStruct.h" enum RequestUrlType { @@ -33,20 +33,29 @@ enum RequestUrlType struct RequestStruct { + // The ints. int dispositionInt = 0; // `0` is the default disposition. - EntryStruct entryStruct; - QString filterListTitle; - QString firstPartyHost; - bool isThirdPartyRequest; - RequestUrlType matchedUrlType; int navigationTypeInt; - QString requestMethodString; int resourceTypeInt; int sublistInt = -1; // The sublist should be initialized because it is not always set later. + + // The bools. + bool isThirdPartyRequest; + + // The enums. + RequestUrlType matchedUrlType; + + // The strings. + QString filterListTitle; + QString firstPartyHost; + QString requestMethodString; QString truncatedUrlString; QString truncatedUrlStringWithSeparators; QString urlString; QString urlStringWithSeparators; QString webPageUrlString; + + // The structs. + FilterListEntryStruct filterListEntryStruct; }; #endif -- 2.51.0