OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/debug/trace_event_impl.h" | 5 #include "base/debug/trace_event_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/debug/leak_annotations.h" | 10 #include "base/debug/leak_annotations.h" |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
386 uintptr_t category_ptr = reinterpret_cast<uintptr_t>(category_enabled); | 386 uintptr_t category_ptr = reinterpret_cast<uintptr_t>(category_enabled); |
387 DCHECK(category_ptr >= category_begin && | 387 DCHECK(category_ptr >= category_begin && |
388 category_ptr < reinterpret_cast<uintptr_t>(g_category_enabled + | 388 category_ptr < reinterpret_cast<uintptr_t>(g_category_enabled + |
389 TRACE_EVENT_MAX_CATEGORIES)) << | 389 TRACE_EVENT_MAX_CATEGORIES)) << |
390 "out of bounds category pointer"; | 390 "out of bounds category pointer"; |
391 uintptr_t category_index = | 391 uintptr_t category_index = |
392 (category_ptr - category_begin) / sizeof(g_category_enabled[0]); | 392 (category_ptr - category_begin) / sizeof(g_category_enabled[0]); |
393 return g_categories[category_index]; | 393 return g_categories[category_index]; |
394 } | 394 } |
395 | 395 |
396 static bool IsTagInCategory(const char* tag_expr, const char* category) { | |
397 CStringTokenizer tokens(category, category + strlen(category), ","); | |
398 while (tokens.GetNext()) { | |
399 if (MatchPattern(tokens.token().c_str(), tag_expr)) | |
400 return true; | |
401 } | |
402 return false; | |
403 } | |
404 | |
405 // A tag composite category name would be something like: "webkit,input" | |
406 static bool IsTagCompositeCategory(const char* category) { | |
407 return strchr(category, ','); | |
408 } | |
409 | |
396 static void EnableMatchingCategory(int category_index, | 410 static void EnableMatchingCategory(int category_index, |
nduca
2013/01/09 09:43:33
I'd like to update the naming convention throughou
| |
397 const std::vector<std::string>& patterns, | 411 const std::vector<std::string>& patterns, |
398 unsigned char matched_value, | 412 unsigned char matched_value, |
399 unsigned char unmatched_value) { | 413 unsigned char unmatched_value) { |
400 std::vector<std::string>::const_iterator ci = patterns.begin(); | 414 std::vector<std::string>::const_iterator ci = patterns.begin(); |
401 bool is_match = false; | 415 bool is_match = false; |
416 bool has_matching_tag = false; | |
417 bool is_tag_composite_category = | |
418 IsTagCompositeCategory(g_categories[category_index]); | |
402 for (; ci != patterns.end(); ++ci) { | 419 for (; ci != patterns.end(); ++ci) { |
403 is_match = MatchPattern(g_categories[category_index], ci->c_str()); | 420 is_match = MatchPattern(g_categories[category_index], ci->c_str()); |
404 if (is_match) | 421 has_matching_tag = is_tag_composite_category && |
nduca
2013/01/09 09:43:33
cant you make this just a change to MatchPattern?
| |
422 IsTagInCategory(ci->c_str(), | |
423 g_categories[category_index]); | |
424 | |
425 if (is_match || has_matching_tag) | |
405 break; | 426 break; |
406 } | 427 } |
407 g_category_enabled[category_index] = is_match ? | 428 g_category_enabled[category_index] = is_match || has_matching_tag ? |
408 matched_value : unmatched_value; | 429 matched_value : unmatched_value; |
409 } | 430 } |
410 | 431 |
411 // Enable/disable each category based on the category filters in |patterns|. | 432 // Enable/disable each category based on the category filters in |patterns|. |
412 // If the category name matches one of the patterns, its enabled status is set | 433 // If the category name matches one of the patterns, its enabled status is set |
413 // to |matched_value|. Otherwise its enabled status is set to |unmatched_value|. | 434 // to |matched_value|. Otherwise its enabled status is set to |unmatched_value|. |
414 static void EnableMatchingCategories(const std::vector<std::string>& patterns, | 435 static void EnableMatchingCategories(const std::vector<std::string>& patterns, |
415 unsigned char matched_value, | 436 unsigned char matched_value, |
416 unsigned char unmatched_value) { | 437 unsigned char unmatched_value) { |
417 for (int i = 0; i < g_category_index; i++) | 438 for (int i = 0; i < g_category_index; i++) |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
780 unsigned long long pid = static_cast<unsigned long long>(process_id_); | 801 unsigned long long pid = static_cast<unsigned long long>(process_id_); |
781 process_id_hash_ = (offset_basis ^ pid) * fnv_prime; | 802 process_id_hash_ = (offset_basis ^ pid) * fnv_prime; |
782 } | 803 } |
783 | 804 |
784 void TraceLog::SetTimeOffset(TimeDelta offset) { | 805 void TraceLog::SetTimeOffset(TimeDelta offset) { |
785 time_offset_ = offset; | 806 time_offset_ = offset; |
786 } | 807 } |
787 | 808 |
788 } // namespace debug | 809 } // namespace debug |
789 } // namespace base | 810 } // namespace base |
OLD | NEW |