diff options
author | brettw <brettw@chromium.org> | 2015-07-06 15:09:00 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-06 22:10:42 +0000 |
commit | d97eede0d9eb25ebffc918c8ebfcf9a9d9703a88 (patch) | |
tree | e83dc87df21704e72e63423961e82b02244ac015 /base | |
parent | 7d47f7a394e09e1a6e3e546932051649f185d47e (diff) | |
download | chromium_src-d97eede0d9eb25ebffc918c8ebfcf9a9d9703a88.zip chromium_src-d97eede0d9eb25ebffc918c8ebfcf9a9d9703a88.tar.gz chromium_src-d97eede0d9eb25ebffc918c8ebfcf9a9d9703a88.tar.bz2 |
Move MatchPattern to its own header and the base namespace.
BUG=
Review URL: https://codereview.chromium.org/1226673003
Cr-Commit-Position: refs/heads/master@{#337488}
Diffstat (limited to 'base')
-rw-r--r-- | base/BUILD.gn | 3 | ||||
-rw-r--r-- | base/base.gyp | 1 | ||||
-rw-r--r-- | base/base.gypi | 2 | ||||
-rw-r--r-- | base/strings/pattern.cc | 169 | ||||
-rw-r--r-- | base/strings/pattern.h | 26 | ||||
-rw-r--r-- | base/strings/pattern_unittest.cc | 50 | ||||
-rw-r--r-- | base/strings/string_util.cc | 155 | ||||
-rw-r--r-- | base/strings/string_util.h | 10 | ||||
-rw-r--r-- | base/strings/string_util_unittest.cc | 39 | ||||
-rw-r--r-- | base/test/launcher/test_launcher.cc | 1 | ||||
-rw-r--r-- | base/test/trace_event_analyzer.cc | 9 | ||||
-rw-r--r-- | base/trace_event/trace_config.cc | 13 | ||||
-rw-r--r-- | base/trace_event/trace_event_unittest.cc | 5 |
13 files changed, 267 insertions, 216 deletions
diff --git a/base/BUILD.gn b/base/BUILD.gn index b500741..3852d0a 100644 --- a/base/BUILD.gn +++ b/base/BUILD.gn @@ -425,6 +425,8 @@ component("base") { "strings/latin1_string_conversions.h", "strings/nullable_string16.cc", "strings/nullable_string16.h", + "strings/pattern.cc", + "strings/pattern.h", "strings/safe_sprintf.cc", "strings/safe_sprintf.h", "strings/string16.cc", @@ -1276,6 +1278,7 @@ test("base_unittests") { "sha1_unittest.cc", "stl_util_unittest.cc", "strings/nullable_string16_unittest.cc", + "strings/pattern_unittest.cc", "strings/safe_sprintf_unittest.cc", "strings/string16_unittest.cc", "strings/string_number_conversions_unittest.cc", diff --git a/base/base.gyp b/base/base.gyp index ac51d259..76f5974 100644 --- a/base/base.gyp +++ b/base/base.gyp @@ -580,6 +580,7 @@ 'sha1_unittest.cc', 'stl_util_unittest.cc', 'strings/nullable_string16_unittest.cc', + 'strings/pattern_unittest.cc', 'strings/safe_sprintf_unittest.cc', 'strings/string16_unittest.cc', 'strings/string_number_conversions_unittest.cc', diff --git a/base/base.gypi b/base/base.gypi index 86815b6..5008c15 100644 --- a/base/base.gypi +++ b/base/base.gypi @@ -544,6 +544,8 @@ 'strings/latin1_string_conversions.h', 'strings/nullable_string16.cc', 'strings/nullable_string16.h', + 'strings/pattern.cc', + 'strings/pattern.h', 'strings/safe_sprintf.cc', 'strings/safe_sprintf.h', 'strings/string16.cc', diff --git a/base/strings/pattern.cc b/base/strings/pattern.cc new file mode 100644 index 0000000..af30aab --- /dev/null +++ b/base/strings/pattern.cc @@ -0,0 +1,169 @@ +// Copyright 2015 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 "base/strings/pattern.h" + +#include "base/third_party/icu/icu_utf.h" + +namespace base { + +namespace { + +static bool IsWildcard(base_icu::UChar32 character) { + return character == '*' || character == '?'; +} + +// Move the strings pointers to the point where they start to differ. +template <typename CHAR, typename NEXT> +static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end, + const CHAR** string, const CHAR* string_end, + NEXT next) { + const CHAR* escape = NULL; + while (*pattern != pattern_end && *string != string_end) { + if (!escape && IsWildcard(**pattern)) { + // We don't want to match wildcard here, except if it's escaped. + return; + } + + // Check if the escapement char is found. If so, skip it and move to the + // next character. + if (!escape && **pattern == '\\') { + escape = *pattern; + next(pattern, pattern_end); + continue; + } + + // Check if the chars match, if so, increment the ptrs. + const CHAR* pattern_next = *pattern; + const CHAR* string_next = *string; + base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end); + if (pattern_char == next(&string_next, string_end) && + pattern_char != CBU_SENTINEL) { + *pattern = pattern_next; + *string = string_next; + } else { + // Uh oh, it did not match, we are done. If the last char was an + // escapement, that means that it was an error to advance the ptr here, + // let's put it back where it was. This also mean that the MatchPattern + // function will return false because if we can't match an escape char + // here, then no one will. + if (escape) { + *pattern = escape; + } + return; + } + + escape = NULL; + } +} + +template <typename CHAR, typename NEXT> +static void EatWildcard(const CHAR** pattern, const CHAR* end, NEXT next) { + while (*pattern != end) { + if (!IsWildcard(**pattern)) + return; + next(pattern, end); + } +} + +template <typename CHAR, typename NEXT> +static bool MatchPatternT(const CHAR* eval, const CHAR* eval_end, + const CHAR* pattern, const CHAR* pattern_end, + int depth, + NEXT next) { + const int kMaxDepth = 16; + if (depth > kMaxDepth) + return false; + + // Eat all the matching chars. + EatSameChars(&pattern, pattern_end, &eval, eval_end, next); + + // If the string is empty, then the pattern must be empty too, or contains + // only wildcards. + if (eval == eval_end) { + EatWildcard(&pattern, pattern_end, next); + return pattern == pattern_end; + } + + // Pattern is empty but not string, this is not a match. + if (pattern == pattern_end) + return false; + + // If this is a question mark, then we need to compare the rest with + // the current string or the string with one character eaten. + const CHAR* next_pattern = pattern; + next(&next_pattern, pattern_end); + if (pattern[0] == '?') { + if (MatchPatternT(eval, eval_end, next_pattern, pattern_end, + depth + 1, next)) + return true; + const CHAR* next_eval = eval; + next(&next_eval, eval_end); + if (MatchPatternT(next_eval, eval_end, next_pattern, pattern_end, + depth + 1, next)) + return true; + } + + // This is a *, try to match all the possible substrings with the remainder + // of the pattern. + if (pattern[0] == '*') { + // Collapse duplicate wild cards (********** into *) so that the + // method does not recurse unnecessarily. http://crbug.com/52839 + EatWildcard(&next_pattern, pattern_end, next); + + while (eval != eval_end) { + if (MatchPatternT(eval, eval_end, next_pattern, pattern_end, + depth + 1, next)) + return true; + eval++; + } + + // We reached the end of the string, let see if the pattern contains only + // wildcards. + if (eval == eval_end) { + EatWildcard(&pattern, pattern_end, next); + if (pattern != pattern_end) + return false; + return true; + } + } + + return false; +} + +struct NextCharUTF8 { + base_icu::UChar32 operator()(const char** p, const char* end) { + base_icu::UChar32 c; + int offset = 0; + CBU8_NEXT(*p, offset, end - *p, c); + *p += offset; + return c; + } +}; + +struct NextCharUTF16 { + base_icu::UChar32 operator()(const char16** p, const char16* end) { + base_icu::UChar32 c; + int offset = 0; + CBU16_NEXT(*p, offset, end - *p, c); + *p += offset; + return c; + } +}; + +} // namespace + +bool MatchPattern(const StringPiece& eval, const StringPiece& pattern) { + return MatchPatternT(eval.data(), eval.data() + eval.size(), + pattern.data(), pattern.data() + pattern.size(), + 0, NextCharUTF8()); +} + +bool MatchPattern(const StringPiece16& eval, const StringPiece16& pattern) { + return MatchPatternT(eval.data(), eval.data() + eval.size(), + pattern.data(), pattern.data() + pattern.size(), + 0, NextCharUTF16()); +} + +} // namespace base diff --git a/base/strings/pattern.h b/base/strings/pattern.h new file mode 100644 index 0000000..b698207 --- /dev/null +++ b/base/strings/pattern.h @@ -0,0 +1,26 @@ +// Copyright 2015 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. + +#ifndef BASE_STRINGS_PATTERN_H_ +#define BASE_STRINGS_PATTERN_H_ + +#include "base/base_export.h" +#include "base/strings/string_piece.h" + +namespace base { + +// Returns true if the string passed in matches the pattern. The pattern +// string can contain wildcards like * and ? +// +// The backslash character (\) is an escape character for * and ? +// We limit the patterns to having a max of 16 * or ? characters. +// ? matches 0 or 1 character, while * matches 0 or more characters. +BASE_EXPORT bool MatchPattern(const StringPiece& string, + const StringPiece& pattern); +BASE_EXPORT bool MatchPattern(const StringPiece16& string, + const StringPiece16& pattern); + +} // namespace base + +#endif // BASE_STRINGS_PATTERN_H_ diff --git a/base/strings/pattern_unittest.cc b/base/strings/pattern_unittest.cc new file mode 100644 index 0000000..9e82b3c --- /dev/null +++ b/base/strings/pattern_unittest.cc @@ -0,0 +1,50 @@ +// Copyright 2015 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 "base/strings/pattern.h" +#include "base/strings/utf_string_conversions.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace base { + +TEST(StringUtilTest, MatchPatternTest) { + EXPECT_TRUE(MatchPattern("www.google.com", "*.com")); + EXPECT_TRUE(MatchPattern("www.google.com", "*")); + EXPECT_FALSE(MatchPattern("www.google.com", "www*.g*.org")); + EXPECT_TRUE(MatchPattern("Hello", "H?l?o")); + EXPECT_FALSE(MatchPattern("www.google.com", "http://*)")); + EXPECT_FALSE(MatchPattern("www.msn.com", "*.COM")); + EXPECT_TRUE(MatchPattern("Hello*1234", "He??o\\*1*")); + EXPECT_FALSE(MatchPattern("", "*.*")); + EXPECT_TRUE(MatchPattern("", "*")); + EXPECT_TRUE(MatchPattern("", "?")); + EXPECT_TRUE(MatchPattern("", "")); + EXPECT_FALSE(MatchPattern("Hello", "")); + EXPECT_TRUE(MatchPattern("Hello*", "Hello*")); + // Stop after a certain recursion depth. + EXPECT_FALSE(MatchPattern("123456789012345678", "?????????????????*")); + + // Test UTF8 matching. + EXPECT_TRUE(MatchPattern("heart: \xe2\x99\xa0", "*\xe2\x99\xa0")); + EXPECT_TRUE(MatchPattern("heart: \xe2\x99\xa0.", "heart: ?.")); + EXPECT_TRUE(MatchPattern("hearts: \xe2\x99\xa0\xe2\x99\xa0", "*")); + // Invalid sequences should be handled as a single invalid character. + EXPECT_TRUE(MatchPattern("invalid: \xef\xbf\xbe", "invalid: ?")); + // If the pattern has invalid characters, it shouldn't match anything. + EXPECT_FALSE(MatchPattern("\xf4\x90\x80\x80", "\xf4\x90\x80\x80")); + + // Test UTF16 character matching. + EXPECT_TRUE(MatchPattern(UTF8ToUTF16("www.google.com"), + UTF8ToUTF16("*.com"))); + EXPECT_TRUE(MatchPattern(UTF8ToUTF16("Hello*1234"), + UTF8ToUTF16("He??o\\*1*"))); + + // This test verifies that consecutive wild cards are collapsed into 1 + // wildcard (when this doesn't occur, MatchPattern reaches it's maximum + // recursion depth). + EXPECT_TRUE(MatchPattern(UTF8ToUTF16("Hello"), + UTF8ToUTF16("He********************************o"))); +} + +} // namespace base diff --git a/base/strings/string_util.cc b/base/strings/string_util.cc index 8d1d238..e2b7311 100644 --- a/base/strings/string_util.cc +++ b/base/strings/string_util.cc @@ -957,161 +957,6 @@ string16 ReplaceStringPlaceholders(const string16& format_string, return result; } -static bool IsWildcard(base_icu::UChar32 character) { - return character == '*' || character == '?'; -} - -// Move the strings pointers to the point where they start to differ. -template <typename CHAR, typename NEXT> -static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end, - const CHAR** string, const CHAR* string_end, - NEXT next) { - const CHAR* escape = NULL; - while (*pattern != pattern_end && *string != string_end) { - if (!escape && IsWildcard(**pattern)) { - // We don't want to match wildcard here, except if it's escaped. - return; - } - - // Check if the escapement char is found. If so, skip it and move to the - // next character. - if (!escape && **pattern == '\\') { - escape = *pattern; - next(pattern, pattern_end); - continue; - } - - // Check if the chars match, if so, increment the ptrs. - const CHAR* pattern_next = *pattern; - const CHAR* string_next = *string; - base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end); - if (pattern_char == next(&string_next, string_end) && - pattern_char != CBU_SENTINEL) { - *pattern = pattern_next; - *string = string_next; - } else { - // Uh oh, it did not match, we are done. If the last char was an - // escapement, that means that it was an error to advance the ptr here, - // let's put it back where it was. This also mean that the MatchPattern - // function will return false because if we can't match an escape char - // here, then no one will. - if (escape) { - *pattern = escape; - } - return; - } - - escape = NULL; - } -} - -template <typename CHAR, typename NEXT> -static void EatWildcard(const CHAR** pattern, const CHAR* end, NEXT next) { - while (*pattern != end) { - if (!IsWildcard(**pattern)) - return; - next(pattern, end); - } -} - -template <typename CHAR, typename NEXT> -static bool MatchPatternT(const CHAR* eval, const CHAR* eval_end, - const CHAR* pattern, const CHAR* pattern_end, - int depth, - NEXT next) { - const int kMaxDepth = 16; - if (depth > kMaxDepth) - return false; - - // Eat all the matching chars. - EatSameChars(&pattern, pattern_end, &eval, eval_end, next); - - // If the string is empty, then the pattern must be empty too, or contains - // only wildcards. - if (eval == eval_end) { - EatWildcard(&pattern, pattern_end, next); - return pattern == pattern_end; - } - - // Pattern is empty but not string, this is not a match. - if (pattern == pattern_end) - return false; - - // If this is a question mark, then we need to compare the rest with - // the current string or the string with one character eaten. - const CHAR* next_pattern = pattern; - next(&next_pattern, pattern_end); - if (pattern[0] == '?') { - if (MatchPatternT(eval, eval_end, next_pattern, pattern_end, - depth + 1, next)) - return true; - const CHAR* next_eval = eval; - next(&next_eval, eval_end); - if (MatchPatternT(next_eval, eval_end, next_pattern, pattern_end, - depth + 1, next)) - return true; - } - - // This is a *, try to match all the possible substrings with the remainder - // of the pattern. - if (pattern[0] == '*') { - // Collapse duplicate wild cards (********** into *) so that the - // method does not recurse unnecessarily. http://crbug.com/52839 - EatWildcard(&next_pattern, pattern_end, next); - - while (eval != eval_end) { - if (MatchPatternT(eval, eval_end, next_pattern, pattern_end, - depth + 1, next)) - return true; - eval++; - } - - // We reached the end of the string, let see if the pattern contains only - // wildcards. - if (eval == eval_end) { - EatWildcard(&pattern, pattern_end, next); - if (pattern != pattern_end) - return false; - return true; - } - } - - return false; -} - -struct NextCharUTF8 { - base_icu::UChar32 operator()(const char** p, const char* end) { - base_icu::UChar32 c; - int offset = 0; - CBU8_NEXT(*p, offset, end - *p, c); - *p += offset; - return c; - } -}; - -struct NextCharUTF16 { - base_icu::UChar32 operator()(const char16** p, const char16* end) { - base_icu::UChar32 c; - int offset = 0; - CBU16_NEXT(*p, offset, end - *p, c); - *p += offset; - return c; - } -}; - -bool MatchPattern(const base::StringPiece& eval, - const base::StringPiece& pattern) { - return MatchPatternT(eval.data(), eval.data() + eval.size(), - pattern.data(), pattern.data() + pattern.size(), - 0, NextCharUTF8()); -} - -bool MatchPattern(const string16& eval, const string16& pattern) { - return MatchPatternT(eval.c_str(), eval.c_str() + eval.size(), - pattern.c_str(), pattern.c_str() + pattern.size(), - 0, NextCharUTF16()); -} - // The following code is compatible with the OpenBSD lcpy interface. See: // http://www.gratisoft.us/todd/papers/strlcpy.html // ftp://ftp.openbsd.org/pub/OpenBSD/src/lib/libc/string/{wcs,str}lcpy.c diff --git a/base/strings/string_util.h b/base/strings/string_util.h index 1d3469f..f5cf0b3 100644 --- a/base/strings/string_util.h +++ b/base/strings/string_util.h @@ -542,14 +542,4 @@ BASE_EXPORT base::string16 ReplaceStringPlaceholders( const base::string16& a, size_t* offset); -// Returns true if the string passed in matches the pattern. The pattern -// string can contain wildcards like * and ? -// The backslash character (\) is an escape character for * and ? -// We limit the patterns to having a max of 16 * or ? characters. -// ? matches 0 or 1 character, while * matches 0 or more characters. -BASE_EXPORT bool MatchPattern(const base::StringPiece& string, - const base::StringPiece& pattern); -BASE_EXPORT bool MatchPattern(const base::string16& string, - const base::string16& pattern); - #endif // BASE_STRINGS_STRING_UTIL_H_ diff --git a/base/strings/string_util_unittest.cc b/base/strings/string_util_unittest.cc index fb0bead..ad7ff24 100644 --- a/base/strings/string_util_unittest.cc +++ b/base/strings/string_util_unittest.cc @@ -994,45 +994,6 @@ TEST(StringUtilTest, ReplaceStringPlaceholdersConsecutiveDollarSigns) { "$1 $$2 $$$3"); } -TEST(StringUtilTest, MatchPatternTest) { - EXPECT_TRUE(MatchPattern("www.google.com", "*.com")); - EXPECT_TRUE(MatchPattern("www.google.com", "*")); - EXPECT_FALSE(MatchPattern("www.google.com", "www*.g*.org")); - EXPECT_TRUE(MatchPattern("Hello", "H?l?o")); - EXPECT_FALSE(MatchPattern("www.google.com", "http://*)")); - EXPECT_FALSE(MatchPattern("www.msn.com", "*.COM")); - EXPECT_TRUE(MatchPattern("Hello*1234", "He??o\\*1*")); - EXPECT_FALSE(MatchPattern("", "*.*")); - EXPECT_TRUE(MatchPattern("", "*")); - EXPECT_TRUE(MatchPattern("", "?")); - EXPECT_TRUE(MatchPattern("", "")); - EXPECT_FALSE(MatchPattern("Hello", "")); - EXPECT_TRUE(MatchPattern("Hello*", "Hello*")); - // Stop after a certain recursion depth. - EXPECT_FALSE(MatchPattern("123456789012345678", "?????????????????*")); - - // Test UTF8 matching. - EXPECT_TRUE(MatchPattern("heart: \xe2\x99\xa0", "*\xe2\x99\xa0")); - EXPECT_TRUE(MatchPattern("heart: \xe2\x99\xa0.", "heart: ?.")); - EXPECT_TRUE(MatchPattern("hearts: \xe2\x99\xa0\xe2\x99\xa0", "*")); - // Invalid sequences should be handled as a single invalid character. - EXPECT_TRUE(MatchPattern("invalid: \xef\xbf\xbe", "invalid: ?")); - // If the pattern has invalid characters, it shouldn't match anything. - EXPECT_FALSE(MatchPattern("\xf4\x90\x80\x80", "\xf4\x90\x80\x80")); - - // Test UTF16 character matching. - EXPECT_TRUE(MatchPattern(UTF8ToUTF16("www.google.com"), - UTF8ToUTF16("*.com"))); - EXPECT_TRUE(MatchPattern(UTF8ToUTF16("Hello*1234"), - UTF8ToUTF16("He??o\\*1*"))); - - // This test verifies that consecutive wild cards are collapsed into 1 - // wildcard (when this doesn't occur, MatchPattern reaches it's maximum - // recursion depth). - EXPECT_TRUE(MatchPattern(UTF8ToUTF16("Hello"), - UTF8ToUTF16("He********************************o"))); -} - TEST(StringUtilTest, LcpyTest) { // Test the normal case where we fit in our buffer. { diff --git a/base/test/launcher/test_launcher.cc b/base/test/launcher/test_launcher.cc index 7f258f5..2a56b6c 100644 --- a/base/test/launcher/test_launcher.cc +++ b/base/test/launcher/test_launcher.cc @@ -25,6 +25,7 @@ #include "base/process/kill.h" #include "base/process/launch.h" #include "base/single_thread_task_runner.h" +#include "base/strings/pattern.h" #include "base/strings/string_number_conversions.h" #include "base/strings/string_split.h" #include "base/strings/string_util.h" diff --git a/base/test/trace_event_analyzer.cc b/base/test/trace_event_analyzer.cc index e46c2a5..93d7f30 100644 --- a/base/test/trace_event_analyzer.cc +++ b/base/test/trace_event_analyzer.cc @@ -10,6 +10,7 @@ #include "base/json/json_reader.h" #include "base/memory/scoped_ptr.h" +#include "base/strings/pattern.h" #include "base/values.h" namespace trace_analyzer { @@ -321,17 +322,17 @@ bool Query::CompareAsString(const TraceEvent& event, bool* result) const { switch (operator_) { case OP_EQ: if (right().is_pattern_) - *result = MatchPattern(lhs, rhs); + *result = base::MatchPattern(lhs, rhs); else if (left().is_pattern_) - *result = MatchPattern(rhs, lhs); + *result = base::MatchPattern(rhs, lhs); else *result = (lhs == rhs); return true; case OP_NE: if (right().is_pattern_) - *result = !MatchPattern(lhs, rhs); + *result = !base::MatchPattern(lhs, rhs); else if (left().is_pattern_) - *result = !MatchPattern(rhs, lhs); + *result = !base::MatchPattern(rhs, lhs); else *result = (lhs != rhs); return true; diff --git a/base/trace_event/trace_config.cc b/base/trace_event/trace_config.cc index ef9b892..2a15ec5 100644 --- a/base/trace_event/trace_config.cc +++ b/base/trace_event/trace_config.cc @@ -6,6 +6,7 @@ #include "base/json/json_reader.h" #include "base/json/json_writer.h" +#include "base/strings/pattern.h" #include "base/strings/string_split.h" #include "base/strings/string_tokenizer.h" #include "base/strings/stringprintf.h" @@ -147,8 +148,8 @@ bool TraceConfig::IsCategoryGroupEnabled( if (IsCategoryEnabled(category_group_token.c_str())) { return true; } - if (!MatchPattern(category_group_token.c_str(), - TRACE_DISABLED_BY_DEFAULT("*"))) + if (!base::MatchPattern(category_group_token.c_str(), + TRACE_DISABLED_BY_DEFAULT("*"))) had_enabled_by_default = true; } // Do a second pass to check for explicitly disabled categories @@ -160,7 +161,7 @@ bool TraceConfig::IsCategoryGroupEnabled( for (StringList::const_iterator ci = excluded_categories_.begin(); ci != excluded_categories_.end(); ++ci) { - if (MatchPattern(category_group_token.c_str(), ci->c_str())) { + if (base::MatchPattern(category_group_token.c_str(), ci->c_str())) { // Current token of category_group_name is present in excluded_list. // Flag the exclusion and proceed further to check if any of the // remaining categories of category_group_name is not present in the @@ -515,17 +516,17 @@ bool TraceConfig::IsCategoryEnabled(const char* category_name) const { for (ci = disabled_categories_.begin(); ci != disabled_categories_.end(); ++ci) { - if (MatchPattern(category_name, ci->c_str())) + if (base::MatchPattern(category_name, ci->c_str())) return true; } - if (MatchPattern(category_name, TRACE_DISABLED_BY_DEFAULT("*"))) + if (base::MatchPattern(category_name, TRACE_DISABLED_BY_DEFAULT("*"))) return false; for (ci = included_categories_.begin(); ci != included_categories_.end(); ++ci) { - if (MatchPattern(category_name, ci->c_str())) + if (base::MatchPattern(category_name, ci->c_str())) return true; } diff --git a/base/trace_event/trace_event_unittest.cc b/base/trace_event/trace_event_unittest.cc index d648129..bb9f689 100644 --- a/base/trace_event/trace_event_unittest.cc +++ b/base/trace_event/trace_event_unittest.cc @@ -15,6 +15,7 @@ #include "base/memory/singleton.h" #include "base/process/process_handle.h" #include "base/single_thread_task_runner.h" +#include "base/strings/pattern.h" #include "base/strings/stringprintf.h" #include "base/synchronization/waitable_event.h" #include "base/threading/platform_thread.h" @@ -2238,8 +2239,8 @@ namespace { bool IsTraceEventArgsWhitelisted(const char* category_group_name, const char* event_name) { - if (MatchPattern(category_group_name, "toplevel") && - MatchPattern(event_name, "*")) { + if (base::MatchPattern(category_group_name, "toplevel") && + base::MatchPattern(event_name, "*")) { return true; } |