Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2604)

Unified Diff: chrome/browser/extensions/api/declarative/url_matcher.cc

Issue 10012004: Implemented proper support for checking schemes and requested resource types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Renamed 'scheme' to 'schemes' Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/declarative/url_matcher.cc
diff --git a/chrome/browser/extensions/api/declarative/url_matcher.cc b/chrome/browser/extensions/api/declarative/url_matcher.cc
index b44662c68fed2bd9ed368ef41aad3f972ce9184e..816c890c499b2a5bfdd2ecd71ae7ce4ecb818e01 100644
--- a/chrome/browser/extensions/api/declarative/url_matcher.cc
+++ b/chrome/browser/extensions/api/declarative/url_matcher.cc
@@ -383,6 +383,26 @@ bool URLMatcherConditionFactory::SubstringPatternPointerCompare::operator()(
}
//
+// URLMatcherSchemeFilter
+//
+
+URLMatcherSchemeFilter::URLMatcherSchemeFilter(const std::string& filter)
+ : filters_(1) {
+ filters_.push_back(filter);
+}
+
+URLMatcherSchemeFilter::URLMatcherSchemeFilter(
+ const std::vector<std::string>& filters)
+ : filters_(filters) {}
+
+URLMatcherSchemeFilter::~URLMatcherSchemeFilter() {}
+
+bool URLMatcherSchemeFilter::IsMatch(const GURL& url) const {
+ return std::find(filters_.begin(), filters_.end(), url.scheme()) !=
+ filters_.end();
+}
+
+//
// URLMatcherConditionSet
//
@@ -394,6 +414,14 @@ URLMatcherConditionSet::URLMatcherConditionSet(
: id_(id),
conditions_(conditions) {}
+URLMatcherConditionSet::URLMatcherConditionSet(
+ ID id,
+ const Conditions& conditions,
+ scoped_ptr<URLMatcherSchemeFilter> scheme_filter)
+ : id_(id),
+ conditions_(conditions),
+ scheme_filter_(scheme_filter.Pass()) {}
+
bool URLMatcherConditionSet::IsMatch(
const std::set<SubstringPattern::ID>& matching_substring_patterns,
const GURL& url) const {
@@ -402,6 +430,8 @@ bool URLMatcherConditionSet::IsMatch(
if (!i->IsMatch(matching_substring_patterns, url))
return false;
}
+ if (scheme_filter_.get() && !scheme_filter_->IsMatch(url))
+ return false;
return true;
}

Powered by Google App Engine
This is Rietveld 408576698