/******************************************************************************* ** ** 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 "regexp.h" #include 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 }; Q_DECLARE_FLAGS(RuleOptions, RuleOption) explicit BlockerRule(QString rule, QObject *parent = 0); bool match(const QWebEngineUrlRequestInfo &info); bool isValid(); bool isException(); QString filter() const; signals: public slots: private: void parseOption(const QString &opt); bool matchOptions(const QWebEngineUrlRequestInfo &info, const RuleOptions &options); QString m_filter; bool m_valid; bool m_exception = false; bool m_elementRule; QStringList hostsBlacklist; QStringList hostsWhitelist; RegExp domainExpression; RegExp ruleExpression; RuleOptions m_blacklistOptions; RuleOptions m_whitelistOptions; }; #endif // ADBLOCKRULE_H