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 <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "chrome/common/logging_chrome.h" | 37 #include "chrome/common/logging_chrome.h" |
38 #include "chrome/common/metrics/proto/omnibox_event.pb.h" | 38 #include "chrome/common/metrics/proto/omnibox_event.pb.h" |
39 #include "chrome/common/metrics/proto/profiler_event.pb.h" | 39 #include "chrome/common/metrics/proto/profiler_event.pb.h" |
40 #include "chrome/common/metrics/proto/system_profile.pb.h" | 40 #include "chrome/common/metrics/proto/system_profile.pb.h" |
41 #include "chrome/common/metrics/variations/variations_util.h" | 41 #include "chrome/common/metrics/variations/variations_util.h" |
42 #include "chrome/common/pref_names.h" | 42 #include "chrome/common/pref_names.h" |
43 #include "chrome/installer/util/google_update_settings.h" | 43 #include "chrome/installer/util/google_update_settings.h" |
44 #include "components/nacl/common/nacl_process_type.h" | 44 #include "components/nacl/common/nacl_process_type.h" |
45 #include "content/public/browser/gpu_data_manager.h" | 45 #include "content/public/browser/gpu_data_manager.h" |
46 #include "content/public/common/content_client.h" | 46 #include "content/public/common/content_client.h" |
| 47 #include "content/public/common/webplugininfo.h" |
47 #include "device/bluetooth/bluetooth_adapter.h" | 48 #include "device/bluetooth/bluetooth_adapter.h" |
48 #include "device/bluetooth/bluetooth_adapter_factory.h" | 49 #include "device/bluetooth/bluetooth_adapter_factory.h" |
49 #include "device/bluetooth/bluetooth_device.h" | 50 #include "device/bluetooth/bluetooth_device.h" |
50 #include "gpu/config/gpu_info.h" | 51 #include "gpu/config/gpu_info.h" |
51 #include "ui/gfx/screen.h" | 52 #include "ui/gfx/screen.h" |
52 #include "url/gurl.h" | 53 #include "url/gurl.h" |
53 #include "webkit/plugins/webplugininfo.h" | |
54 | 54 |
55 #if defined(OS_ANDROID) | 55 #if defined(OS_ANDROID) |
56 #include "base/android/build_info.h" | 56 #include "base/android/build_info.h" |
57 #endif | 57 #endif |
58 | 58 |
59 #if defined(OS_WIN) | 59 #if defined(OS_WIN) |
60 #include "base/win/metro.h" | 60 #include "base/win/metro.h" |
61 #include "ui/base/win/dpi.h" | 61 #include "ui/base/win/dpi.h" |
62 | 62 |
63 // http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx | 63 // http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 } | 186 } |
187 | 187 |
188 std::vector<Profile*> profiles = profile_manager->GetLoadedProfiles(); | 188 std::vector<Profile*> profiles = profile_manager->GetLoadedProfiles(); |
189 if (profiles.empty()) | 189 if (profiles.empty()) |
190 return NULL; | 190 return NULL; |
191 | 191 |
192 return PluginPrefs::GetForProfile(profiles.front()).get(); | 192 return PluginPrefs::GetForProfile(profiles.front()).get(); |
193 } | 193 } |
194 | 194 |
195 // Fills |plugin| with the info contained in |plugin_info| and |plugin_prefs|. | 195 // Fills |plugin| with the info contained in |plugin_info| and |plugin_prefs|. |
196 void SetPluginInfo(const webkit::WebPluginInfo& plugin_info, | 196 void SetPluginInfo(const content::WebPluginInfo& plugin_info, |
197 const PluginPrefs* plugin_prefs, | 197 const PluginPrefs* plugin_prefs, |
198 SystemProfileProto::Plugin* plugin) { | 198 SystemProfileProto::Plugin* plugin) { |
199 plugin->set_name(UTF16ToUTF8(plugin_info.name)); | 199 plugin->set_name(UTF16ToUTF8(plugin_info.name)); |
200 plugin->set_filename(plugin_info.path.BaseName().AsUTF8Unsafe()); | 200 plugin->set_filename(plugin_info.path.BaseName().AsUTF8Unsafe()); |
201 plugin->set_version(UTF16ToUTF8(plugin_info.version)); | 201 plugin->set_version(UTF16ToUTF8(plugin_info.version)); |
202 if (plugin_prefs) | 202 if (plugin_prefs) |
203 plugin->set_is_disabled(!plugin_prefs->IsPluginEnabled(plugin_info)); | 203 plugin->set_is_disabled(!plugin_prefs->IsPluginEnabled(plugin_info)); |
204 } | 204 } |
205 | 205 |
206 void WriteFieldTrials(const std::vector<ActiveGroupId>& field_trial_ids, | 206 void WriteFieldTrials(const std::vector<ActiveGroupId>& field_trial_ids, |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 void MetricsLog::set_version_extension(const std::string& extension) { | 398 void MetricsLog::set_version_extension(const std::string& extension) { |
399 g_version_extension.Get() = extension; | 399 g_version_extension.Get() = extension; |
400 } | 400 } |
401 | 401 |
402 // static | 402 // static |
403 const std::string& MetricsLog::version_extension() { | 403 const std::string& MetricsLog::version_extension() { |
404 return g_version_extension.Get(); | 404 return g_version_extension.Get(); |
405 } | 405 } |
406 | 406 |
407 void MetricsLog::RecordIncrementalStabilityElements( | 407 void MetricsLog::RecordIncrementalStabilityElements( |
408 const std::vector<webkit::WebPluginInfo>& plugin_list) { | 408 const std::vector<content::WebPluginInfo>& plugin_list) { |
409 DCHECK(!locked()); | 409 DCHECK(!locked()); |
410 | 410 |
411 PrefService* pref = GetPrefService(); | 411 PrefService* pref = GetPrefService(); |
412 DCHECK(pref); | 412 DCHECK(pref); |
413 | 413 |
414 WriteRequiredStabilityAttributes(pref); | 414 WriteRequiredStabilityAttributes(pref); |
415 WriteRealtimeStabilityAttributes(pref); | 415 WriteRealtimeStabilityAttributes(pref); |
416 WritePluginStabilityElements(plugin_list, pref); | 416 WritePluginStabilityElements(plugin_list, pref); |
417 } | 417 } |
418 | 418 |
(...skipping 14 matching lines...) Expand all Loading... |
433 // TODO(scottmg): NativeScreen maybe wrong. http://crbug.com/133312 | 433 // TODO(scottmg): NativeScreen maybe wrong. http://crbug.com/133312 |
434 return gfx::Screen::GetNativeScreen()->GetNumDisplays(); | 434 return gfx::Screen::GetNativeScreen()->GetNumDisplays(); |
435 } | 435 } |
436 | 436 |
437 void MetricsLog::GetFieldTrialIds( | 437 void MetricsLog::GetFieldTrialIds( |
438 std::vector<ActiveGroupId>* field_trial_ids) const { | 438 std::vector<ActiveGroupId>* field_trial_ids) const { |
439 chrome_variations::GetFieldTrialActiveGroupIds(field_trial_ids); | 439 chrome_variations::GetFieldTrialActiveGroupIds(field_trial_ids); |
440 } | 440 } |
441 | 441 |
442 void MetricsLog::WriteStabilityElement( | 442 void MetricsLog::WriteStabilityElement( |
443 const std::vector<webkit::WebPluginInfo>& plugin_list, | 443 const std::vector<content::WebPluginInfo>& plugin_list, |
444 PrefService* pref) { | 444 PrefService* pref) { |
445 DCHECK(!locked()); | 445 DCHECK(!locked()); |
446 | 446 |
447 // Get stability attributes out of Local State, zeroing out stored values. | 447 // Get stability attributes out of Local State, zeroing out stored values. |
448 // NOTE: This could lead to some data loss if this report isn't successfully | 448 // NOTE: This could lead to some data loss if this report isn't successfully |
449 // sent, but that's true for all the metrics. | 449 // sent, but that's true for all the metrics. |
450 | 450 |
451 WriteRequiredStabilityAttributes(pref); | 451 WriteRequiredStabilityAttributes(pref); |
452 WriteRealtimeStabilityAttributes(pref); | 452 WriteRealtimeStabilityAttributes(pref); |
453 | 453 |
(...skipping 22 matching lines...) Expand all Loading... |
476 breakpad_registration_success_count); | 476 breakpad_registration_success_count); |
477 stability->set_breakpad_registration_failure_count( | 477 stability->set_breakpad_registration_failure_count( |
478 breakpad_registration_failure_count); | 478 breakpad_registration_failure_count); |
479 stability->set_debugger_present_count(debugger_present_count); | 479 stability->set_debugger_present_count(debugger_present_count); |
480 stability->set_debugger_not_present_count(debugger_not_present_count); | 480 stability->set_debugger_not_present_count(debugger_not_present_count); |
481 | 481 |
482 WritePluginStabilityElements(plugin_list, pref); | 482 WritePluginStabilityElements(plugin_list, pref); |
483 } | 483 } |
484 | 484 |
485 void MetricsLog::WritePluginStabilityElements( | 485 void MetricsLog::WritePluginStabilityElements( |
486 const std::vector<webkit::WebPluginInfo>& plugin_list, | 486 const std::vector<content::WebPluginInfo>& plugin_list, |
487 PrefService* pref) { | 487 PrefService* pref) { |
488 // Now log plugin stability info. | 488 // Now log plugin stability info. |
489 const ListValue* plugin_stats_list = pref->GetList( | 489 const ListValue* plugin_stats_list = pref->GetList( |
490 prefs::kStabilityPluginStats); | 490 prefs::kStabilityPluginStats); |
491 if (!plugin_stats_list) | 491 if (!plugin_stats_list) |
492 return; | 492 return; |
493 | 493 |
494 #if defined(ENABLE_PLUGINS) | 494 #if defined(ENABLE_PLUGINS) |
495 SystemProfileProto::Stability* stability = | 495 SystemProfileProto::Stability* stability = |
496 uma_proto()->mutable_system_profile()->mutable_stability(); | 496 uma_proto()->mutable_system_profile()->mutable_stability(); |
497 PluginPrefs* plugin_prefs = GetPluginPrefs(); | 497 PluginPrefs* plugin_prefs = GetPluginPrefs(); |
498 for (ListValue::const_iterator iter = plugin_stats_list->begin(); | 498 for (ListValue::const_iterator iter = plugin_stats_list->begin(); |
499 iter != plugin_stats_list->end(); ++iter) { | 499 iter != plugin_stats_list->end(); ++iter) { |
500 if (!(*iter)->IsType(Value::TYPE_DICTIONARY)) { | 500 if (!(*iter)->IsType(Value::TYPE_DICTIONARY)) { |
501 NOTREACHED(); | 501 NOTREACHED(); |
502 continue; | 502 continue; |
503 } | 503 } |
504 DictionaryValue* plugin_dict = static_cast<DictionaryValue*>(*iter); | 504 DictionaryValue* plugin_dict = static_cast<DictionaryValue*>(*iter); |
505 | 505 |
506 // Write the protobuf version. | 506 // Write the protobuf version. |
507 // Note that this search is potentially a quadratic operation, but given the | 507 // Note that this search is potentially a quadratic operation, but given the |
508 // low number of plugins installed on a "reasonable" setup, this should be | 508 // low number of plugins installed on a "reasonable" setup, this should be |
509 // fine. | 509 // fine. |
510 // TODO(isherman): Verify that this does not show up as a hotspot in | 510 // TODO(isherman): Verify that this does not show up as a hotspot in |
511 // profiler runs. | 511 // profiler runs. |
512 const webkit::WebPluginInfo* plugin_info = NULL; | 512 const content::WebPluginInfo* plugin_info = NULL; |
513 std::string plugin_name; | 513 std::string plugin_name; |
514 plugin_dict->GetString(prefs::kStabilityPluginName, &plugin_name); | 514 plugin_dict->GetString(prefs::kStabilityPluginName, &plugin_name); |
515 const string16 plugin_name_utf16 = UTF8ToUTF16(plugin_name); | 515 const string16 plugin_name_utf16 = UTF8ToUTF16(plugin_name); |
516 for (std::vector<webkit::WebPluginInfo>::const_iterator iter = | 516 for (std::vector<content::WebPluginInfo>::const_iterator iter = |
517 plugin_list.begin(); | 517 plugin_list.begin(); |
518 iter != plugin_list.end(); ++iter) { | 518 iter != plugin_list.end(); ++iter) { |
519 if (iter->name == plugin_name_utf16) { | 519 if (iter->name == plugin_name_utf16) { |
520 plugin_info = &(*iter); | 520 plugin_info = &(*iter); |
521 break; | 521 break; |
522 } | 522 } |
523 } | 523 } |
524 | 524 |
525 if (!plugin_info) { | 525 if (!plugin_info) { |
526 NOTREACHED(); | 526 NOTREACHED(); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
630 pref->SetInteger(prefs::kStabilitySystemUncleanShutdownCount, 0); | 630 pref->SetInteger(prefs::kStabilitySystemUncleanShutdownCount, 0); |
631 } | 631 } |
632 #endif // OS_CHROMEOS | 632 #endif // OS_CHROMEOS |
633 | 633 |
634 int64 recent_duration = GetIncrementalUptime(pref); | 634 int64 recent_duration = GetIncrementalUptime(pref); |
635 if (recent_duration) | 635 if (recent_duration) |
636 stability->set_uptime_sec(recent_duration); | 636 stability->set_uptime_sec(recent_duration); |
637 } | 637 } |
638 | 638 |
639 void MetricsLog::WritePluginList( | 639 void MetricsLog::WritePluginList( |
640 const std::vector<webkit::WebPluginInfo>& plugin_list) { | 640 const std::vector<content::WebPluginInfo>& plugin_list) { |
641 DCHECK(!locked()); | 641 DCHECK(!locked()); |
642 | 642 |
643 #if defined(ENABLE_PLUGINS) | 643 #if defined(ENABLE_PLUGINS) |
644 PluginPrefs* plugin_prefs = GetPluginPrefs(); | 644 PluginPrefs* plugin_prefs = GetPluginPrefs(); |
645 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); | 645 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); |
646 for (std::vector<webkit::WebPluginInfo>::const_iterator iter = | 646 for (std::vector<content::WebPluginInfo>::const_iterator iter = |
647 plugin_list.begin(); | 647 plugin_list.begin(); |
648 iter != plugin_list.end(); ++iter) { | 648 iter != plugin_list.end(); ++iter) { |
649 SystemProfileProto::Plugin* plugin = system_profile->add_plugin(); | 649 SystemProfileProto::Plugin* plugin = system_profile->add_plugin(); |
650 SetPluginInfo(*iter, plugin_prefs, plugin); | 650 SetPluginInfo(*iter, plugin_prefs, plugin); |
651 } | 651 } |
652 #endif // defined(ENABLE_PLUGINS) | 652 #endif // defined(ENABLE_PLUGINS) |
653 } | 653 } |
654 | 654 |
655 void MetricsLog::RecordEnvironment( | 655 void MetricsLog::RecordEnvironment( |
656 const std::vector<webkit::WebPluginInfo>& plugin_list, | 656 const std::vector<content::WebPluginInfo>& plugin_list, |
657 const GoogleUpdateMetrics& google_update_metrics) { | 657 const GoogleUpdateMetrics& google_update_metrics) { |
658 DCHECK(!locked()); | 658 DCHECK(!locked()); |
659 | 659 |
660 PrefService* pref = GetPrefService(); | 660 PrefService* pref = GetPrefService(); |
661 WriteStabilityElement(plugin_list, pref); | 661 WriteStabilityElement(plugin_list, pref); |
662 | 662 |
663 RecordEnvironmentProto(plugin_list, google_update_metrics); | 663 RecordEnvironmentProto(plugin_list, google_update_metrics); |
664 } | 664 } |
665 | 665 |
666 void MetricsLog::RecordEnvironmentProto( | 666 void MetricsLog::RecordEnvironmentProto( |
667 const std::vector<webkit::WebPluginInfo>& plugin_list, | 667 const std::vector<content::WebPluginInfo>& plugin_list, |
668 const GoogleUpdateMetrics& google_update_metrics) { | 668 const GoogleUpdateMetrics& google_update_metrics) { |
669 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); | 669 SystemProfileProto* system_profile = uma_proto()->mutable_system_profile(); |
670 | 670 |
671 std::string brand_code; | 671 std::string brand_code; |
672 if (google_util::GetBrand(&brand_code)) | 672 if (google_util::GetBrand(&brand_code)) |
673 system_profile->set_brand_code(brand_code); | 673 system_profile->set_brand_code(brand_code); |
674 | 674 |
675 int enabled_date; | 675 int enabled_date; |
676 bool success = base::StringToInt(GetMetricsEnabledDate(GetPrefService()), | 676 bool success = base::StringToInt(GetMetricsEnabledDate(GetPrefService()), |
677 &enabled_date); | 677 &enabled_date); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
918 | 918 |
919 paired_device->set_vendor_prefix(vendor_prefix); | 919 paired_device->set_vendor_prefix(vendor_prefix); |
920 } | 920 } |
921 | 921 |
922 paired_device->set_vendor_id(device->GetVendorID()); | 922 paired_device->set_vendor_id(device->GetVendorID()); |
923 paired_device->set_product_id(device->GetProductID()); | 923 paired_device->set_product_id(device->GetProductID()); |
924 paired_device->set_device_id(device->GetDeviceID()); | 924 paired_device->set_device_id(device->GetDeviceID()); |
925 } | 925 } |
926 #endif // defined(OS_CHROMEOS) | 926 #endif // defined(OS_CHROMEOS) |
927 } | 927 } |
OLD | NEW |