Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: src/FilterEngine.cpp

Issue 29331737: Issue 3363 - Implement IsDocumentWhitelisted and IsElemhideWhitelisted (Closed)
Patch Set: Reverted a whitespace removal Created Dec. 3, 2015, 8:39 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « include/AdblockPlus/FilterEngine.h ('k') | test/FilterEngine.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/FilterEngine.cpp
diff --git a/src/FilterEngine.cpp b/src/FilterEngine.cpp
index 95ef0c4c37ff2ee111551879f0790a7e01cf4fb6..6ad125c828ef6e4256b74827b2c1a62b5bfdb3aa 100644
--- a/src/FilterEngine.cpp
+++ b/src/FilterEngine.cpp
@@ -325,6 +325,18 @@ AdblockPlus::FilterPtr FilterEngine::Matches(const std::string& url,
return CheckFilterMatch(url, contentType, lastDocumentUrl);
}
+bool FilterEngine::IsDocumentWhitelisted(const std::string& url,
+ const std::vector<std::string>& documentUrls) const
+{
+ return !!GetWhitelistingFilter(url, CONTENT_TYPE_DOCUMENT, documentUrls);
+}
+
+bool FilterEngine::IsElemhideWhitelisted(const std::string& url,
+ const std::vector<std::string>& documentUrls) const
+{
+ return !!GetWhitelistingFilter(url, CONTENT_TYPE_ELEMHIDE, documentUrls);
+}
+
AdblockPlus::FilterPtr FilterEngine::CheckFilterMatch(const std::string& url,
ContentType contentType,
const std::string& documentUrl) const
@@ -462,3 +474,40 @@ int FilterEngine::CompareVersions(const std::string& v1, const std::string& v2)
JsValuePtr func = jsEngine->Evaluate("API.compareVersions");
return func->Call(params)->AsInt();
}
+
+FilterPtr FilterEngine::GetWhitelistingFilter(const std::string& url,
+ ContentType contentType, const std::string& documentUrl) const
+{
+ FilterPtr match = Matches(url, contentType, documentUrl);
+ if (match && match->GetType() == Filter::TYPE_EXCEPTION)
+ {
+ return match;
+ }
+ return FilterPtr();
+}
+
+FilterPtr FilterEngine::GetWhitelistingFilter(const std::string& url,
+ ContentType contentType,
+ const std::vector<std::string>& documentUrls) const
+{
+ if (documentUrls.empty())
+ {
+ return GetWhitelistingFilter(url, contentType, "");
+ }
+
+ std::vector<std::string>::const_iterator urlIterator = documentUrls.begin();
+ std::string currentUrl = url;
+ do
+ {
+ std::string parentUrl = *urlIterator++;
+ FilterPtr filter = GetWhitelistingFilter(
+ currentUrl, contentType, parentUrl);
+ if (filter)
+ {
+ return filter;
+ }
+ currentUrl = parentUrl;
+ }
+ while (urlIterator != documentUrls.end());
+ return FilterPtr();
+}
« no previous file with comments | « include/AdblockPlus/FilterEngine.h ('k') | test/FilterEngine.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld