| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "components/metrics/serialization/metric_sample.h" | 5 #include "components/metrics/serialization/metric_sample.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 int min, | 111 int min, |
| 112 int max, | 112 int max, |
| 113 int bucket_count) { | 113 int bucket_count) { |
| 114 return scoped_ptr<MetricSample>(new MetricSample( | 114 return scoped_ptr<MetricSample>(new MetricSample( |
| 115 HISTOGRAM, histogram_name, sample, min, max, bucket_count)); | 115 HISTOGRAM, histogram_name, sample, min, max, bucket_count)); |
| 116 } | 116 } |
| 117 | 117 |
| 118 // static | 118 // static |
| 119 scoped_ptr<MetricSample> MetricSample::ParseHistogram( | 119 scoped_ptr<MetricSample> MetricSample::ParseHistogram( |
| 120 const std::string& serialized_histogram) { | 120 const std::string& serialized_histogram) { |
| 121 std::vector<std::string> parts; | 121 std::vector<base::StringPiece> parts = base::SplitStringPiece( |
| 122 base::SplitString(serialized_histogram, ' ', &parts); | 122 serialized_histogram, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
| 123 | 123 |
| 124 if (parts.size() != 5) | 124 if (parts.size() != 5) |
| 125 return scoped_ptr<MetricSample>(); | 125 return scoped_ptr<MetricSample>(); |
| 126 int sample, min, max, bucket_count; | 126 int sample, min, max, bucket_count; |
| 127 if (parts[0].empty() || !base::StringToInt(parts[1], &sample) || | 127 if (parts[0].empty() || !base::StringToInt(parts[1], &sample) || |
| 128 !base::StringToInt(parts[2], &min) || | 128 !base::StringToInt(parts[2], &min) || |
| 129 !base::StringToInt(parts[3], &max) || | 129 !base::StringToInt(parts[3], &max) || |
| 130 !base::StringToInt(parts[4], &bucket_count)) { | 130 !base::StringToInt(parts[4], &bucket_count)) { |
| 131 return scoped_ptr<MetricSample>(); | 131 return scoped_ptr<MetricSample>(); |
| 132 } | 132 } |
| 133 | 133 |
| 134 return HistogramSample(parts[0], sample, min, max, bucket_count); | 134 return HistogramSample(parts[0].as_string(), sample, min, max, bucket_count); |
| 135 } | 135 } |
| 136 | 136 |
| 137 // static | 137 // static |
| 138 scoped_ptr<MetricSample> MetricSample::SparseHistogramSample( | 138 scoped_ptr<MetricSample> MetricSample::SparseHistogramSample( |
| 139 const std::string& histogram_name, | 139 const std::string& histogram_name, |
| 140 int sample) { | 140 int sample) { |
| 141 return scoped_ptr<MetricSample>( | 141 return scoped_ptr<MetricSample>( |
| 142 new MetricSample(SPARSE_HISTOGRAM, histogram_name, sample, 0, 0, 0)); | 142 new MetricSample(SPARSE_HISTOGRAM, histogram_name, sample, 0, 0, 0)); |
| 143 } | 143 } |
| 144 | 144 |
| 145 // static | 145 // static |
| 146 scoped_ptr<MetricSample> MetricSample::ParseSparseHistogram( | 146 scoped_ptr<MetricSample> MetricSample::ParseSparseHistogram( |
| 147 const std::string& serialized_histogram) { | 147 const std::string& serialized_histogram) { |
| 148 std::vector<std::string> parts; | 148 std::vector<base::StringPiece> parts = base::SplitStringPiece( |
| 149 base::SplitString(serialized_histogram, ' ', &parts); | 149 serialized_histogram, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
| 150 if (parts.size() != 2) | 150 if (parts.size() != 2) |
| 151 return scoped_ptr<MetricSample>(); | 151 return scoped_ptr<MetricSample>(); |
| 152 int sample; | 152 int sample; |
| 153 if (parts[0].empty() || !base::StringToInt(parts[1], &sample)) | 153 if (parts[0].empty() || !base::StringToInt(parts[1], &sample)) |
| 154 return scoped_ptr<MetricSample>(); | 154 return scoped_ptr<MetricSample>(); |
| 155 | 155 |
| 156 return SparseHistogramSample(parts[0], sample); | 156 return SparseHistogramSample(parts[0].as_string(), sample); |
| 157 } | 157 } |
| 158 | 158 |
| 159 // static | 159 // static |
| 160 scoped_ptr<MetricSample> MetricSample::LinearHistogramSample( | 160 scoped_ptr<MetricSample> MetricSample::LinearHistogramSample( |
| 161 const std::string& histogram_name, | 161 const std::string& histogram_name, |
| 162 int sample, | 162 int sample, |
| 163 int max) { | 163 int max) { |
| 164 return scoped_ptr<MetricSample>( | 164 return scoped_ptr<MetricSample>( |
| 165 new MetricSample(LINEAR_HISTOGRAM, histogram_name, sample, 0, max, 0)); | 165 new MetricSample(LINEAR_HISTOGRAM, histogram_name, sample, 0, max, 0)); |
| 166 } | 166 } |
| 167 | 167 |
| 168 // static | 168 // static |
| 169 scoped_ptr<MetricSample> MetricSample::ParseLinearHistogram( | 169 scoped_ptr<MetricSample> MetricSample::ParseLinearHistogram( |
| 170 const std::string& serialized_histogram) { | 170 const std::string& serialized_histogram) { |
| 171 std::vector<std::string> parts; | 171 std::vector<base::StringPiece> parts = base::SplitStringPiece( |
| 172 serialized_histogram, " ", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); |
| 172 int sample, max; | 173 int sample, max; |
| 173 base::SplitString(serialized_histogram, ' ', &parts); | |
| 174 if (parts.size() != 3) | 174 if (parts.size() != 3) |
| 175 return scoped_ptr<MetricSample>(); | 175 return scoped_ptr<MetricSample>(); |
| 176 if (parts[0].empty() || !base::StringToInt(parts[1], &sample) || | 176 if (parts[0].empty() || !base::StringToInt(parts[1], &sample) || |
| 177 !base::StringToInt(parts[2], &max)) { | 177 !base::StringToInt(parts[2], &max)) { |
| 178 return scoped_ptr<MetricSample>(); | 178 return scoped_ptr<MetricSample>(); |
| 179 } | 179 } |
| 180 | 180 |
| 181 return LinearHistogramSample(parts[0], sample, max); | 181 return LinearHistogramSample(parts[0].as_string(), sample, max); |
| 182 } | 182 } |
| 183 | 183 |
| 184 // static | 184 // static |
| 185 scoped_ptr<MetricSample> MetricSample::UserActionSample( | 185 scoped_ptr<MetricSample> MetricSample::UserActionSample( |
| 186 const std::string& action_name) { | 186 const std::string& action_name) { |
| 187 return scoped_ptr<MetricSample>( | 187 return scoped_ptr<MetricSample>( |
| 188 new MetricSample(USER_ACTION, action_name, 0, 0, 0, 0)); | 188 new MetricSample(USER_ACTION, action_name, 0, 0, 0, 0)); |
| 189 } | 189 } |
| 190 | 190 |
| 191 bool MetricSample::IsEqual(const MetricSample& metric) { | 191 bool MetricSample::IsEqual(const MetricSample& metric) { |
| 192 return type_ == metric.type_ && name_ == metric.name_ && | 192 return type_ == metric.type_ && name_ == metric.name_ && |
| 193 sample_ == metric.sample_ && min_ == metric.min_ && | 193 sample_ == metric.sample_ && min_ == metric.min_ && |
| 194 max_ == metric.max_ && bucket_count_ == metric.bucket_count_; | 194 max_ == metric.max_ && bucket_count_ == metric.bucket_count_; |
| 195 } | 195 } |
| 196 | 196 |
| 197 } // namespace metrics | 197 } // namespace metrics |
| OLD | NEW |