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: Addressed some issues. Created Dec. 2, 2015, 5:33 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') | no next file » | 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..171b92c68d6590b7b5e6653883cf639ecdc937e3 100644
--- a/src/FilterEngine.cpp
+++ b/src/FilterEngine.cpp
@@ -325,6 +325,20 @@ 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, documentUrls,
+ CONTENT_TYPE_DOCUMENT) != 0;
+}
+
+bool FilterEngine::IsElemhideWhitelisted(const std::string& url,
+ const std::vector<std::string>& documentUrls) const
+{
+ return GetWhitelistingFilter(url, documentUrls,
+ CONTENT_TYPE_ELEMHIDE) != 0;
+}
+
AdblockPlus::FilterPtr FilterEngine::CheckFilterMatch(const std::string& url,
ContentType contentType,
const std::string& documentUrl) const
@@ -462,3 +476,41 @@ 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,
+ const std::string& parent, ContentType contentType) const
+{
+ FilterPtr match = Matches(url, contentType, parent);
+
+ if (match && match->GetType() == Filter::TYPE_EXCEPTION)
+ {
+ return match;
+ }
+ return FilterPtr();
+}
+
+FilterPtr FilterEngine::GetWhitelistingFilter(const std::string& url,
+ const std::vector<std::string>& documentUrls,
+ ContentType contentType) 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, parentUrl, contentType);
+ if (filter)
+ {
+ return filter;
+ }
+ currentUrl = parentUrl;
+ }
+ while (urlIterator != documentUrls.end());
+ return FilterPtr();
+}
« no previous file with comments | « include/AdblockPlus/FilterEngine.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld