| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 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/trace_event/trace_config.h" | 5 #include "base/trace_event/trace_config.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 const char kSyntheticDelaysParam[] = "synthetic_delays"; | 43 const char kSyntheticDelaysParam[] = "synthetic_delays"; |
| 44 | 44 |
| 45 const char kSyntheticDelayCategoryFilterPrefix[] = "DELAY("; | 45 const char kSyntheticDelayCategoryFilterPrefix[] = "DELAY("; |
| 46 | 46 |
| 47 // String parameters that is used to parse memory dump config in trace config | 47 // String parameters that is used to parse memory dump config in trace config |
| 48 // string. | 48 // string. |
| 49 const char kMemoryDumpConfigParam[] = "memory_dump_config"; | 49 const char kMemoryDumpConfigParam[] = "memory_dump_config"; |
| 50 const char kTriggersParam[] = "triggers"; | 50 const char kTriggersParam[] = "triggers"; |
| 51 const char kPeriodicIntervalParam[] = "periodic_interval_ms"; | 51 const char kPeriodicIntervalParam[] = "periodic_interval_ms"; |
| 52 const char kModeParam[] = "mode"; | 52 const char kModeParam[] = "mode"; |
| 53 const char kMinAllocationSize[] = "min_allocation_size_bytes"; |
| 53 | 54 |
| 54 // Default configuration of memory dumps. | 55 // Default configuration of memory dumps. |
| 55 const TraceConfig::MemoryDumpTriggerConfig kDefaultHeavyMemoryDumpTrigger = { | 56 const TraceConfig::MemoryDumpTriggerConfig kDefaultHeavyMemoryDumpTrigger = { |
| 56 2000, // periodic_interval_ms | 57 2000, // periodic_interval_ms |
| 57 MemoryDumpLevelOfDetail::DETAILED}; | 58 MemoryDumpLevelOfDetail::DETAILED}; |
| 58 const TraceConfig::MemoryDumpTriggerConfig kDefaultLightMemoryDumpTrigger = { | 59 const TraceConfig::MemoryDumpTriggerConfig kDefaultLightMemoryDumpTrigger = { |
| 59 250, // periodic_interval_ms | 60 250, // periodic_interval_ms |
| 60 MemoryDumpLevelOfDetail::LIGHT}; | 61 MemoryDumpLevelOfDetail::LIGHT}; |
| 61 | 62 |
| 62 class ConvertableTraceConfigToTraceFormat | 63 class ConvertableTraceConfigToTraceFormat |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 116 else | 117 else |
| 117 InitializeDefault(); | 118 InitializeDefault(); |
| 118 } | 119 } |
| 119 | 120 |
| 120 TraceConfig::TraceConfig(const TraceConfig& tc) | 121 TraceConfig::TraceConfig(const TraceConfig& tc) |
| 121 : record_mode_(tc.record_mode_), | 122 : record_mode_(tc.record_mode_), |
| 122 enable_sampling_(tc.enable_sampling_), | 123 enable_sampling_(tc.enable_sampling_), |
| 123 enable_systrace_(tc.enable_systrace_), | 124 enable_systrace_(tc.enable_systrace_), |
| 124 enable_argument_filter_(tc.enable_argument_filter_), | 125 enable_argument_filter_(tc.enable_argument_filter_), |
| 125 memory_dump_config_(tc.memory_dump_config_), | 126 memory_dump_config_(tc.memory_dump_config_), |
| 127 min_allocation_size_bytes_(tc.min_allocation_size_bytes_), |
| 126 included_categories_(tc.included_categories_), | 128 included_categories_(tc.included_categories_), |
| 127 disabled_categories_(tc.disabled_categories_), | 129 disabled_categories_(tc.disabled_categories_), |
| 128 excluded_categories_(tc.excluded_categories_), | 130 excluded_categories_(tc.excluded_categories_), |
| 129 synthetic_delays_(tc.synthetic_delays_) {} | 131 synthetic_delays_(tc.synthetic_delays_) {} |
| 130 | 132 |
| 131 TraceConfig::~TraceConfig() { | 133 TraceConfig::~TraceConfig() { |
| 132 } | 134 } |
| 133 | 135 |
| 134 TraceConfig& TraceConfig::operator=(const TraceConfig& rhs) { | 136 TraceConfig& TraceConfig::operator=(const TraceConfig& rhs) { |
| 135 if (this == &rhs) | 137 if (this == &rhs) |
| 136 return *this; | 138 return *this; |
| 137 | 139 |
| 138 record_mode_ = rhs.record_mode_; | 140 record_mode_ = rhs.record_mode_; |
| 139 enable_sampling_ = rhs.enable_sampling_; | 141 enable_sampling_ = rhs.enable_sampling_; |
| 140 enable_systrace_ = rhs.enable_systrace_; | 142 enable_systrace_ = rhs.enable_systrace_; |
| 141 enable_argument_filter_ = rhs.enable_argument_filter_; | 143 enable_argument_filter_ = rhs.enable_argument_filter_; |
| 142 memory_dump_config_ = rhs.memory_dump_config_; | 144 memory_dump_config_ = rhs.memory_dump_config_; |
| 145 min_allocation_size_bytes_ = rhs.min_allocation_size_bytes_; |
| 143 included_categories_ = rhs.included_categories_; | 146 included_categories_ = rhs.included_categories_; |
| 144 disabled_categories_ = rhs.disabled_categories_; | 147 disabled_categories_ = rhs.disabled_categories_; |
| 145 excluded_categories_ = rhs.excluded_categories_; | 148 excluded_categories_ = rhs.excluded_categories_; |
| 146 synthetic_delays_ = rhs.synthetic_delays_; | 149 synthetic_delays_ = rhs.synthetic_delays_; |
| 147 return *this; | 150 return *this; |
| 148 } | 151 } |
| 149 | 152 |
| 150 const TraceConfig::StringList& TraceConfig::GetSyntheticDelayValues() const { | 153 const TraceConfig::StringList& TraceConfig::GetSyntheticDelayValues() const { |
| 151 return synthetic_delays_; | 154 return synthetic_delays_; |
| 152 } | 155 } |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 continue; | 512 continue; |
| 510 } | 513 } |
| 511 DCHECK_GT(interval, 0); | 514 DCHECK_GT(interval, 0); |
| 512 dump_config.periodic_interval_ms = static_cast<uint32_t>(interval); | 515 dump_config.periodic_interval_ms = static_cast<uint32_t>(interval); |
| 513 std::string level_of_detail_str; | 516 std::string level_of_detail_str; |
| 514 trigger->GetString(kModeParam, &level_of_detail_str); | 517 trigger->GetString(kModeParam, &level_of_detail_str); |
| 515 dump_config.level_of_detail = | 518 dump_config.level_of_detail = |
| 516 StringToMemoryDumpLevelOfDetail(level_of_detail_str); | 519 StringToMemoryDumpLevelOfDetail(level_of_detail_str); |
| 517 memory_dump_config_.push_back(dump_config); | 520 memory_dump_config_.push_back(dump_config); |
| 518 } | 521 } |
| 522 |
| 523 int min_size_bytes = 0; |
| 524 if (memory_dump_config.GetInteger(kMinAllocationSize, &min_size_bytes) |
| 525 && min_size_bytes >= 0) { |
| 526 min_allocation_size_bytes_ = static_cast<size_t>(min_size_bytes); |
| 527 } else { |
| 528 min_allocation_size_bytes_ = kDefaultMinAllocationSizeBytes; |
| 529 } |
| 530 |
| 519 } | 531 } |
| 520 | 532 |
| 521 void TraceConfig::SetDefaultMemoryDumpConfig() { | 533 void TraceConfig::SetDefaultMemoryDumpConfig() { |
| 522 memory_dump_config_.clear(); | 534 memory_dump_config_.clear(); |
| 523 memory_dump_config_.push_back(kDefaultHeavyMemoryDumpTrigger); | 535 memory_dump_config_.push_back(kDefaultHeavyMemoryDumpTrigger); |
| 524 memory_dump_config_.push_back(kDefaultLightMemoryDumpTrigger); | 536 memory_dump_config_.push_back(kDefaultLightMemoryDumpTrigger); |
| 537 min_allocation_size_bytes_ = kDefaultMinAllocationSizeBytes; |
| 525 } | 538 } |
| 526 | 539 |
| 527 void TraceConfig::ToDict(base::DictionaryValue& dict) const { | 540 void TraceConfig::ToDict(base::DictionaryValue& dict) const { |
| 528 switch (record_mode_) { | 541 switch (record_mode_) { |
| 529 case RECORD_UNTIL_FULL: | 542 case RECORD_UNTIL_FULL: |
| 530 dict.SetString(kRecordModeParam, kRecordUntilFull); | 543 dict.SetString(kRecordModeParam, kRecordUntilFull); |
| 531 break; | 544 break; |
| 532 case RECORD_CONTINUOUSLY: | 545 case RECORD_CONTINUOUSLY: |
| 533 dict.SetString(kRecordModeParam, kRecordContinuously); | 546 dict.SetString(kRecordModeParam, kRecordContinuously); |
| 534 break; | 547 break; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 trigger_dict->SetInteger(kPeriodicIntervalParam, | 588 trigger_dict->SetInteger(kPeriodicIntervalParam, |
| 576 static_cast<int>(config.periodic_interval_ms)); | 589 static_cast<int>(config.periodic_interval_ms)); |
| 577 trigger_dict->SetString( | 590 trigger_dict->SetString( |
| 578 kModeParam, MemoryDumpLevelOfDetailToString(config.level_of_detail)); | 591 kModeParam, MemoryDumpLevelOfDetailToString(config.level_of_detail)); |
| 579 triggers_list->Append(std::move(trigger_dict)); | 592 triggers_list->Append(std::move(trigger_dict)); |
| 580 } | 593 } |
| 581 | 594 |
| 582 // Empty triggers will still be specified explicitly since it means that | 595 // Empty triggers will still be specified explicitly since it means that |
| 583 // the periodic dumps are not enabled. | 596 // the periodic dumps are not enabled. |
| 584 memory_dump_config->Set(kTriggersParam, std::move(triggers_list)); | 597 memory_dump_config->Set(kTriggersParam, std::move(triggers_list)); |
| 598 |
| 599 if (min_allocation_size_bytes_ != kDefaultMinAllocationSizeBytes) |
| 600 memory_dump_config->SetInteger(kMinAllocationSize, |
| 601 min_allocation_size_bytes_); |
| 585 dict.Set(kMemoryDumpConfigParam, std::move(memory_dump_config)); | 602 dict.Set(kMemoryDumpConfigParam, std::move(memory_dump_config)); |
| 586 } | 603 } |
| 587 } | 604 } |
| 588 | 605 |
| 589 std::string TraceConfig::ToTraceOptionsString() const { | 606 std::string TraceConfig::ToTraceOptionsString() const { |
| 590 std::string ret; | 607 std::string ret; |
| 591 switch (record_mode_) { | 608 switch (record_mode_) { |
| 592 case RECORD_UNTIL_FULL: | 609 case RECORD_UNTIL_FULL: |
| 593 ret = kRecordUntilFull; | 610 ret = kRecordUntilFull; |
| 594 break; | 611 break; |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 672 str.at(0) == ' ' || | 689 str.at(0) == ' ' || |
| 673 str.at(str.length() - 1) == ' '; | 690 str.at(str.length() - 1) == ' '; |
| 674 } | 691 } |
| 675 | 692 |
| 676 bool TraceConfig::HasIncludedPatterns() const { | 693 bool TraceConfig::HasIncludedPatterns() const { |
| 677 return !included_categories_.empty(); | 694 return !included_categories_.empty(); |
| 678 } | 695 } |
| 679 | 696 |
| 680 } // namespace trace_event | 697 } // namespace trace_event |
| 681 } // namespace base | 698 } // namespace base |
| OLD | NEW |