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 @@
#include <stddef.h>
#include "base/logging.h"
#include "base/stl_util.h"
#include "base/memory/ptr_util.h"
#include "base/strings/string_util.h"
#include "components/url_matcher/substring_set_matcher.h"
#include "third_party/re2/src/re2/filtered_re2.h"
......@@ -102,13 +102,16 @@ void RegexSetMatcher::RebuildMatcher() {
// SubstringSetMatcher doesn't own its strings.
for (size_t i = 0; i < strings_to_match.size(); ++i) {
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() {
base::STLDeleteElements(&substring_patterns_);
substring_patterns_.clear();
}
} // namespace url_matcher
......@@ -75,7 +75,7 @@ class URL_MATCHER_EXPORT RegexSetMatcher {
// The substring patterns from FilteredRE2, which are used in
// |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
......
......@@ -9,6 +9,7 @@
#include <utility>
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/stl_util.h"
#include "url/gurl.h"
#include "url/url_canon.h"
......@@ -262,9 +263,6 @@ const char kQuerySeparator = '&';
URLMatcherConditionFactory::URLMatcherConditionFactory() : id_counter_(0) {}
URLMatcherConditionFactory::~URLMatcherConditionFactory() {
base::STLDeleteElements(&substring_pattern_singletons_);
base::STLDeleteElements(&regex_pattern_singletons_);
base::STLDeleteElements(&origin_and_path_regex_pattern_singletons_);
}
std::string URLMatcherConditionFactory::CanonicalizeURLForComponentSearches(
......@@ -463,32 +461,28 @@ URLMatcherConditionFactory::CreateOriginAndPathMatchesCondition(
void URLMatcherConditionFactory::ForgetUnusedPatterns(
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()) {
if (base::ContainsKey(used_patterns, (*i)->id())) {
if (base::ContainsKey(used_patterns, i->first->id()))
++i;
} else {
delete *i;
else
substring_pattern_singletons_.erase(i++);
}
}
i = regex_pattern_singletons_.begin();
while (i != regex_pattern_singletons_.end()) {
if (base::ContainsKey(used_patterns, (*i)->id())) {
if (base::ContainsKey(used_patterns, i->first->id()))
++i;
} else {
delete *i;
else
regex_pattern_singletons_.erase(i++);
}
}
i = origin_and_path_regex_pattern_singletons_.begin();
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;
} else {
delete *i;
else
origin_and_path_regex_pattern_singletons_.erase(i++);
}
}
}
......@@ -510,14 +504,13 @@ URLMatcherCondition URLMatcherConditionFactory::CreateCondition(
else
pattern_singletons = &substring_pattern_singletons_;
PatternSingletons::const_iterator iter =
pattern_singletons->find(&search_pattern);
auto iter = pattern_singletons->find(&search_pattern);
if (iter != pattern_singletons->end())
return URLMatcherCondition(criterion, *iter);
return URLMatcherCondition(criterion, iter->first);
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);
}
......
......@@ -215,8 +215,9 @@ class URL_MATCHER_EXPORT URLMatcherConditionFactory {
};
// Set to ensure that we generate only one StringPattern for each content
// of StringPattern::pattern().
typedef std::set<StringPattern*, StringPatternPointerCompare>
PatternSingletons;
using PatternSingletons = std::map<StringPattern*,
std::unique_ptr<StringPattern>,
StringPatternPointerCompare>;
PatternSingletons substring_pattern_singletons_;
PatternSingletons 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