diff --git a/src/librssguard/network-web/adblock/adblockmanager.cpp b/src/librssguard/network-web/adblock/adblockmanager.cpp index 850f797a7..1f99dc1e1 100644 --- a/src/librssguard/network-web/adblock/adblockmanager.cpp +++ b/src/librssguard/network-web/adblock/adblockmanager.cpp @@ -47,6 +47,7 @@ BlockingResult AdBlockManager::block(const AdblockRequestInfo& request) { const QString firstparty_url_string = request.firstPartyUrl().toEncoded().toLower(); const QString url_scheme = request.requestUrl().scheme().toLower(); const QPair url_pair = { firstparty_url_string, url_string }; + const QString url_type = request.resourceType(); if (!canRunOnScheme(url_scheme)) { return { false }; @@ -62,7 +63,7 @@ BlockingResult AdBlockManager::block(const AdblockRequestInfo& request) { } try { - auto result = askServerIfBlocked(firstparty_url_string, url_string); + auto result = askServerIfBlocked(firstparty_url_string, url_string, url_type); m_cacheBlocks.insert(url_pair, result); @@ -193,13 +194,14 @@ void AdBlockManager::showDialog() { AdBlockDialog(qApp->mainFormWidget()).exec(); } -BlockingResult AdBlockManager::askServerIfBlocked(const QString& fp_url, const QString& url) const { +BlockingResult AdBlockManager::askServerIfBlocked(const QString& fp_url, const QString& url, const QString& url_type) const { QJsonObject req_obj; QByteArray out; QElapsedTimer tmr; req_obj["fp_url"] = fp_url; req_obj["url"] = url; + req_obj["url_type"] = url_type, req_obj["filter"] = true; tmr.start(); diff --git a/src/librssguard/network-web/adblock/adblockmanager.h b/src/librssguard/network-web/adblock/adblockmanager.h index 781765f50..832ffb2e9 100644 --- a/src/librssguard/network-web/adblock/adblockmanager.h +++ b/src/librssguard/network-web/adblock/adblockmanager.h @@ -62,7 +62,7 @@ class AdBlockManager : public QObject { void enabledChanged(bool enabled); private: - BlockingResult askServerIfBlocked(const QString& fp_url, const QString& url) const; + BlockingResult askServerIfBlocked(const QString& fp_url, const QString& url, const QString& url_type) const; QString askServerForCosmeticRules(const QString& url) const; QProcess* restartServer(int port); diff --git a/src/librssguard/network-web/adblock/adblockrequestinfo.cpp b/src/librssguard/network-web/adblock/adblockrequestinfo.cpp index ee25df99d..531d0aba2 100755 --- a/src/librssguard/network-web/adblock/adblockrequestinfo.cpp +++ b/src/librssguard/network-web/adblock/adblockrequestinfo.cpp @@ -12,22 +12,14 @@ AdblockRequestInfo::AdblockRequestInfo(const QUrl& url) { initialize(url); } -QWebEngineUrlRequestInfo::ResourceType AdblockRequestInfo::resourceType() const { +QString AdblockRequestInfo::resourceType() const { return m_resourceType; } -void AdblockRequestInfo::setResourceType(const QWebEngineUrlRequestInfo::ResourceType& resource_type) { +void AdblockRequestInfo::setResourceType(const QString& resource_type) { m_resourceType = resource_type; } -QWebEngineUrlRequestInfo::NavigationType AdblockRequestInfo::navigationType() const { - return m_navigationType; -} - -void AdblockRequestInfo::setNavigationType(const QWebEngineUrlRequestInfo::NavigationType& navigation_type) { - m_navigationType = navigation_type; -} - QUrl AdblockRequestInfo::requestUrl() const { return m_requestUrl; } @@ -54,16 +46,52 @@ void AdblockRequestInfo::setRequestMethod(const QByteArray& request_method) { void AdblockRequestInfo::initialize(const QWebEngineUrlRequestInfo& webengine_info) { setFirstPartyUrl(webengine_info.firstPartyUrl()); - setNavigationType(webengine_info.navigationType()); setRequestMethod(webengine_info.requestMethod()); setRequestUrl(webengine_info.requestUrl()); - setResourceType(webengine_info.resourceType()); + setResourceType(convertResourceType(webengine_info.resourceType())); } void AdblockRequestInfo::initialize(const QUrl& url) { setFirstPartyUrl(url); - setNavigationType(QWebEngineUrlRequestInfo::NavigationType::NavigationTypeTyped); setRequestMethod(QSL("GET").toLocal8Bit()); setRequestUrl(url); - setResourceType(QWebEngineUrlRequestInfo::ResourceType::ResourceTypeMainFrame); + setResourceType(convertResourceType(QWebEngineUrlRequestInfo::ResourceType::ResourceTypeMainFrame)); +} + +QString AdblockRequestInfo::convertResourceType(QWebEngineUrlRequestInfo::ResourceType rt) const { + switch (rt) { + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeStylesheet: + return QSL("stylesheet"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeScript: + return QSL("script"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeImage: + return QSL("image"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeFontResource: + return QSL("object"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeSubResource: + return QSL("object"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeObject: + return QSL("object"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeMedia: + return QSL("image"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeFavicon: + return QSL("image"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeXhr: + return QSL("xmlhttprequest"); + + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeSubFrame: + case QWebEngineUrlRequestInfo::ResourceType::ResourceTypeMainFrame: + return QSL("main_frame"); + + default: + return {}; + } } diff --git a/src/librssguard/network-web/adblock/adblockrequestinfo.h b/src/librssguard/network-web/adblock/adblockrequestinfo.h index 75142b914..ee54d0083 100755 --- a/src/librssguard/network-web/adblock/adblockrequestinfo.h +++ b/src/librssguard/network-web/adblock/adblockrequestinfo.h @@ -10,11 +10,8 @@ class AdblockRequestInfo { explicit AdblockRequestInfo(const QWebEngineUrlRequestInfo& webengine_info); explicit AdblockRequestInfo(const QUrl& url); - QWebEngineUrlRequestInfo::ResourceType resourceType() const; - void setResourceType(const QWebEngineUrlRequestInfo::ResourceType& resource_type); - - QWebEngineUrlRequestInfo::NavigationType navigationType() const; - void setNavigationType(const QWebEngineUrlRequestInfo::NavigationType& navigation_type); + QString resourceType() const; + void setResourceType(const QString& resource_type); QUrl requestUrl() const; void setRequestUrl(const QUrl& request_url); @@ -29,9 +26,10 @@ class AdblockRequestInfo { void initialize(const QWebEngineUrlRequestInfo& webengine_info); void initialize(const QUrl& url); + QString convertResourceType(QWebEngineUrlRequestInfo::ResourceType rt) const; + private: - QWebEngineUrlRequestInfo::ResourceType m_resourceType; - QWebEngineUrlRequestInfo::NavigationType m_navigationType; + QString m_resourceType; QUrl m_requestUrl; QUrl m_firstPartyUrl; QUrl m_initiator;