/** LICENSE ******************************************************************** ** ** smolbote: yet another qute browser ** Copyright (C) 2017 Xian Nox ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ** ******************************************************************************/ #ifndef ADBLOCKRULE_H #define ADBLOCKRULE_H #include #include #include #include class BlockerRule : public QObject { Q_OBJECT public: enum RuleType { Invalid, DomainMatch, RegularExpressionMatch, WildcardMatch }; 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 }; Q_DECLARE_FLAGS(RuleOptions, RuleOption) explicit BlockerRule(QString rule, QObject *parent = 0); bool match(const QWebEngineUrlRequestInfo &info); bool isValid(); bool isException(); QString toString() const; signals: public slots: private: // TODO: subclass QRegularExpression and move this there QString fromWildcardMatch(const QString &pattern); bool matchOptions(const QWebEngineUrlRequestInfo &info, const RuleOptions &options); QString m_rule; RuleType m_type; bool m_exception = false; QString m_domain; QRegularExpression ruleExpression; RuleOptions m_blacklistOptions; RuleOptions m_whitelistOptions; }; #endif // ADBLOCKRULE_H