/** 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 = 0, image = 1, stylesheet = 2, object = 4, xmlhttprequest = 8, objectsubrequest = 16, subdocument = 32, ping = 64, websocket = 128, document = 256, elemhide = 512, generichide = 1024, genericblock = 2048, other = 4096 }; 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); QString m_rule; RuleType m_type; bool m_exception = false; QString m_domain; QRegularExpression ruleExpression; RuleOptions m_blacklistOptions; RuleOptions m_whitelistOptions; }; #endif // ADBLOCKRULE_H