diff options
| author | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-10-22 20:39:21 +0200 | 
|---|---|---|
| committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2018-10-22 20:39:21 +0200 | 
| commit | b091eab32952450744a21109a924cfdb5c504c82 (patch) | |
| tree | 0f8628e48078687240e0841c3dd0b5f0fc1fc8c1 /lib | |
| parent | Add MatcherBenchmark (diff) | |
| download | smolbote-b091eab32952450744a21109a924cfdb5c504c82.tar.xz | |
AdblockRule constructor
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/urlfilter/formats/adblockrule.cpp | 38 | ||||
| -rw-r--r-- | lib/urlfilter/formats/adblockrule.h | 7 | 
2 files changed, 39 insertions, 6 deletions
| diff --git a/lib/urlfilter/formats/adblockrule.cpp b/lib/urlfilter/formats/adblockrule.cpp index 79a6dc8..6b97d5d 100644 --- a/lib/urlfilter/formats/adblockrule.cpp +++ b/lib/urlfilter/formats/adblockrule.cpp @@ -31,9 +31,11 @@ AdBlockRule *loadRule(const QString &filter)      }      // exception rules -    const bool isBlocking = parsedLine.startsWith(QLatin1Literal("@@")); -    if(isBlocking) +    FilterLeaf::Action action = FilterLeaf::Block; +    if(parsedLine.startsWith(QLatin1Literal("@@"))) { +        action = FilterLeaf::Allow;          parsedLine.remove(0, 2); +    }      // parse options      QStringList enabledOn, disabledOn; @@ -105,7 +107,10 @@ AdBlockRule *loadRule(const QString &filter)              pattern = parsedLine;          }      } -    return nullptr; + +    auto *rule = new AdBlockRule(matchType, pattern, action); +    rule->mergeOptions(optionsHash); +    return rule;  }  std::optional<QPair<QWebEngineUrlRequestInfo::ResourceType, bool>> parseOption(const QString &option) @@ -162,3 +167,30 @@ std::optional<QPair<QWebEngineUrlRequestInfo::ResourceType, bool>> parseOption(c      return std::nullopt;  } + +AdBlockRule::AdBlockRule(FilterLeaf::UrlMatchType matchType, const QString& filter, FilterLeaf::Action action) +{ +    this->matchType = matchType; +    this->m_request = filter; +    this->m_isBlocking = (action == FilterLeaf::Block) ? true : false; +} + +void AdBlockRule::mergeOptions(const QHash<QWebEngineUrlRequestInfo::ResourceType, bool> &options) +{ +    this->resourceTypeOptions.unite(options); +} + +bool AdBlockRule::match(const QUrl& requestUrl) const +{ +    switch(matchType) { +        case FilterLeaf::StringContains: +            return requestUrl.toString().contains(m_request); +        default: +            return false; +    } +} + +FilterLeaf::Action AdBlockRule::action() const +{ +    return m_isBlocking ? FilterLeaf::Block : FilterLeaf::Allow; +} diff --git a/lib/urlfilter/formats/adblockrule.h b/lib/urlfilter/formats/adblockrule.h index 0f0873c..da7e4fc 100644 --- a/lib/urlfilter/formats/adblockrule.h +++ b/lib/urlfilter/formats/adblockrule.h @@ -15,10 +15,11 @@  class AdBlockRule : public FilterLeaf  {  public: -//    explicit AdBlockRule(const QString &filter); +    explicit AdBlockRule(FilterLeaf::UrlMatchType matchType, const QString &filter, FilterLeaf::Action action); +    void mergeOptions(const QHash<QWebEngineUrlRequestInfo::ResourceType, bool> &options); -//    bool match(const QUrl &requestUrl) const override; -//    FilterLeaf::Action action() const override; +    bool match(const QUrl &requestUrl) const override; +    FilterLeaf::Action action() const override;  };  std::optional<QPair<QWebEngineUrlRequestInfo::ResourceType, bool>> parseOption(const QString &option); | 
