X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=src%2Finterceptors%2FUrlRequestInterceptor.cpp;h=83f104595ac8ab67e904d04b48b769b3c05556f8;hb=06a69a2d38bf73c0c5219f94c345b19142bb1646;hp=d4059285576e1c469ac76178fb50fcb912073e4a;hpb=2facce32fb6d97b52a7dc148044cae4b36a65d4c;p=PrivacyBrowserPC.git diff --git a/src/interceptors/UrlRequestInterceptor.cpp b/src/interceptors/UrlRequestInterceptor.cpp index d405928..83f1045 100644 --- a/src/interceptors/UrlRequestInterceptor.cpp +++ b/src/interceptors/UrlRequestInterceptor.cpp @@ -20,17 +20,62 @@ // Application headers. #include "UrlRequestInterceptor.h" +// KDE Framework headers. +#include + +// Qt framework headers. +#include + // 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; - } - } }