use resource types in adblocking too
This commit is contained in:
parent
d9c8246858
commit
e59dc591ef
@ -47,6 +47,7 @@ BlockingResult AdBlockManager::block(const AdblockRequestInfo& request) {
|
|||||||
const QString firstparty_url_string = request.firstPartyUrl().toEncoded().toLower();
|
const QString firstparty_url_string = request.firstPartyUrl().toEncoded().toLower();
|
||||||
const QString url_scheme = request.requestUrl().scheme().toLower();
|
const QString url_scheme = request.requestUrl().scheme().toLower();
|
||||||
const QPair<QString, QString> url_pair = { firstparty_url_string, url_string };
|
const QPair<QString, QString> url_pair = { firstparty_url_string, url_string };
|
||||||
|
const QString url_type = request.resourceType();
|
||||||
|
|
||||||
if (!canRunOnScheme(url_scheme)) {
|
if (!canRunOnScheme(url_scheme)) {
|
||||||
return { false };
|
return { false };
|
||||||
@ -62,7 +63,7 @@ BlockingResult AdBlockManager::block(const AdblockRequestInfo& request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
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);
|
m_cacheBlocks.insert(url_pair, result);
|
||||||
|
|
||||||
@ -193,13 +194,14 @@ void AdBlockManager::showDialog() {
|
|||||||
AdBlockDialog(qApp->mainFormWidget()).exec();
|
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;
|
QJsonObject req_obj;
|
||||||
QByteArray out;
|
QByteArray out;
|
||||||
QElapsedTimer tmr;
|
QElapsedTimer tmr;
|
||||||
|
|
||||||
req_obj["fp_url"] = fp_url;
|
req_obj["fp_url"] = fp_url;
|
||||||
req_obj["url"] = url;
|
req_obj["url"] = url;
|
||||||
|
req_obj["url_type"] = url_type,
|
||||||
req_obj["filter"] = true;
|
req_obj["filter"] = true;
|
||||||
|
|
||||||
tmr.start();
|
tmr.start();
|
||||||
|
@ -62,7 +62,7 @@ class AdBlockManager : public QObject {
|
|||||||
void enabledChanged(bool enabled);
|
void enabledChanged(bool enabled);
|
||||||
|
|
||||||
private:
|
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;
|
QString askServerForCosmeticRules(const QString& url) const;
|
||||||
QProcess* restartServer(int port);
|
QProcess* restartServer(int port);
|
||||||
|
|
||||||
|
@ -12,22 +12,14 @@ AdblockRequestInfo::AdblockRequestInfo(const QUrl& url) {
|
|||||||
initialize(url);
|
initialize(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
QWebEngineUrlRequestInfo::ResourceType AdblockRequestInfo::resourceType() const {
|
QString AdblockRequestInfo::resourceType() const {
|
||||||
return m_resourceType;
|
return m_resourceType;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdblockRequestInfo::setResourceType(const QWebEngineUrlRequestInfo::ResourceType& resource_type) {
|
void AdblockRequestInfo::setResourceType(const QString& resource_type) {
|
||||||
m_resourceType = 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 {
|
QUrl AdblockRequestInfo::requestUrl() const {
|
||||||
return m_requestUrl;
|
return m_requestUrl;
|
||||||
}
|
}
|
||||||
@ -54,16 +46,52 @@ void AdblockRequestInfo::setRequestMethod(const QByteArray& request_method) {
|
|||||||
|
|
||||||
void AdblockRequestInfo::initialize(const QWebEngineUrlRequestInfo& webengine_info) {
|
void AdblockRequestInfo::initialize(const QWebEngineUrlRequestInfo& webengine_info) {
|
||||||
setFirstPartyUrl(webengine_info.firstPartyUrl());
|
setFirstPartyUrl(webengine_info.firstPartyUrl());
|
||||||
setNavigationType(webengine_info.navigationType());
|
|
||||||
setRequestMethod(webengine_info.requestMethod());
|
setRequestMethod(webengine_info.requestMethod());
|
||||||
setRequestUrl(webengine_info.requestUrl());
|
setRequestUrl(webengine_info.requestUrl());
|
||||||
setResourceType(webengine_info.resourceType());
|
setResourceType(convertResourceType(webengine_info.resourceType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void AdblockRequestInfo::initialize(const QUrl& url) {
|
void AdblockRequestInfo::initialize(const QUrl& url) {
|
||||||
setFirstPartyUrl(url);
|
setFirstPartyUrl(url);
|
||||||
setNavigationType(QWebEngineUrlRequestInfo::NavigationType::NavigationTypeTyped);
|
|
||||||
setRequestMethod(QSL("GET").toLocal8Bit());
|
setRequestMethod(QSL("GET").toLocal8Bit());
|
||||||
setRequestUrl(url);
|
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 {};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,8 @@ class AdblockRequestInfo {
|
|||||||
explicit AdblockRequestInfo(const QWebEngineUrlRequestInfo& webengine_info);
|
explicit AdblockRequestInfo(const QWebEngineUrlRequestInfo& webengine_info);
|
||||||
explicit AdblockRequestInfo(const QUrl& url);
|
explicit AdblockRequestInfo(const QUrl& url);
|
||||||
|
|
||||||
QWebEngineUrlRequestInfo::ResourceType resourceType() const;
|
QString resourceType() const;
|
||||||
void setResourceType(const QWebEngineUrlRequestInfo::ResourceType& resource_type);
|
void setResourceType(const QString& resource_type);
|
||||||
|
|
||||||
QWebEngineUrlRequestInfo::NavigationType navigationType() const;
|
|
||||||
void setNavigationType(const QWebEngineUrlRequestInfo::NavigationType& navigation_type);
|
|
||||||
|
|
||||||
QUrl requestUrl() const;
|
QUrl requestUrl() const;
|
||||||
void setRequestUrl(const QUrl& request_url);
|
void setRequestUrl(const QUrl& request_url);
|
||||||
@ -29,9 +26,10 @@ class AdblockRequestInfo {
|
|||||||
void initialize(const QWebEngineUrlRequestInfo& webengine_info);
|
void initialize(const QWebEngineUrlRequestInfo& webengine_info);
|
||||||
void initialize(const QUrl& url);
|
void initialize(const QUrl& url);
|
||||||
|
|
||||||
|
QString convertResourceType(QWebEngineUrlRequestInfo::ResourceType rt) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QWebEngineUrlRequestInfo::ResourceType m_resourceType;
|
QString m_resourceType;
|
||||||
QWebEngineUrlRequestInfo::NavigationType m_navigationType;
|
|
||||||
QUrl m_requestUrl;
|
QUrl m_requestUrl;
|
||||||
QUrl m_firstPartyUrl;
|
QUrl m_firstPartyUrl;
|
||||||
QUrl m_initiator;
|
QUrl m_initiator;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user