From 49324c8d4acbf36902754a2f1c62fb134df1b19e Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 25 May 2017 16:12:29 +0200 Subject: Merged FilterRule into FilterNode --- src/blocker/filternode.h | 58 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 4 deletions(-) (limited to 'src/blocker/filternode.h') diff --git a/src/blocker/filternode.h b/src/blocker/filternode.h index 104f67d..e580383 100644 --- a/src/blocker/filternode.h +++ b/src/blocker/filternode.h @@ -23,13 +23,48 @@ #include #include +#include +#include "regexp.h" +#include class FilterNode { public: - explicit FilterNode(const QList data, FilterNode *parentItem = 0); + + enum ResourceType { + NoType = 0, + MainFrame = 1, + SubFrame = 2, + Stylesheet = 4, + Script = 8, + Image = 16, + FontResource = 32, + SubResource = 64, + Object = 128, + Media = 256, + Worker = 512, + SharedWorker = 1024, + Prefetch = 2048, + Favicon = 4096, + Xhr = 8192, + Ping = 16384, + ServiceWorker = 32768, + CspReport = 65536, + PluginResource = 131072, + Unknown = 262144 + }; + Q_DECLARE_FLAGS(Resources, ResourceType) + + struct ResourceRules { + Resources allowed; + Resources blocked; + }; + + explicit FilterNode(const QString &domain, const QString &request, ResourceRules rules, bool shouldBlock, FilterNode *parentItem = 0); ~FilterNode(); + void enable(); + FilterNode *parentItem(); // children @@ -38,16 +73,31 @@ public: int childCount() const; // data - int columnCount() const; - QVariant data(int column) const; + QString domain() const; + QString request() const; + bool isBlocking(); int row() const; + // filtering + bool hasMatch(const QWebEngineUrlRequestInfo &info); + bool shouldBlock(const QWebEngineUrlRequestInfo &info); + + bool isValid(); + private: + bool testFlag(ResourceType flag); + FilterNode *m_parentItem; QList m_children; - QList m_itemData; + RegExp m_domainUrl; + RegExp m_requestUrl; + + ResourceRules m_rules; + + bool m_valid = false; + bool m_shouldBlock; }; #endif // FILTERNODE_H -- cgit v1.2.1