diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-05-21 20:24:57 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2017-05-21 20:24:57 +0200 |
commit | 1a9e09332261d18ee892fc3613f16a0e80d115e0 (patch) | |
tree | 1bb1a158799dcc231b48aafc61d605e243f49314 /src/blocker/blockerrule.h | |
parent | Updated CONTRIBUTING (diff) | |
download | smolbote-1a9e09332261d18ee892fc3613f16a0e80d115e0.tar.xz |
Reworking URL filter
Diffstat (limited to 'src/blocker/blockerrule.h')
-rw-r--r-- | src/blocker/blockerrule.h | 75 |
1 files changed, 43 insertions, 32 deletions
diff --git a/src/blocker/blockerrule.h b/src/blocker/blockerrule.h index a98f699..758366d 100644 --- a/src/blocker/blockerrule.h +++ b/src/blocker/blockerrule.h @@ -31,30 +31,48 @@ class BlockerRule : public QObject Q_OBJECT public: - // https://adblockplus.org/en/filters#options - enum RuleOption { - script = 1, - image = 2, - stylesheet = 4, - object = 8, - xmlhttprequest = 16, - objectsubrequest = 32, - subdocument = 64, - ping = 128, - websocket = 256, - document = 512, - elemhide = 1024, - generichide = 2048, - genericblock = 4096, - other = 8192 + enum TypeState { + Allow = 1, + Deny = 2, + None = 0 }; - Q_DECLARE_FLAGS(RuleOptions, RuleOption) - explicit BlockerRule(QString rule, QObject *parent = 0); + struct NavigationType { + TypeState link; + TypeState typed; + TypeState form; + TypeState history; + TypeState reload; + TypeState other; + }; + + struct ResourceType { + TypeState MainFrame; + TypeState SubFrame; + TypeState Stylesheet; + TypeState Script; + TypeState FontResource; + TypeState SubResource; + TypeState Object; + TypeState Media; + TypeState Worker; + TypeState SharedWorker; + TypeState Prefetch; + TypeState Favicon; + TypeState Xhr; + TypeState Ping; + TypeState ServiceWorker; + TypeState CspWorker; + TypeState PluginResource; + TypeState Unknown; + }; + + explicit BlockerRule(RegExp firstPartyUrl, RegExp requestUrl, NavigationType nav, ResourceType res, bool shouldBlock, QObject *parent = 0); bool match(const QWebEngineUrlRequestInfo &info); + bool isValid(); - bool isException(); + QString filter() const; signals: @@ -62,22 +80,15 @@ signals: public slots: private: - void parseOption(const QString &opt); - bool matchOptions(const QWebEngineUrlRequestInfo &info, const RuleOptions &options); - - QString m_filter; + RegExp m_firstPartyUrl; + RegExp m_requestUrl; - bool m_valid; - bool m_exception = false; - bool m_elementRule; + NavigationType m_navRules; + ResourceType m_resRules; - QStringList hostsBlacklist; - QStringList hostsWhitelist; - RegExp domainExpression; - RegExp ruleExpression; + bool m_valid = false; + bool m_shouldBlock; - RuleOptions m_blacklistOptions; - RuleOptions m_whitelistOptions; }; #endif // ADBLOCKRULE_H |