summaryrefslogtreecommitdiff
path: root/src/adblock/adblockelementhiding.h
diff options
context:
space:
mode:
authorPaul Rohrbach <p.b.r@gmx.net>2013-07-30 21:15:24 +0200
committerAndrea Diamantini <adjam7@gmail.com>2013-07-30 21:17:12 +0200
commitf28c7dc42b6b6924e01b4b97736a89acdaddb244 (patch)
treebdca694cfc4da8e1786553f30c6fec6100daa2ee /src/adblock/adblockelementhiding.h
parentProperly resolve url before pasteAndGo (diff)
downloadrekonq-f28c7dc42b6b6924e01b4b97736a89acdaddb244.tar.xz
Adding domain-specific hiding support to the adblocker.
The domain-specific rules are stored in a QMultiHash, where the key is the domain and the values are the rules for the specified domain. This causes redundancy, because on rule can be applied to more than one domain, but has a really fast look-up time. The code for the generic hiding has not changed and is just relocated. REVIEW: 111521 REVIEWED-BY: adjam
Diffstat (limited to 'src/adblock/adblockelementhiding.h')
-rw-r--r--src/adblock/adblockelementhiding.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/adblock/adblockelementhiding.h b/src/adblock/adblockelementhiding.h
new file mode 100644
index 00000000..b480277e
--- /dev/null
+++ b/src/adblock/adblockelementhiding.h
@@ -0,0 +1,52 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2013 by Paul Rohrbach <p.b.r at gmx dot net>
+*
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License as
+* published by the Free Software Foundation; either version 2 of
+* the License or (at your option) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+#ifndef ADBLOCKELEMENTHIDING_H
+#define ADBLOCKELEMENTHIDING_H
+
+#include <QStringList>
+#include <QMultiHash>
+#include <QWebElement>
+
+class AdBlockElementHiding
+{
+public:
+ AdBlockElementHiding();
+
+ bool addRule(const QString &rule);
+ void apply(QWebElement &document, QString domain) const;
+
+ void clear();
+
+private:
+ void applyStringRule(QWebElement &document, const QString &rule) const;
+ QStringList generateSubdomainList(const QString &domain) const;
+
+ QStringList m_GenericRules;
+ QMultiHash<QString, QString> m_DomainSpecificRules;
+ QMultiHash<QString, QString> m_DomainSpecificRulesWhitelist;
+};
+
+#endif // ADBLOCKELEMENTHIDING_H