]> gitweb.stoutner.com Git - PrivacyBrowserPC.git/blobdiff - src/interceptors/UrlRequestInterceptor.cpp
Add a background tab action to the context menu. https://redmine.stoutner.com/issues/949
[PrivacyBrowserPC.git] / src / interceptors / UrlRequestInterceptor.cpp
index d4059285576e1c469ac76178fb50fcb912073e4a..83f104595ac8ab67e904d04b48b769b3c05556f8 100644 (file)
 // Application headers.
 #include "UrlRequestInterceptor.h"
 
+// KDE Framework headers.
+#include <KLocalizedString>
+
+// Qt framework headers.
+#include <QMessageBox>
+
 // Construct the class.
 UrlRequestInterceptor::UrlRequestInterceptor(QObject *parentObjectPointer) : QWebEngineUrlRequestInterceptor(parentObjectPointer) {}
 
 void UrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &urlRequestInfo)
 {
+    // Handle the request according to the resource type.
+    switch (urlRequestInfo.resourceType())
+    {
+        // A naughty HTTP ping request.
+        case QWebEngineUrlRequestInfo::ResourceTypePing:
+        {
+            // Block HTTP ping requests.
+            urlRequestInfo.block(true);
+
+            // Instantiate an HTTP ping blocked message box.
+            QMessageBox httpPingBlockedMessageBox;
+
+            // Set the icon.
+            httpPingBlockedMessageBox.setIcon(QMessageBox::Information);
+
+            // Set the window title.
+            httpPingBlockedMessageBox.setWindowTitle(i18nc("HTTP Ping blocked dialog title", "HTTP Ping Blocked"));
+
+            // Set the text.
+            httpPingBlockedMessageBox.setText(i18nc("HTTP Ping blocked dialog text", "This request has been blocked because it sends a naughty HTTP ping to %1.",
+                                                    urlRequestInfo.requestUrl().toString()));
+
+            // Set the standard button.
+            httpPingBlockedMessageBox.setStandardButtons(QMessageBox::Ok);
+
+            // Display the message box.
+            httpPingBlockedMessageBox.exec();
+
+            break;
+        }
+
+        default:
+        {
+            // Do nothing.
+            break;
+        }
+    }
+
     // Handle the request according to the navigation type.
     switch (urlRequestInfo.navigationType())
     {
         case QWebEngineUrlRequestInfo::NavigationTypeLink:
         case QWebEngineUrlRequestInfo::NavigationTypeTyped:
         case QWebEngineUrlRequestInfo::NavigationTypeBackForward:
+        // case QWebEngineUrlRequestInfo::NavigationTypeReload:  This can be uncommented once https://redmine.stoutner.com/issues/821 has been fixed.
         case QWebEngineUrlRequestInfo::NavigationTypeRedirect:
         {
             // Only check the hosts if the main URL is changing.
@@ -42,9 +87,7 @@ void UrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &urlReques
 
                 // Reapply the domain settings if the host is changing.
                 if (requestingHost != requestedHost)
-                {
                     emit applyDomainSettings(requestedHost);
-                }
             }
 
             break;
@@ -54,23 +97,4 @@ void UrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &urlReques
             // Do nothing.
             break;
     }
-
-    // Handle the request according to the resource type.
-    switch (urlRequestInfo.resourceType())
-    {
-        // A naughty HTTP ping request.
-        case QWebEngineUrlRequestInfo::ResourceTypePing:
-        {
-            // Block HTTP ping requests.
-            urlRequestInfo.block(true);
-
-            break;
-        }
-
-        default:
-        {
-            // Do nothing.
-            break;
-        }
-    }
 }