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 "chrome/browser/metrics/metrics_log.h" | 5 #include "chrome/browser/metrics/metrics_log.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 333 |
334 OPEN_ELEMENT_FOR_SCOPE("profile"); | 334 OPEN_ELEMENT_FOR_SCOPE("profile"); |
335 WriteCommonEventAttributes(); | 335 WriteCommonEventAttributes(); |
336 | 336 |
337 WriteInstallElement(); | 337 WriteInstallElement(); |
338 | 338 |
339 { | 339 { |
340 OPEN_ELEMENT_FOR_SCOPE("stability"); // Minimal set of stability elements. | 340 OPEN_ELEMENT_FOR_SCOPE("stability"); // Minimal set of stability elements. |
341 WriteRequiredStabilityAttributes(pref); | 341 WriteRequiredStabilityAttributes(pref); |
342 WriteRealtimeStabilityAttributes(pref); | 342 WriteRealtimeStabilityAttributes(pref); |
343 | |
344 WritePluginStabilityElements(plugin_list, pref); | 343 WritePluginStabilityElements(plugin_list, pref); |
345 } | 344 } |
346 } | 345 } |
347 | 346 |
348 PrefService* MetricsLog::GetPrefService() { | 347 PrefService* MetricsLog::GetPrefService() { |
349 return g_browser_process->local_state(); | 348 return g_browser_process->local_state(); |
350 } | 349 } |
351 | 350 |
352 gfx::Size MetricsLog::GetScreenSize() const { | 351 gfx::Size MetricsLog::GetScreenSize() const { |
353 return gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().GetSizeInPixel(); | 352 return gfx::Screen::GetNativeScreen()->GetPrimaryDisplay().GetSizeInPixel(); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 void MetricsLog::WritePluginStabilityElements( | 425 void MetricsLog::WritePluginStabilityElements( |
427 const std::vector<webkit::WebPluginInfo>& plugin_list, | 426 const std::vector<webkit::WebPluginInfo>& plugin_list, |
428 PrefService* pref) { | 427 PrefService* pref) { |
429 // Now log plugin stability info. | 428 // Now log plugin stability info. |
430 const ListValue* plugin_stats_list = pref->GetList( | 429 const ListValue* plugin_stats_list = pref->GetList( |
431 prefs::kStabilityPluginStats); | 430 prefs::kStabilityPluginStats); |
432 if (!plugin_stats_list) | 431 if (!plugin_stats_list) |
433 return; | 432 return; |
434 | 433 |
435 OPEN_ELEMENT_FOR_SCOPE("plugins"); | 434 OPEN_ELEMENT_FOR_SCOPE("plugins"); |
| 435 |
| 436 #if defined(ENABLE_PLUGINS) |
436 SystemProfileProto::Stability* stability = | 437 SystemProfileProto::Stability* stability = |
437 uma_proto()->mutable_system_profile()->mutable_stability(); | 438 uma_proto()->mutable_system_profile()->mutable_stability(); |
438 PluginPrefs* plugin_prefs = GetPluginPrefs(); | 439 PluginPrefs* plugin_prefs = GetPluginPrefs(); |
439 for (ListValue::const_iterator iter = plugin_stats_list->begin(); | 440 for (ListValue::const_iterator iter = plugin_stats_list->begin(); |
440 iter != plugin_stats_list->end(); ++iter) { | 441 iter != plugin_stats_list->end(); ++iter) { |
441 if (!(*iter)->IsType(Value::TYPE_DICTIONARY)) { | 442 if (!(*iter)->IsType(Value::TYPE_DICTIONARY)) { |
442 NOTREACHED(); | 443 NOTREACHED(); |
443 continue; | 444 continue; |
444 } | 445 } |
445 DictionaryValue* plugin_dict = static_cast<DictionaryValue*>(*iter); | 446 DictionaryValue* plugin_dict = static_cast<DictionaryValue*>(*iter); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 // Write the protobuf version. | 499 // Write the protobuf version. |
499 SystemProfileProto::Stability::PluginStability* plugin_stability = | 500 SystemProfileProto::Stability::PluginStability* plugin_stability = |
500 stability->add_plugin_stability(); | 501 stability->add_plugin_stability(); |
501 SetPluginInfo(*plugin_info, plugin_prefs, | 502 SetPluginInfo(*plugin_info, plugin_prefs, |
502 plugin_stability->mutable_plugin()); | 503 plugin_stability->mutable_plugin()); |
503 plugin_stability->set_launch_count(launches); | 504 plugin_stability->set_launch_count(launches); |
504 plugin_stability->set_instance_count(instances); | 505 plugin_stability->set_instance_count(instances); |
505 plugin_stability->set_crash_count(crashes); | 506 plugin_stability->set_crash_count(crashes); |
506 plugin_stability->set_loading_error_count(loading_errors); | 507 plugin_stability->set_loading_error_count(loading_errors); |
507 } | 508 } |
| 509 #endif // defined(ENABLE_PLUGINS) |
508 | 510 |
509 pref->ClearPref(prefs::kStabilityPluginStats); | 511 pref->ClearPref(prefs::kStabilityPluginStats); |
510 } | 512 } |
511 | 513 |
512 // The server refuses data that doesn't have certain values. crashcount and | 514 // The server refuses data that doesn't have certain values. crashcount and |
513 // launchcount are currently "required" in the "stability" group. | 515 // launchcount are currently "required" in the "stability" group. |
514 // TODO(isherman): Stop writing these attributes specially once the migration to | 516 // TODO(isherman): Stop writing these attributes specially once the migration to |
515 // protobufs is complete. | 517 // protobufs is complete. |
516 void MetricsLog::WriteRequiredStabilityAttributes(PrefService* pref) { | 518 void MetricsLog::WriteRequiredStabilityAttributes(PrefService* pref) { |
517 int launch_count = pref->GetInteger(prefs::kStabilityLaunchCount); | 519 int launch_count = pref->GetInteger(prefs::kStabilityLaunchCount); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
597 WriteInt64Attribute("uptimesec", recent_duration); | 599 WriteInt64Attribute("uptimesec", recent_duration); |
598 stability->set_uptime_sec(recent_duration); | 600 stability->set_uptime_sec(recent_duration); |
599 } | 601 } |
600 } | 602 } |
601 | 603 |
602 void MetricsLog::WritePluginList( | 604 void MetricsLog::WritePluginList( |
603 const std::vector<webkit::WebPluginInfo>& plugin_list, | 605 const std::vector<webkit::WebPluginInfo>& plugin_list, |
604 bool write_as_xml) { | 606 bool write_as_xml) { |
605 DCHECK(!locked()); | 607 DCHECK(!locked()); |
606 | 608 |
| 609 OPEN_ELEMENT_FOR_SCOPE("plugins"); |
| 610 |
| 611 #if defined(ENABLE_PLUGINS) |
607 PluginPrefs* plugin_prefs = GetPluginPrefs(); | 612 PluginPrefs* plugin_prefs = GetPluginPrefs(); |
608 | |
609 OPEN_ELEMENT_FOR_SCOPE("plugins"); | |
610 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); | 613 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); |
611 for (std::vector<webkit::WebPluginInfo>::const_iterator iter = | 614 for (std::vector<webkit::WebPluginInfo>::const_iterator iter = |
612 plugin_list.begin(); | 615 plugin_list.begin(); |
613 iter != plugin_list.end(); ++iter) { | 616 iter != plugin_list.end(); ++iter) { |
614 if (write_as_xml) { | 617 if (write_as_xml) { |
615 std::string base64_name_hash; | 618 std::string base64_name_hash; |
616 uint64 numeric_hash_ignored; | 619 uint64 numeric_hash_ignored; |
617 CreateHashes(UTF16ToUTF8(iter->name), &base64_name_hash, | 620 CreateHashes(UTF16ToUTF8(iter->name), &base64_name_hash, |
618 &numeric_hash_ignored); | 621 &numeric_hash_ignored); |
619 | 622 |
(...skipping 11 matching lines...) Expand all Loading... |
631 WriteAttribute("filename", base64_filename_hash); | 634 WriteAttribute("filename", base64_filename_hash); |
632 WriteAttribute("version", UTF16ToUTF8(iter->version)); | 635 WriteAttribute("version", UTF16ToUTF8(iter->version)); |
633 if (plugin_prefs) | 636 if (plugin_prefs) |
634 WriteIntAttribute("disabled", !plugin_prefs->IsPluginEnabled(*iter)); | 637 WriteIntAttribute("disabled", !plugin_prefs->IsPluginEnabled(*iter)); |
635 } else { | 638 } else { |
636 // Write the protobuf version. | 639 // Write the protobuf version. |
637 SystemProfileProto::Plugin* plugin = system_profile->add_plugin(); | 640 SystemProfileProto::Plugin* plugin = system_profile->add_plugin(); |
638 SetPluginInfo(*iter, plugin_prefs, plugin); | 641 SetPluginInfo(*iter, plugin_prefs, plugin); |
639 } | 642 } |
640 } | 643 } |
| 644 #endif // defined(ENABLE_PLUGINS) |
641 } | 645 } |
642 | 646 |
643 void MetricsLog::WriteInstallElement() { | 647 void MetricsLog::WriteInstallElement() { |
644 // Write the XML version. | 648 // Write the XML version. |
645 // We'll write the protobuf version in RecordEnvironmentProto(). | 649 // We'll write the protobuf version in RecordEnvironmentProto(). |
646 OPEN_ELEMENT_FOR_SCOPE("install"); | 650 OPEN_ELEMENT_FOR_SCOPE("install"); |
647 WriteAttribute("installdate", GetMetricsEnabledDate(GetPrefService())); | 651 WriteAttribute("installdate", GetMetricsEnabledDate(GetPrefService())); |
648 WriteIntAttribute("buildid", 0); // We're using appversion instead. | 652 WriteIntAttribute("buildid", 0); // We're using appversion instead. |
649 } | 653 } |
650 | 654 |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1025 ProductDataToProto(google_update_metrics.google_update_data, | 1029 ProductDataToProto(google_update_metrics.google_update_data, |
1026 google_update->mutable_google_update_status()); | 1030 google_update->mutable_google_update_status()); |
1027 } | 1031 } |
1028 | 1032 |
1029 if (!google_update_metrics.product_data.version.empty()) { | 1033 if (!google_update_metrics.product_data.version.empty()) { |
1030 ProductDataToProto(google_update_metrics.product_data, | 1034 ProductDataToProto(google_update_metrics.product_data, |
1031 google_update->mutable_client_status()); | 1035 google_update->mutable_client_status()); |
1032 } | 1036 } |
1033 #endif // defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN) | 1037 #endif // defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN) |
1034 } | 1038 } |
OLD | NEW |