From fd1f2205b673a41bedb3959c99b8958f99a7b269 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Mon, 21 Feb 2011 19:21:04 +0100 Subject: AdBlock: adding a Null Rule to match all the unimplemented filters. BUG:248045 BUG:253329 BUG:265909 --- src/adblock/adblockrule.cpp | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'src/adblock/adblockrule.cpp') 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(new AdBlockRuleTextMatchImpl(filter)); - else + break; + + case FallbackRule: m_implementation = QSharedPointer(new AdBlockRuleFallbackImpl(filter)); + break; + + case NullRule: + default: + m_implementation = QSharedPointer(new AdBlockRuleNullImpl(filter)); + break; + } +} + + +RuleTypes AdBlockRule::ruleType(const QString &filter) +{ + if( AdBlockRuleTextMatchImpl::isTextMatchFilter(filter) ) + return TextRule; + + if( AdBlockRuleNullImpl::isNullFilter(filter) ) + return NullRule; + + return FallbackRule; } -- cgit v1.2.1