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::TRIM_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::TRIM_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::TRIM_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 |