/******************************************************************************* ** ** 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: enum TypeState { Allow = 1, Deny = 2, None = 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(); QString filter() const; signals: public slots: private: RegExp m_firstPartyUrl; RegExp m_requestUrl; NavigationType m_navRules; ResourceType m_resRules; bool m_valid = false; bool m_shouldBlock; }; #endif // ADBLOCKRULE_H