diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-05-25 16:12:29 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-05-25 16:12:29 +0200 |
commit | 49324c8d4acbf36902754a2f1c62fb134df1b19e (patch) | |
tree | 3e4be38562d17f01a6051b9a895c5681e8f0b8ff /src/blocker/filternode.h | |
parent | Displaying filter rules in a tree model view (diff) | |
download | smolbote-49324c8d4acbf36902754a2f1c62fb134df1b19e.tar.xz |
Merged FilterRule into FilterNode
Diffstat (limited to 'src/blocker/filternode.h')
-rw-r--r-- | src/blocker/filternode.h | 58 |
1 files changed, 54 insertions, 4 deletions
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 <QList> #include <QVariant> +#include <QUrl> +#include "regexp.h" +#include <QWebEngineUrlRequestInfo> class FilterNode { public: - explicit FilterNode(const QList<QVariant> 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<FilterNode*> m_children; - QList<QVariant> m_itemData; + RegExp m_domainUrl; + RegExp m_requestUrl; + + ResourceRules m_rules; + + bool m_valid = false; + bool m_shouldBlock; }; #endif // FILTERNODE_H |