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 "media/base/media_log.h" | 5 #include "media/base/media_log.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/atomic_sequence_num.h" | 9 #include "base/atomic_sequence_num.h" |
10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 } | 141 } |
142 std::string params_json; | 142 std::string params_json; |
143 base::JSONWriter::Write(event.params, ¶ms_json); | 143 base::JSONWriter::Write(event.params, ¶ms_json); |
144 return EventTypeToString(event.type) + " " + params_json; | 144 return EventTypeToString(event.type) + " " + params_json; |
145 } | 145 } |
146 | 146 |
147 MediaLog::MediaLog() : id_(g_media_log_count.GetNext()) {} | 147 MediaLog::MediaLog() : id_(g_media_log_count.GetNext()) {} |
148 | 148 |
149 MediaLog::~MediaLog() {} | 149 MediaLog::~MediaLog() {} |
150 | 150 |
151 void MediaLog::AddEvent(scoped_ptr<MediaLogEvent> event) {} | 151 void MediaLog::AddEvent(std::unique_ptr<MediaLogEvent> event) {} |
152 | 152 |
153 std::string MediaLog::GetLastErrorMessage() { | 153 std::string MediaLog::GetLastErrorMessage() { |
154 return ""; | 154 return ""; |
155 } | 155 } |
156 | 156 |
157 scoped_ptr<MediaLogEvent> MediaLog::CreateEvent(MediaLogEvent::Type type) { | 157 std::unique_ptr<MediaLogEvent> MediaLog::CreateEvent(MediaLogEvent::Type type) { |
158 scoped_ptr<MediaLogEvent> event(new MediaLogEvent); | 158 std::unique_ptr<MediaLogEvent> event(new MediaLogEvent); |
159 event->id = id_; | 159 event->id = id_; |
160 event->type = type; | 160 event->type = type; |
161 event->time = base::TimeTicks::Now(); | 161 event->time = base::TimeTicks::Now(); |
162 return event; | 162 return event; |
163 } | 163 } |
164 | 164 |
165 scoped_ptr<MediaLogEvent> MediaLog::CreateBooleanEvent( | 165 std::unique_ptr<MediaLogEvent> MediaLog::CreateBooleanEvent( |
166 MediaLogEvent::Type type, | 166 MediaLogEvent::Type type, |
167 const std::string& property, | 167 const std::string& property, |
168 bool value) { | 168 bool value) { |
169 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); | 169 std::unique_ptr<MediaLogEvent> event(CreateEvent(type)); |
170 event->params.SetBoolean(property, value); | 170 event->params.SetBoolean(property, value); |
171 return event; | 171 return event; |
172 } | 172 } |
173 | 173 |
174 scoped_ptr<MediaLogEvent> MediaLog::CreateStringEvent( | 174 std::unique_ptr<MediaLogEvent> MediaLog::CreateStringEvent( |
175 MediaLogEvent::Type type, | 175 MediaLogEvent::Type type, |
176 const std::string& property, | 176 const std::string& property, |
177 const std::string& value) { | 177 const std::string& value) { |
178 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); | 178 std::unique_ptr<MediaLogEvent> event(CreateEvent(type)); |
179 event->params.SetString(property, value); | 179 event->params.SetString(property, value); |
180 return event; | 180 return event; |
181 } | 181 } |
182 | 182 |
183 scoped_ptr<MediaLogEvent> MediaLog::CreateTimeEvent( | 183 std::unique_ptr<MediaLogEvent> MediaLog::CreateTimeEvent( |
184 MediaLogEvent::Type type, | 184 MediaLogEvent::Type type, |
185 const std::string& property, | 185 const std::string& property, |
186 base::TimeDelta value) { | 186 base::TimeDelta value) { |
187 scoped_ptr<MediaLogEvent> event(CreateEvent(type)); | 187 std::unique_ptr<MediaLogEvent> event(CreateEvent(type)); |
188 if (value.is_max()) | 188 if (value.is_max()) |
189 event->params.SetString(property, "unknown"); | 189 event->params.SetString(property, "unknown"); |
190 else | 190 else |
191 event->params.SetDouble(property, value.InSecondsF()); | 191 event->params.SetDouble(property, value.InSecondsF()); |
192 return event; | 192 return event; |
193 } | 193 } |
194 | 194 |
195 scoped_ptr<MediaLogEvent> MediaLog::CreateLoadEvent(const std::string& url) { | 195 std::unique_ptr<MediaLogEvent> MediaLog::CreateLoadEvent( |
196 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD)); | 196 const std::string& url) { |
| 197 std::unique_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::LOAD)); |
197 event->params.SetString("url", url); | 198 event->params.SetString("url", url); |
198 return event; | 199 return event; |
199 } | 200 } |
200 | 201 |
201 scoped_ptr<MediaLogEvent> MediaLog::CreateSeekEvent(float seconds) { | 202 std::unique_ptr<MediaLogEvent> MediaLog::CreateSeekEvent(float seconds) { |
202 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::SEEK)); | 203 std::unique_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::SEEK)); |
203 event->params.SetDouble("seek_target", seconds); | 204 event->params.SetDouble("seek_target", seconds); |
204 return event; | 205 return event; |
205 } | 206 } |
206 | 207 |
207 scoped_ptr<MediaLogEvent> MediaLog::CreatePipelineStateChangedEvent( | 208 std::unique_ptr<MediaLogEvent> MediaLog::CreatePipelineStateChangedEvent( |
208 PipelineImpl::State state) { | 209 PipelineImpl::State state) { |
209 scoped_ptr<MediaLogEvent> event( | 210 std::unique_ptr<MediaLogEvent> event( |
210 CreateEvent(MediaLogEvent::PIPELINE_STATE_CHANGED)); | 211 CreateEvent(MediaLogEvent::PIPELINE_STATE_CHANGED)); |
211 event->params.SetString("pipeline_state", | 212 event->params.SetString("pipeline_state", |
212 PipelineImpl::GetStateString(state)); | 213 PipelineImpl::GetStateString(state)); |
213 return event; | 214 return event; |
214 } | 215 } |
215 | 216 |
216 scoped_ptr<MediaLogEvent> MediaLog::CreatePipelineErrorEvent( | 217 std::unique_ptr<MediaLogEvent> MediaLog::CreatePipelineErrorEvent( |
217 PipelineStatus error) { | 218 PipelineStatus error) { |
218 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PIPELINE_ERROR)); | 219 std::unique_ptr<MediaLogEvent> event( |
| 220 CreateEvent(MediaLogEvent::PIPELINE_ERROR)); |
219 event->params.SetInteger("pipeline_error", error); | 221 event->params.SetInteger("pipeline_error", error); |
220 return event; | 222 return event; |
221 } | 223 } |
222 | 224 |
223 scoped_ptr<MediaLogEvent> MediaLog::CreateVideoSizeSetEvent( | 225 std::unique_ptr<MediaLogEvent> MediaLog::CreateVideoSizeSetEvent( |
224 size_t width, size_t height) { | 226 size_t width, |
225 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::VIDEO_SIZE_SET)); | 227 size_t height) { |
| 228 std::unique_ptr<MediaLogEvent> event( |
| 229 CreateEvent(MediaLogEvent::VIDEO_SIZE_SET)); |
226 event->params.SetInteger("width", width); | 230 event->params.SetInteger("width", width); |
227 event->params.SetInteger("height", height); | 231 event->params.SetInteger("height", height); |
228 return event; | 232 return event; |
229 } | 233 } |
230 | 234 |
231 scoped_ptr<MediaLogEvent> MediaLog::CreateBufferedExtentsChangedEvent( | 235 std::unique_ptr<MediaLogEvent> MediaLog::CreateBufferedExtentsChangedEvent( |
232 int64_t start, | 236 int64_t start, |
233 int64_t current, | 237 int64_t current, |
234 int64_t end) { | 238 int64_t end) { |
235 scoped_ptr<MediaLogEvent> event( | 239 std::unique_ptr<MediaLogEvent> event( |
236 CreateEvent(MediaLogEvent::BUFFERED_EXTENTS_CHANGED)); | 240 CreateEvent(MediaLogEvent::BUFFERED_EXTENTS_CHANGED)); |
237 // These values are headed to JS where there is no int64_t so we use a double | 241 // These values are headed to JS where there is no int64_t so we use a double |
238 // and accept loss of precision above 2^53 bytes (8 Exabytes). | 242 // and accept loss of precision above 2^53 bytes (8 Exabytes). |
239 event->params.SetDouble("buffer_start", start); | 243 event->params.SetDouble("buffer_start", start); |
240 event->params.SetDouble("buffer_current", current); | 244 event->params.SetDouble("buffer_current", current); |
241 event->params.SetDouble("buffer_end", end); | 245 event->params.SetDouble("buffer_end", end); |
242 return event; | 246 return event; |
243 } | 247 } |
244 | 248 |
245 void MediaLog::AddLogEvent(MediaLogLevel level, const std::string& message) { | 249 void MediaLog::AddLogEvent(MediaLogLevel level, const std::string& message) { |
246 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogLevelToEventType(level))); | 250 std::unique_ptr<MediaLogEvent> event( |
| 251 CreateEvent(MediaLogLevelToEventType(level))); |
247 event->params.SetString(MediaLogLevelToString(level), message); | 252 event->params.SetString(MediaLogLevelToString(level), message); |
248 AddEvent(std::move(event)); | 253 AddEvent(std::move(event)); |
249 } | 254 } |
250 | 255 |
251 void MediaLog::SetStringProperty( | 256 void MediaLog::SetStringProperty( |
252 const std::string& key, const std::string& value) { | 257 const std::string& key, const std::string& value) { |
253 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); | 258 std::unique_ptr<MediaLogEvent> event( |
| 259 CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); |
254 event->params.SetString(key, value); | 260 event->params.SetString(key, value); |
255 AddEvent(std::move(event)); | 261 AddEvent(std::move(event)); |
256 } | 262 } |
257 | 263 |
258 void MediaLog::SetDoubleProperty( | 264 void MediaLog::SetDoubleProperty( |
259 const std::string& key, double value) { | 265 const std::string& key, double value) { |
260 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); | 266 std::unique_ptr<MediaLogEvent> event( |
| 267 CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); |
261 event->params.SetDouble(key, value); | 268 event->params.SetDouble(key, value); |
262 AddEvent(std::move(event)); | 269 AddEvent(std::move(event)); |
263 } | 270 } |
264 | 271 |
265 void MediaLog::SetBooleanProperty( | 272 void MediaLog::SetBooleanProperty( |
266 const std::string& key, bool value) { | 273 const std::string& key, bool value) { |
267 scoped_ptr<MediaLogEvent> event(CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); | 274 std::unique_ptr<MediaLogEvent> event( |
| 275 CreateEvent(MediaLogEvent::PROPERTY_CHANGE)); |
268 event->params.SetBoolean(key, value); | 276 event->params.SetBoolean(key, value); |
269 AddEvent(std::move(event)); | 277 AddEvent(std::move(event)); |
270 } | 278 } |
271 | 279 |
272 LogHelper::LogHelper(MediaLog::MediaLogLevel level, | 280 LogHelper::LogHelper(MediaLog::MediaLogLevel level, |
273 const scoped_refptr<MediaLog>& media_log) | 281 const scoped_refptr<MediaLog>& media_log) |
274 : level_(level), media_log_(media_log) { | 282 : level_(level), media_log_(media_log) { |
275 DCHECK(media_log_.get()); | 283 DCHECK(media_log_.get()); |
276 } | 284 } |
277 | 285 |
278 LogHelper::~LogHelper() { | 286 LogHelper::~LogHelper() { |
279 media_log_->AddLogEvent(level_, stream_.str()); | 287 media_log_->AddLogEvent(level_, stream_.str()); |
280 } | 288 } |
281 | 289 |
282 } //namespace media | 290 } //namespace media |
OLD | NEW |