]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/widgets/PrivacyWebEngineView.h
Block all CSP requests. https://redmine.stoutner.com/issues/1193
[PrivacyBrowserPC.git] / src / widgets / PrivacyWebEngineView.h
index 95cc69f5b67d8397b030c27a6f987c5d8e7fc715..984d972b948f72af5bbae1d4f63981c7dc564457 100644 (file)
@@ -1,30 +1,34 @@
-/*
- * Copyright 2022-2024 Soren Stoutner <soren@stoutner.com>.
+/* SPDX-License-Identifier: GPL-3.0-or-later
+ * SPDX-FileCopyrightText: 2022-2025 Soren Stoutner <soren@stoutner.com>
  *
- * This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
+ * 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 PRIVACYWEBENGINEVIEW_H
-#define PRIVACYWEBENGINEVIEW_H
+#ifndef PRIVACY_WEBENGINE_VIEW_H
+#define PRIVACY_WEBENGINE_VIEW_H
+
+// Application headers.
+#include "structs/RequestStruct.h"
 
 // KDE framework headers.
 #include <KLineEdit>
 
-// Qt toolkit headers.
+// Qt framework headers.
 #include <QIcon>
+#include <QList>
 #include <QNetworkCookie>
 #include <QWebEngineFindTextResult>
 #include <QWebEngineView>
@@ -38,10 +42,24 @@ public:
     // The default constructor.
     explicit PrivacyWebEngineView(QWidget *parentWidgetPointer = nullptr);
 
+    // The public static constants.
+    static const int ULTRAPRIVACY = 0;
+    static const int ULTRALIST = 1;
+    static const int EASYPRIVACY = 2;
+    static const int EASYLIST = 3;
+    static const int FANBOYS_ANNOYANCE_LIST = 4;
+    static const int TOTAL = 5;
+
     // The public variables.
+    QVector<int> blockedRequestsVector = {0, 0, 0, 0, 0, 0};
     std::list<QNetworkCookie> *cookieListPointer = new std::list<QNetworkCookie>;
+    QString currentHost = QLatin1String("");
+    QString currentUrlText = QLatin1String("");
     double defaultZoomFactor = 1.00;
     QString domainSettingsName = QLatin1String("");
+    bool easyListEnabled = true;
+    bool easyPrivacyEnabled = true;
+    bool fanboysAnnoyanceListEnabled = true;
     QIcon favoriteIcon = QIcon::fromTheme(QLatin1String("globe"), QIcon::fromTheme(QLatin1String("applications-internet")));
     bool findCaseSensitive = false;
     QString findString = QLatin1String("");
@@ -50,29 +68,39 @@ public:
     bool isLoading = false;
     int loadProgressInt = -1;
     bool localStorageEnabled = false;
+    QList<RequestStruct *> *requestsListPointer = new QList<RequestStruct *>;
+    bool ultraListEnabled = true;
+    bool ultraPrivacyEnabled = true;
 
-    // The public functions.
-    void applyDomainSettings(const QString &hostname, const bool reloadWebsite);
-
-signals:
+Q_SIGNALS:
     // The signals.
+    void numberOfCookiesChanged(const int numberOfCookies) const;
     void displayHttpPingBlockedDialog(const QString &httpPingUrl) const;
-    void updateCookiesAction(const int numberOfCookies) const;
+    void requestBlocked(const QVector<int> blockedRequestsVector) const;
     void updateUi(const PrivacyWebEngineView *privacyWebEngineViewPointer) const;
 
 public Q_SLOTS:
     // The public slots.
     void addCookieToList(const QNetworkCookie &cookie) const;
+    void applyDomainSettings(const QUrl &newUrl, const bool navigatingHistory);
     void removeCookieFromList(const QNetworkCookie &cookie) const;
 
 private Q_SLOTS:
     // The private slots.
-    void applyDomainSettingsWithoutReloading(const QString &hostname);
+    void clearRequestsList();
     void displayHttpPingDialog(const QString &httpPingUrl) const;
     void handleAuthenticationRequest(const QUrl &requestUrl, QAuthenticator *authenticatorPointer);
+    void manualOpenInNewTab();
+    void openWithChromium() const;
+    void openWithFirefox() const;
+    void saveHoveredLink(const QString &hoveredLink);
+    void storeRequest(RequestStruct *requestStructPointer);
+    void storeUpdatedUrl(const QUrl &newUrl);
 
 private:
     // The private variables.
+    QString hoveredLinkString;
+    bool manuallyOpeninginNewTab = false;
     KLineEdit *passwordLineEditPointer;
     KLineEdit *usernameLineEditPointer;
     QWebEngineProfile *webEngineProfilePointer;