Index: chrome/common/extensions/url_pattern_set.cc |
diff --git a/chrome/common/extensions/url_pattern_set.cc b/chrome/common/extensions/url_pattern_set.cc |
deleted file mode 100644 |
index 691e75039bd3c231f4c0733a9663cb91469a3b3d..0000000000000000000000000000000000000000 |
--- a/chrome/common/extensions/url_pattern_set.cc |
+++ /dev/null |
@@ -1,215 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/common/extensions/url_pattern_set.h" |
- |
-#include <algorithm> |
-#include <iterator> |
- |
-#include "base/logging.h" |
-#include "base/memory/linked_ptr.h" |
-#include "base/values.h" |
-#include "chrome/common/extensions/extension_error_utils.h" |
-#include "content/public/common/url_constants.h" |
-#include "extensions/common/url_pattern.h" |
-#include "googleurl/src/gurl.h" |
- |
-namespace { |
- |
-const char kInvalidURLPatternError[] = "Invalid url pattern '*'"; |
- |
-} // namespace |
- |
-// static |
-void URLPatternSet::CreateDifference(const URLPatternSet& set1, |
- const URLPatternSet& set2, |
- URLPatternSet* out) { |
- out->ClearPatterns(); |
- std::set_difference(set1.patterns_.begin(), set1.patterns_.end(), |
- set2.patterns_.begin(), set2.patterns_.end(), |
- std::inserter<std::set<URLPattern> >( |
- out->patterns_, out->patterns_.begin())); |
-} |
- |
-// static |
-void URLPatternSet::CreateIntersection(const URLPatternSet& set1, |
- const URLPatternSet& set2, |
- URLPatternSet* out) { |
- out->ClearPatterns(); |
- std::set_intersection(set1.patterns_.begin(), set1.patterns_.end(), |
- set2.patterns_.begin(), set2.patterns_.end(), |
- std::inserter<std::set<URLPattern> >( |
- out->patterns_, out->patterns_.begin())); |
-} |
- |
-// static |
-void URLPatternSet::CreateUnion(const URLPatternSet& set1, |
- const URLPatternSet& set2, |
- URLPatternSet* out) { |
- out->ClearPatterns(); |
- std::set_union(set1.patterns_.begin(), set1.patterns_.end(), |
- set2.patterns_.begin(), set2.patterns_.end(), |
- std::inserter<std::set<URLPattern> >( |
- out->patterns_, out->patterns_.begin())); |
-} |
- |
-// static |
-void URLPatternSet::CreateUnion(const std::vector<URLPatternSet>& sets, |
- URLPatternSet* out) { |
- out->ClearPatterns(); |
- if (sets.empty()) |
- return; |
- |
- // N-way union algorithm is basic O(nlog(n)) merge algorithm. |
- // |
- // Do the first merge step into a working set so that we don't mutate any of |
- // the input. |
- std::vector<URLPatternSet> working; |
- for (size_t i = 0; i < sets.size(); i += 2) { |
- if (i + 1 < sets.size()) { |
- URLPatternSet u; |
- URLPatternSet::CreateUnion(sets[i], sets[i + 1], &u); |
- working.push_back(u); |
- } else { |
- working.push_back(sets[i]); |
- } |
- } |
- |
- for (size_t skip = 1; skip < working.size(); skip *= 2) { |
- for (size_t i = 0; i < (working.size() - skip); i += skip) { |
- URLPatternSet u; |
- URLPatternSet::CreateUnion(working[i], working[i + skip], &u); |
- working[i].patterns_.swap(u.patterns_); |
- } |
- } |
- |
- out->patterns_.swap(working[0].patterns_); |
-} |
- |
-URLPatternSet::URLPatternSet() {} |
- |
-URLPatternSet::URLPatternSet(const URLPatternSet& rhs) |
- : patterns_(rhs.patterns_) {} |
- |
-URLPatternSet::URLPatternSet(const std::set<URLPattern>& patterns) |
- : patterns_(patterns) {} |
- |
-URLPatternSet::~URLPatternSet() {} |
- |
-URLPatternSet& URLPatternSet::operator=(const URLPatternSet& rhs) { |
- patterns_ = rhs.patterns_; |
- return *this; |
-} |
- |
-bool URLPatternSet::operator==(const URLPatternSet& other) const { |
- return patterns_ == other.patterns_; |
-} |
- |
-bool URLPatternSet::is_empty() const { |
- return patterns_.empty(); |
-} |
- |
-size_t URLPatternSet::size() const { |
- return patterns_.size(); |
-} |
- |
-bool URLPatternSet::AddPattern(const URLPattern& pattern) { |
- return patterns_.insert(pattern).second; |
-} |
- |
-void URLPatternSet::AddPatterns(const URLPatternSet& set) { |
- patterns_.insert(set.patterns().begin(), |
- set.patterns().end()); |
-} |
- |
-void URLPatternSet::ClearPatterns() { |
- patterns_.clear(); |
-} |
- |
-bool URLPatternSet::Contains(const URLPatternSet& set) const { |
- return std::includes(patterns_.begin(), patterns_.end(), |
- set.patterns_.begin(), set.patterns_.end()); |
-} |
- |
-bool URLPatternSet::MatchesURL(const GURL& url) const { |
- for (URLPatternSet::const_iterator pattern = patterns_.begin(); |
- pattern != patterns_.end(); ++pattern) { |
- if (pattern->MatchesURL(url)) |
- return true; |
- } |
- |
- return false; |
-} |
- |
-bool URLPatternSet::MatchesSecurityOrigin(const GURL& origin) const { |
- for (URLPatternSet::const_iterator pattern = patterns_.begin(); |
- pattern != patterns_.end(); ++pattern) { |
- if (pattern->MatchesSecurityOrigin(origin)) |
- return true; |
- } |
- |
- return false; |
-} |
- |
-bool URLPatternSet::OverlapsWith(const URLPatternSet& other) const { |
- // Two extension extents overlap if there is any one URL that would match at |
- // least one pattern in each of the extents. |
- for (URLPatternSet::const_iterator i = patterns_.begin(); |
- i != patterns_.end(); ++i) { |
- for (URLPatternSet::const_iterator j = other.patterns().begin(); |
- j != other.patterns().end(); ++j) { |
- if (i->OverlapsWith(*j)) |
- return true; |
- } |
- } |
- |
- return false; |
-} |
- |
-scoped_ptr<base::ListValue> URLPatternSet::ToValue() const { |
- scoped_ptr<ListValue> value(new ListValue); |
- for (URLPatternSet::const_iterator i = patterns_.begin(); |
- i != patterns_.end(); ++i) |
- value->AppendIfNotPresent(Value::CreateStringValue(i->GetAsString())); |
- return value.Pass(); |
-} |
- |
-bool URLPatternSet::Populate(const std::vector<std::string>& patterns, |
- int valid_schemes, |
- bool allow_file_access, |
- std::string* error) { |
- ClearPatterns(); |
- for (size_t i = 0; i < patterns.size(); ++i) { |
- URLPattern pattern(valid_schemes); |
- if (pattern.Parse(patterns[i]) != URLPattern::PARSE_SUCCESS) { |
- if (error) { |
- *error = ExtensionErrorUtils::FormatErrorMessage( |
- kInvalidURLPatternError, patterns[i]); |
- } else { |
- LOG(ERROR) << "Invalid url pattern: " << patterns[i]; |
- } |
- return false; |
- } |
- if (!allow_file_access && pattern.MatchesScheme(chrome::kFileScheme)) { |
- pattern.SetValidSchemes( |
- pattern.valid_schemes() & ~URLPattern::SCHEME_FILE); |
- } |
- AddPattern(pattern); |
- } |
- return true; |
-} |
- |
-bool URLPatternSet::Populate(const base::ListValue& value, |
- int valid_schemes, |
- bool allow_file_access, |
- std::string* error) { |
- std::vector<std::string> patterns; |
- for (size_t i = 0; i < value.GetSize(); ++i) { |
- std::string item; |
- if (!value.GetString(i, &item)) |
- return false; |
- patterns.push_back(item); |
- } |
- return Populate(patterns, valid_schemes, allow_file_access, error); |
-} |