aboutsummaryrefslogtreecommitdiff
path: root/src/blocker/filternode.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/blocker/filternode.h')
-rw-r--r--src/blocker/filternode.h58
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