Commit bb99de2b authored by avi's avatar avi Committed by Commit bot

Remove stl_util's deletion function use from components/url_matcher/.

BUG=555865

Review-Url: https://codereview.chromium.org/2443753003
Cr-Commit-Position: refs/heads/master@{#427170}
parent 6fa2f210
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <stddef.h> #include <stddef.h>
#include "base/logging.h" #include "base/logging.h"
#include "base/stl_util.h" #include "base/memory/ptr_util.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "components/url_matcher/substring_set_matcher.h" #include "components/url_matcher/substring_set_matcher.h"
#include "third_party/re2/src/re2/filtered_re2.h" #include "third_party/re2/src/re2/filtered_re2.h"
...@@ -102,13 +102,16 @@ void RegexSetMatcher::RebuildMatcher() { ...@@ -102,13 +102,16 @@ void RegexSetMatcher::RebuildMatcher() {
// SubstringSetMatcher doesn't own its strings. // SubstringSetMatcher doesn't own its strings.
for (size_t i = 0; i < strings_to_match.size(); ++i) { for (size_t i = 0; i < strings_to_match.size(); ++i) {
substring_patterns_.push_back( substring_patterns_.push_back(
new StringPattern(strings_to_match[i], i)); base::MakeUnique<StringPattern>(strings_to_match[i], i));
} }
substring_matcher_->RegisterPatterns(substring_patterns_); std::vector<const StringPattern*> patterns;
for (const auto& pattern : substring_patterns_)
patterns.push_back(pattern.get());
substring_matcher_->RegisterPatterns(patterns);
} }
void RegexSetMatcher::DeleteSubstringPatterns() { void RegexSetMatcher::DeleteSubstringPatterns() {
base::STLDeleteElements(&substring_patterns_); substring_patterns_.clear();
} }
} // namespace url_matcher } // namespace url_matcher
...@@ -75,7 +75,7 @@ class URL_MATCHER_EXPORT RegexSetMatcher { ...@@ -75,7 +75,7 @@ class URL_MATCHER_EXPORT RegexSetMatcher {
// The substring patterns from FilteredRE2, which are used in // The substring patterns from FilteredRE2, which are used in
// |substring_matcher_| but whose lifetime is managed here. // |substring_matcher_| but whose lifetime is managed here.
std::vector<const StringPattern*> substring_patterns_; std::vector<std::unique_ptr<StringPattern>> substring_patterns_;
}; };
} // namespace url_matcher } // namespace url_matcher
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <utility> #include <utility>
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "url/gurl.h" #include "url/gurl.h"
#include "url/url_canon.h" #include "url/url_canon.h"
...@@ -262,9 +263,6 @@ const char kQuerySeparator = '&'; ...@@ -262,9 +263,6 @@ const char kQuerySeparator = '&';
URLMatcherConditionFactory::URLMatcherConditionFactory() : id_counter_(0) {} URLMatcherConditionFactory::URLMatcherConditionFactory() : id_counter_(0) {}
URLMatcherConditionFactory::~URLMatcherConditionFactory() { URLMatcherConditionFactory::~URLMatcherConditionFactory() {
base::STLDeleteElements(&substring_pattern_singletons_);
base::STLDeleteElements(&regex_pattern_singletons_);
base::STLDeleteElements(&origin_and_path_regex_pattern_singletons_);
} }
std::string URLMatcherConditionFactory::CanonicalizeURLForComponentSearches( std::string URLMatcherConditionFactory::CanonicalizeURLForComponentSearches(
...@@ -463,32 +461,28 @@ URLMatcherConditionFactory::CreateOriginAndPathMatchesCondition( ...@@ -463,32 +461,28 @@ URLMatcherConditionFactory::CreateOriginAndPathMatchesCondition(
void URLMatcherConditionFactory::ForgetUnusedPatterns( void URLMatcherConditionFactory::ForgetUnusedPatterns(
const std::set<StringPattern::ID>& used_patterns) { const std::set<StringPattern::ID>& used_patterns) {
PatternSingletons::iterator i = substring_pattern_singletons_.begin(); auto i = substring_pattern_singletons_.begin();
while (i != substring_pattern_singletons_.end()) { while (i != substring_pattern_singletons_.end()) {
if (base::ContainsKey(used_patterns, (*i)->id())) { if (base::ContainsKey(used_patterns, i->first->id()))
++i; ++i;
} else { else
delete *i;
substring_pattern_singletons_.erase(i++); substring_pattern_singletons_.erase(i++);
}
} }
i = regex_pattern_singletons_.begin(); i = regex_pattern_singletons_.begin();
while (i != regex_pattern_singletons_.end()) { while (i != regex_pattern_singletons_.end()) {
if (base::ContainsKey(used_patterns, (*i)->id())) { if (base::ContainsKey(used_patterns, i->first->id()))
++i; ++i;
} else { else
delete *i;
regex_pattern_singletons_.erase(i++); regex_pattern_singletons_.erase(i++);
}
} }
i = origin_and_path_regex_pattern_singletons_.begin(); i = origin_and_path_regex_pattern_singletons_.begin();
while (i != origin_and_path_regex_pattern_singletons_.end()) { while (i != origin_and_path_regex_pattern_singletons_.end()) {
if (base::ContainsKey(used_patterns, (*i)->id())) { if (base::ContainsKey(used_patterns, i->first->id()))
++i; ++i;
} else { else
delete *i;
origin_and_path_regex_pattern_singletons_.erase(i++); origin_and_path_regex_pattern_singletons_.erase(i++);
}
} }
} }
...@@ -510,14 +504,13 @@ URLMatcherCondition URLMatcherConditionFactory::CreateCondition( ...@@ -510,14 +504,13 @@ URLMatcherCondition URLMatcherConditionFactory::CreateCondition(
else else
pattern_singletons = &substring_pattern_singletons_; pattern_singletons = &substring_pattern_singletons_;
PatternSingletons::const_iterator iter = auto iter = pattern_singletons->find(&search_pattern);
pattern_singletons->find(&search_pattern);
if (iter != pattern_singletons->end()) if (iter != pattern_singletons->end())
return URLMatcherCondition(criterion, *iter); return URLMatcherCondition(criterion, iter->first);
StringPattern* new_pattern = new StringPattern(pattern, id_counter_++); StringPattern* new_pattern = new StringPattern(pattern, id_counter_++);
pattern_singletons->insert(new_pattern); (*pattern_singletons)[new_pattern] = base::WrapUnique(new_pattern);
return URLMatcherCondition(criterion, new_pattern); return URLMatcherCondition(criterion, new_pattern);
} }
......
...@@ -215,8 +215,9 @@ class URL_MATCHER_EXPORT URLMatcherConditionFactory { ...@@ -215,8 +215,9 @@ class URL_MATCHER_EXPORT URLMatcherConditionFactory {
}; };
// Set to ensure that we generate only one StringPattern for each content // Set to ensure that we generate only one StringPattern for each content
// of StringPattern::pattern(). // of StringPattern::pattern().
typedef std::set<StringPattern*, StringPatternPointerCompare> using PatternSingletons = std::map<StringPattern*,
PatternSingletons; std::unique_ptr<StringPattern>,
StringPatternPointerCompare>;
PatternSingletons substring_pattern_singletons_; PatternSingletons substring_pattern_singletons_;
PatternSingletons regex_pattern_singletons_; PatternSingletons regex_pattern_singletons_;
PatternSingletons origin_and_path_regex_pattern_singletons_; PatternSingletons origin_and_path_regex_pattern_singletons_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment