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

Side by Side Diff: chrome/browser/metrics/metrics_log.cc

Issue 292433015: Refactor MetricsLogChromeOS to ChromeOSMetricsProvider. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Build fixes Created 6 years, 7 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
« no previous file with comments | « chrome/browser/metrics/metrics_log.h ('k') | chrome/browser/metrics/metrics_log_chromeos.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) 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 "chrome/browser/metrics/metrics_log.h" 5 #include "chrome/browser/metrics/metrics_log.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 28 matching lines...) Expand all
39 #include "base/android/build_info.h" 39 #include "base/android/build_info.h"
40 #endif 40 #endif
41 41
42 #if defined(OS_WIN) 42 #if defined(OS_WIN)
43 #include "base/win/metro.h" 43 #include "base/win/metro.h"
44 44
45 // http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx 45 // http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx
46 extern "C" IMAGE_DOS_HEADER __ImageBase; 46 extern "C" IMAGE_DOS_HEADER __ImageBase;
47 #endif 47 #endif
48 48
49 #if defined(OS_CHROMEOS)
50 #include "chrome/browser/metrics/metrics_log_chromeos.h"
51 #endif // OS_CHROMEOS
52
53 using metrics::MetricsLogBase; 49 using metrics::MetricsLogBase;
54 using metrics::ProfilerEventProto; 50 using metrics::ProfilerEventProto;
55 using metrics::SystemProfileProto; 51 using metrics::SystemProfileProto;
56 using tracked_objects::ProcessDataSnapshot; 52 using tracked_objects::ProcessDataSnapshot;
57 typedef variations::ActiveGroupId ActiveGroupId; 53 typedef variations::ActiveGroupId ActiveGroupId;
58 54
59 namespace { 55 namespace {
60 56
61 // Returns the date at which the current metrics client ID was created as 57 // Returns the date at which the current metrics client ID was created as
62 // a string containing seconds since the epoch, or "0" if none was found. 58 // a string containing seconds since the epoch, or "0" if none was found.
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 int session_id, 182 int session_id,
187 LogType log_type, 183 LogType log_type,
188 metrics::MetricsServiceClient* client) 184 metrics::MetricsServiceClient* client)
189 : MetricsLogBase(client_id, 185 : MetricsLogBase(client_id,
190 session_id, 186 session_id,
191 log_type, 187 log_type,
192 client->GetVersionString()), 188 client->GetVersionString()),
193 client_(client), 189 client_(client),
194 creation_time_(base::TimeTicks::Now()) { 190 creation_time_(base::TimeTicks::Now()) {
195 uma_proto()->mutable_system_profile()->set_channel(client_->GetChannel()); 191 uma_proto()->mutable_system_profile()->set_channel(client_->GetChannel());
196
197 #if defined(OS_CHROMEOS)
198 metrics_log_chromeos_.reset(new MetricsLogChromeOS(uma_proto()));
199 #endif // OS_CHROMEOS
200 } 192 }
201 193
202 MetricsLog::~MetricsLog() {} 194 MetricsLog::~MetricsLog() {}
203 195
204 void MetricsLog::RecordStabilityMetrics( 196 void MetricsLog::RecordStabilityMetrics(
205 const std::vector<metrics::MetricsProvider*>& metrics_providers, 197 const std::vector<metrics::MetricsProvider*>& metrics_providers,
206 base::TimeDelta incremental_uptime, 198 base::TimeDelta incremental_uptime,
207 base::TimeDelta uptime) { 199 base::TimeDelta uptime) {
208 DCHECK(!locked()); 200 DCHECK(!locked());
209 DCHECK(HasEnvironment()); 201 DCHECK(HasEnvironment());
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 302
311 SystemProfileProto::Stability* stability = 303 SystemProfileProto::Stability* stability =
312 uma_proto()->mutable_system_profile()->mutable_stability(); 304 uma_proto()->mutable_system_profile()->mutable_stability();
313 305
314 int count = pref->GetInteger(prefs::kStabilityChildProcessCrashCount); 306 int count = pref->GetInteger(prefs::kStabilityChildProcessCrashCount);
315 if (count) { 307 if (count) {
316 stability->set_child_process_crash_count(count); 308 stability->set_child_process_crash_count(count);
317 pref->SetInteger(prefs::kStabilityChildProcessCrashCount, 0); 309 pref->SetInteger(prefs::kStabilityChildProcessCrashCount, 0);
318 } 310 }
319 311
320 #if defined(OS_CHROMEOS)
321 metrics_log_chromeos_->WriteRealtimeStabilityAttributes(pref);
322 #endif // OS_CHROMEOS
323
324 const uint64 incremental_uptime_sec = incremental_uptime.InSeconds(); 312 const uint64 incremental_uptime_sec = incremental_uptime.InSeconds();
325 if (incremental_uptime_sec) 313 if (incremental_uptime_sec)
326 stability->set_incremental_uptime_sec(incremental_uptime_sec); 314 stability->set_incremental_uptime_sec(incremental_uptime_sec);
327 const uint64 uptime_sec = uptime.InSeconds(); 315 const uint64 uptime_sec = uptime.InSeconds();
328 if (uptime_sec) 316 if (uptime_sec)
329 stability->set_uptime_sec(uptime_sec); 317 stability->set_uptime_sec(uptime_sec);
330 } 318 }
331 319
332 void MetricsLog::RecordEnvironment( 320 void MetricsLog::RecordEnvironment(
333 const std::vector<metrics::MetricsProvider*>& metrics_providers, 321 const std::vector<metrics::MetricsProvider*>& metrics_providers,
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 base::CPU cpu_info; 371 base::CPU cpu_info;
384 SystemProfileProto::Hardware::CPU* cpu = hardware->mutable_cpu(); 372 SystemProfileProto::Hardware::CPU* cpu = hardware->mutable_cpu();
385 cpu->set_vendor_name(cpu_info.vendor_name()); 373 cpu->set_vendor_name(cpu_info.vendor_name());
386 cpu->set_signature(cpu_info.signature()); 374 cpu->set_signature(cpu_info.signature());
387 375
388 std::vector<ActiveGroupId> field_trial_ids; 376 std::vector<ActiveGroupId> field_trial_ids;
389 GetFieldTrialIds(&field_trial_ids); 377 GetFieldTrialIds(&field_trial_ids);
390 WriteFieldTrials(field_trial_ids, system_profile); 378 WriteFieldTrials(field_trial_ids, system_profile);
391 WriteFieldTrials(synthetic_trials, system_profile); 379 WriteFieldTrials(synthetic_trials, system_profile);
392 380
393 #if defined(OS_CHROMEOS)
394 metrics_log_chromeos_->LogChromeOSMetrics();
395 #endif // OS_CHROMEOS
396
397 for (size_t i = 0; i < metrics_providers.size(); ++i) 381 for (size_t i = 0; i < metrics_providers.size(); ++i)
398 metrics_providers[i]->ProvideSystemProfileMetrics(system_profile); 382 metrics_providers[i]->ProvideSystemProfileMetrics(system_profile);
399 383
400 std::string serialied_system_profile; 384 std::string serialied_system_profile;
401 std::string base64_system_profile; 385 std::string base64_system_profile;
402 if (system_profile->SerializeToString(&serialied_system_profile)) { 386 if (system_profile->SerializeToString(&serialied_system_profile)) {
403 base::Base64Encode(serialied_system_profile, &base64_system_profile); 387 base::Base64Encode(serialied_system_profile, &base64_system_profile);
404 PrefService* local_state = GetPrefService(); 388 PrefService* local_state = GetPrefService();
405 local_state->SetString(prefs::kStabilitySavedSystemProfile, 389 local_state->SetString(prefs::kStabilitySavedSystemProfile,
406 base64_system_profile); 390 base64_system_profile);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 profile = uma_proto()->add_profiler_event(); 429 profile = uma_proto()->add_profiler_event();
446 profile->set_profile_type(ProfilerEventProto::STARTUP_PROFILE); 430 profile->set_profile_type(ProfilerEventProto::STARTUP_PROFILE);
447 profile->set_time_source(ProfilerEventProto::WALL_CLOCK_TIME); 431 profile->set_time_source(ProfilerEventProto::WALL_CLOCK_TIME);
448 } else { 432 } else {
449 // For the remaining calls, re-use the existing field. 433 // For the remaining calls, re-use the existing field.
450 profile = uma_proto()->mutable_profiler_event(0); 434 profile = uma_proto()->mutable_profiler_event(0);
451 } 435 }
452 436
453 WriteProfilerData(process_data, process_type, profile); 437 WriteProfilerData(process_data, process_type, profile);
454 } 438 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/metrics_log.h ('k') | chrome/browser/metrics/metrics_log_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698