-/*
- * Copyright 2024 Soren Stoutner <soren@stoutner.com>.
+/* SPDX-License-Identifier: GPL-3.0-or-later
+ * SPDX-FileCopyrightText: 2024-2025 Soren Stoutner <soren@stoutner.com>
*
* This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc/>.
*
- * Privacy Browser PC is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
*
- * Privacy Browser PC is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
*
- * You should have received a copy of the GNU General Public License
- * along with Privacy Browser PC. If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <https://www.gnu.org/licenses/>.
*/
-#ifndef FILTERLISTHELPER_H
-#define FILTERLISTHELPER_H
+#ifndef FILTER_LIST_HELPER_H
+#define FILTER_LIST_HELPER_H
// Application headers.
#include "structs/FilterListStruct.h"
#include "structs/RequestStruct.h"
-#include "structs/UrlStruct.h"
+#include "widgets/PrivacyWebEngineView.h"
// Qt framework headers.
#include <QString>
// The public static sublist constant integers.
static const int MAIN_ALLOWLIST = 0;
- static const int MAIN_BLOCKLIST = 1;
- static const int INITIAL_DOMAIN_BLOCKLIST = 2;
- static const int REGULAR_EXPRESSION_BLOCKLIST = 3;
+ static const int INITIAL_DOMAIN_ALLOWLIST = 1;
+ static const int REGULAR_EXPRESSION_ALLOWLIST = 2;
+ static const int MAIN_BLOCKLIST = 3;
+ static const int INITIAL_DOMAIN_BLOCKLIST = 4;
+ static const int REGULAR_EXPRESSION_BLOCKLIST = 5;
// The public variables.
FilterListStruct *easyListStructPointer;
FilterListStruct *ultraPrivacyStructPointer;
// The public functions.
- bool checkFilterLists(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer) const;
+ bool checkFilterLists(PrivacyWebEngineView *privacyWebEngineViewPointer, QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer) const;
QString getDispositionString(int dispositionInt) const;
QString getNavigationTypeString(int navigationTypeInt) const;
- QString getRequestOptionDispositionString(const FilterOptionEnum::Disposition filterOptionDisposition) const;
+ QString getRequestOptionDispositionString(const FilterOptionDisposition filterOptionDisposition) const;
QString getResourceTypeString(int resourceTypeInt) const;
QString getSublistName(int sublistInt) const;
QString NAVIGATION_TYPE_REDIRECT;
QString NAVIGATION_TYPE_OTHER;
- // The private translated resource type strings.
+ // The private translated resource type strings (in order of their values <https://doc.qt.io/qt-6/qwebengineurlrequestinfo.html#ResourceType-enum>).
QString RESOURCE_TYPE_MAIN_FRAME;
QString RESOURCE_TYPE_SUB_FRAME;
QString RESOURCE_TYPE_STYLESHEET;
QString RESOURCE_TYPE_PLUGIN_RESOURCE;
QString RESOURCE_TYPE_NAVIGATION_PRELOAD_MAIN_FRAME;
QString RESOURCE_TYPE_NAVIGATION_PRELOAD_SUB_FRAME;
+ QString RESOURCE_TYPE_WEB_SOCKET;
QString RESOURCE_TYPE_UNKNOWN;
+ QString RESOURCE_TYPE_JSON;
// The private translated sublist strings.
QString MAIN_ALLOWLIST_STRING;
+ QString INITIAL_DOMAIN_ALLOWLIST_STRING;
+ QString REGULAR_EXPRESSION_ALLOWLIST_STRING;
QString MAIN_BLOCKLIST_STRING;
QString INITIAL_DOMAIN_BLOCKLIST_STRING;
QString REGULAR_EXPRESSION_BLOCKLIST_STRING;
// The private functions.
- bool blockRequest(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, EntryStruct *entryStructPointer) const;
- bool checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInfo, UrlStruct &urlStruct, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt,
- EntryStruct *entryStructPointer, QString &urlString, QString &urlStringWithSeparators) const;
- bool checkDomain(QWebEngineUrlRequestInfo &urlRequestInfo, UrlStruct &urlStruct, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt,
+ bool checkAppliedEntry(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, QString urlString,
+ const RequestUrlType requestUrlType, EntryStruct *entryStructPointer) const;
+ bool checkDomain(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt,
EntryStruct *entryStructPointer) const;
- bool checkIndividualList(QWebEngineUrlRequestInfo &urlRequestInfo, UrlStruct &urlStruct, RequestStruct *requestStructPointer, FilterListStruct *filterListStructPointer) const;
- bool checkRegularExpression(QWebEngineUrlRequestInfo &urlRequestInfo, UrlStruct &urlStruct, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt,
+ bool checkIndividualList(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, FilterListStruct *filterListStructPointer) const;
+ bool checkRegularExpression(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt,
EntryStruct *entryStructPointer) const;
bool checkRequestOptions(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt,
EntryStruct *entryStructPointer) const;
- bool checkThirdParty(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const bool isThirdPartyRequest, const QString &filterListTitle, const int sublistInt,
- EntryStruct *entryStructPointer) const;
+ bool checkThirdParty(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, EntryStruct *entryStructPointer) const;
FilterListStruct* populateFilterList(const QString &filterListFileName) const;
- void populateRequestStruct(RequestStruct *requestStructPointer, const int disposition, const QString &filterListTitle, const int sublistInt, EntryStruct *entryStructPointer) const;
void prepareFilterListString(QString &filterListString, EntryStruct *entryStructPointer) const;
+ bool processRequest(QWebEngineUrlRequestInfo &urlRequestInfo, RequestStruct *requestStructPointer, const QString &filterListTitle, const int sublistInt, EntryStruct *entryStructPointer) const;
};
#endif