summaryrefslogtreecommitdiff
path: root/src/adblock/adblockrule.cpp
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2011-02-21 19:21:04 +0100
committerAndrea Diamantini <adjam7@gmail.com>2011-02-24 18:41:20 +0100
commitfd1f2205b673a41bedb3959c99b8958f99a7b269 (patch)
tree6f9b3815fa7c595474689772aae1338bdb4cf1a4 /src/adblock/adblockrule.cpp
parentNo more static members in the Application class, (diff)
downloadrekonq-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.cpp30
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;
}