Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: chrome/common/metrics_helpers.cc

Issue 3056029: Move the number conversions from string_util to a new file.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/logging_chrome.cc ('k') | chrome/common/plugin_messages.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/common/metrics_helpers.h" 5 #include "chrome/common/metrics_helpers.h"
6 6
7 #if defined(USE_SYSTEM_LIBBZ2) 7 #if defined(USE_SYSTEM_LIBBZ2)
8 #include <bzlib.h> 8 #include <bzlib.h>
9 #else 9 #else
10 #include "third_party/bzip2/bzlib.h" 10 #include "third_party/bzip2/bzlib.h"
11 #endif 11 #endif
12 12
13 #include "base/base64.h" 13 #include "base/base64.h"
14 #include "base/time.h" 14 #include "base/time.h"
15 #include "base/basictypes.h" 15 #include "base/basictypes.h"
16 #include "base/file_util.h" 16 #include "base/file_util.h"
17 #include "base/md5.h" 17 #include "base/md5.h"
18 #include "base/perftimer.h" 18 #include "base/perftimer.h"
19 #include "base/scoped_ptr.h" 19 #include "base/scoped_ptr.h"
20 #include "base/string_util.h" 20 #include "base/string_number_conversions.h"
21 #include "base/string_util.h" // TODO(brettw) remove when ASCIIToUTF16 moves.
21 #include "base/sys_info.h" 22 #include "base/sys_info.h"
22 #include "base/utf_string_conversions.h" 23 #include "base/utf_string_conversions.h"
23 #include "base/third_party/nspr/prtime.h" 24 #include "base/third_party/nspr/prtime.h"
24 #include "chrome/common/logging_chrome.h" 25 #include "chrome/common/logging_chrome.h"
25 #include "googleurl/src/gurl.h" 26 #include "googleurl/src/gurl.h"
26 #include "libxml/xmlwriter.h" 27 #include "libxml/xmlwriter.h"
27 28
28 #define OPEN_ELEMENT_FOR_SCOPE(name) ScopedElement scoped_element(this, name) 29 #define OPEN_ELEMENT_FOR_SCOPE(name) ScopedElement scoped_element(this, name)
29 30
30 using base::Time; 31 using base::Time;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 xmlTextWriterPtr writer_; 94 xmlTextWriterPtr writer_;
94 }; 95 };
95 96
96 // static 97 // static
97 std::string MetricsLogBase::version_extension_; 98 std::string MetricsLogBase::version_extension_;
98 99
99 MetricsLogBase::MetricsLogBase(const std::string& client_id, int session_id, 100 MetricsLogBase::MetricsLogBase(const std::string& client_id, int session_id,
100 const std::string& version_string) 101 const std::string& version_string)
101 : start_time_(Time::Now()), 102 : start_time_(Time::Now()),
102 client_id_(client_id), 103 client_id_(client_id),
103 session_id_(IntToString(session_id)), 104 session_id_(base::IntToString(session_id)),
104 locked_(false), 105 locked_(false),
105 xml_wrapper_(new XmlWrapper), 106 xml_wrapper_(new XmlWrapper),
106 num_events_(0) { 107 num_events_(0) {
107 108
108 StartElement("log"); 109 StartElement("log");
109 WriteAttribute("clientid", client_id_); 110 WriteAttribute("clientid", client_id_);
110 WriteInt64Attribute("buildtime", GetBuildTime()); 111 WriteInt64Attribute("buildtime", GetBuildTime());
111 WriteAttribute("appversion", version_string); 112 WriteAttribute("appversion", version_string);
112 } 113 }
113 114
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 const GURL& url, 232 const GURL& url,
232 PageTransition::Type origin, 233 PageTransition::Type origin,
233 int session_index, 234 int session_index,
234 TimeDelta load_time) { 235 TimeDelta load_time) {
235 DCHECK(!locked_); 236 DCHECK(!locked_);
236 237
237 OPEN_ELEMENT_FOR_SCOPE("document"); 238 OPEN_ELEMENT_FOR_SCOPE("document");
238 WriteAttribute("action", "load"); 239 WriteAttribute("action", "load");
239 WriteIntAttribute("docid", session_index); 240 WriteIntAttribute("docid", session_index);
240 WriteIntAttribute("window", window_id); 241 WriteIntAttribute("window", window_id);
241 WriteAttribute("loadtime", Int64ToString(load_time.InMilliseconds())); 242 WriteAttribute("loadtime", base::Int64ToString(load_time.InMilliseconds()));
242 243
243 std::string origin_string; 244 std::string origin_string;
244 245
245 switch (PageTransition::StripQualifier(origin)) { 246 switch (PageTransition::StripQualifier(origin)) {
246 // TODO(jhughes): Some of these mappings aren't right... we need to add 247 // TODO(jhughes): Some of these mappings aren't right... we need to add
247 // some values to the server's enum. 248 // some values to the server's enum.
248 case PageTransition::LINK: 249 case PageTransition::LINK:
249 case PageTransition::MANUAL_SUBFRAME: 250 case PageTransition::MANUAL_SUBFRAME:
250 origin_string = "link"; 251 origin_string = "link";
251 break; 252 break;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 ++num_events_; 289 ++num_events_;
289 } 290 }
290 291
291 void MetricsLogBase::RecordWindowEvent(WindowEventType type, 292 void MetricsLogBase::RecordWindowEvent(WindowEventType type,
292 int window_id, 293 int window_id,
293 int parent_id) { 294 int parent_id) {
294 DCHECK(!locked_); 295 DCHECK(!locked_);
295 296
296 OPEN_ELEMENT_FOR_SCOPE("window"); 297 OPEN_ELEMENT_FOR_SCOPE("window");
297 WriteAttribute("action", WindowEventTypeToString(type)); 298 WriteAttribute("action", WindowEventTypeToString(type));
298 WriteAttribute("windowid", IntToString(window_id)); 299 WriteAttribute("windowid", base::IntToString(window_id));
299 if (parent_id >= 0) 300 if (parent_id >= 0)
300 WriteAttribute("parent", IntToString(parent_id)); 301 WriteAttribute("parent", base::IntToString(parent_id));
301 WriteCommonEventAttributes(); 302 WriteCommonEventAttributes();
302 303
303 ++num_events_; 304 ++num_events_;
304 } 305 }
305 306
306 std::string MetricsLogBase::GetCurrentTimeString() { 307 std::string MetricsLogBase::GetCurrentTimeString() {
307 return Uint64ToString(Time::Now().ToTimeT()); 308 return base::Uint64ToString(Time::Now().ToTimeT());
308 } 309 }
309 310
310 // These are the attributes that are common to every event. 311 // These are the attributes that are common to every event.
311 void MetricsLogBase::WriteCommonEventAttributes() { 312 void MetricsLogBase::WriteCommonEventAttributes() {
312 WriteAttribute("session", session_id_); 313 WriteAttribute("session", session_id_);
313 WriteAttribute("time", GetCurrentTimeString()); 314 WriteAttribute("time", GetCurrentTimeString());
314 } 315 }
315 316
316 void MetricsLogBase::WriteAttribute(const std::string& name, 317 void MetricsLogBase::WriteAttribute(const std::string& name,
317 const std::string& value) { 318 const std::string& value) {
318 DCHECK(!locked_); 319 DCHECK(!locked_);
319 DCHECK(!name.empty()); 320 DCHECK(!name.empty());
320 321
321 int result = xmlTextWriterWriteAttribute(xml_wrapper_->writer(), 322 int result = xmlTextWriterWriteAttribute(xml_wrapper_->writer(),
322 UnsignedChar(name.c_str()), 323 UnsignedChar(name.c_str()),
323 UnsignedChar(value.c_str())); 324 UnsignedChar(value.c_str()));
324 DCHECK_GE(result, 0); 325 DCHECK_GE(result, 0);
325 } 326 }
326 327
327 void MetricsLogBase::WriteIntAttribute(const std::string& name, int value) { 328 void MetricsLogBase::WriteIntAttribute(const std::string& name, int value) {
328 WriteAttribute(name, IntToString(value)); 329 WriteAttribute(name, base::IntToString(value));
329 } 330 }
330 331
331 void MetricsLogBase::WriteInt64Attribute(const std::string& name, int64 value) { 332 void MetricsLogBase::WriteInt64Attribute(const std::string& name, int64 value) {
332 WriteAttribute(name, Int64ToString(value)); 333 WriteAttribute(name, base::Int64ToString(value));
333 } 334 }
334 335
335 // static 336 // static
336 const char* MetricsLogBase::WindowEventTypeToString(WindowEventType type) { 337 const char* MetricsLogBase::WindowEventTypeToString(WindowEventType type) {
337 switch (type) { 338 switch (type) {
338 case WINDOW_CREATE: return "create"; 339 case WINDOW_CREATE: return "create";
339 case WINDOW_OPEN: return "open"; 340 case WINDOW_OPEN: return "open";
340 case WINDOW_CLOSE: return "close"; 341 case WINDOW_CLOSE: return "close";
341 case WINDOW_DESTROY: return "destroy"; 342 case WINDOW_DESTROY: return "destroy";
342 343
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 } 508 }
508 } 509 }
509 510
510 void MetricsServiceBase::DiscardPendingLog() { 511 void MetricsServiceBase::DiscardPendingLog() {
511 if (pending_log_) { // Shutdown might have deleted it! 512 if (pending_log_) { // Shutdown might have deleted it!
512 delete pending_log_; 513 delete pending_log_;
513 pending_log_ = NULL; 514 pending_log_ = NULL;
514 } 515 }
515 compressed_log_.clear(); 516 compressed_log_.clear();
516 } 517 }
OLDNEW
« no previous file with comments | « chrome/common/logging_chrome.cc ('k') | chrome/common/plugin_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698