diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2011-02-21 19:21:04 +0100 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2011-02-24 18:41:20 +0100 |
commit | fd1f2205b673a41bedb3959c99b8958f99a7b269 (patch) | |
tree | 6f9b3815fa7c595474689772aae1338bdb4cf1a4 /src/adblock/adblockrule.cpp | |
parent | No more static members in the Application class, (diff) | |
download | rekonq-fd1f2205b673a41bedb3959c99b8958f99a7b269.tar.xz |
AdBlock: adding a Null Rule to match all the unimplemented filters.
BUG:248045
BUG:253329
BUG:265909
Diffstat (limited to 'src/adblock/adblockrule.cpp')
-rw-r--r-- | src/adblock/adblockrule.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/adblock/adblockrule.cpp b/src/adblock/adblockrule.cpp index 1cb6773a..7fdb3e10 100644 --- a/src/adblock/adblockrule.cpp +++ b/src/adblock/adblockrule.cpp @@ -55,13 +55,39 @@ // Self Includes #include "adblockrule.h" +// Local Includes #include "adblockrulefallbackimpl.h" +#include "adblockrulenullimpl.h" #include "adblockruletextmatchimpl.h" + AdBlockRule::AdBlockRule(const QString &filter) { - if (AdBlockRuleTextMatchImpl::isTextMatchFilter(filter)) + switch( AdBlockRule::ruleType(filter) ) + { + case TextRule: m_implementation = QSharedPointer<AdBlockRuleImpl>(new AdBlockRuleTextMatchImpl(filter)); - else + break; + + case FallbackRule: m_implementation = QSharedPointer<AdBlockRuleImpl>(new AdBlockRuleFallbackImpl(filter)); + break; + + case NullRule: + default: + m_implementation = QSharedPointer<AdBlockRuleImpl>(new AdBlockRuleNullImpl(filter)); + break; + } +} + + +RuleTypes AdBlockRule::ruleType(const QString &filter) +{ + if( AdBlockRuleTextMatchImpl::isTextMatchFilter(filter) ) + return TextRule; + + if( AdBlockRuleNullImpl::isNullFilter(filter) ) + return NullRule; + + return FallbackRule; } |