aboutsummaryrefslogtreecommitdiff
path: root/lib/web/urlfilter/filterdomain.h
blob: b356a326f53eef6eebab6641208aeefdc9af102e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef FILTERDOMAIN_H
#define FILTERDOMAIN_H

#include <QObject>
#include <QVector>
#include <memory>
#include "filterrule.h"

typedef std::unique_ptr<FilterRule> FilterRule_ptr;
typedef QVector<QString> QStringVector;

class FilterDomain : public QObject
{
    Q_OBJECT
public:
    explicit FilterDomain(QObject *parent = nullptr);

    void addDomain(const QString &domain, bool isException = false);
    void addRule(FilterRule_ptr &rule);

    bool hasMatch(const QString &host) const;
    void process(QWebEngineUrlRequestInfo &info) const;

private:
    Q_DISABLE_COPY(FilterDomain)

    // lists of domains this rule group? is allowed on and blocked on
    QStringVector m_allowedOnDomains;
    QStringVector m_blockedOnDomains;

    std::vector<FilterRule_ptr> m_rules;
};

// function taken from KDE/Falkon
bool isMatchingDomain(const QString &domain, const QString &filter);

#endif // FILTERDOMAIN_H