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

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

Issue 11014006: Add Android fingerprint to metrics logs (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 2 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
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 <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 27 matching lines...) Expand all
38 #include "chrome/common/pref_names.h" 38 #include "chrome/common/pref_names.h"
39 #include "chrome/installer/util/google_update_settings.h" 39 #include "chrome/installer/util/google_update_settings.h"
40 #include "content/public/browser/content_browser_client.h" 40 #include "content/public/browser/content_browser_client.h"
41 #include "content/public/browser/gpu_data_manager.h" 41 #include "content/public/browser/gpu_data_manager.h"
42 #include "content/public/common/content_client.h" 42 #include "content/public/common/content_client.h"
43 #include "content/public/common/gpu_info.h" 43 #include "content/public/common/gpu_info.h"
44 #include "googleurl/src/gurl.h" 44 #include "googleurl/src/gurl.h"
45 #include "ui/gfx/screen.h" 45 #include "ui/gfx/screen.h"
46 #include "webkit/plugins/webplugininfo.h" 46 #include "webkit/plugins/webplugininfo.h"
47 47
48 #if defined(OS_ANDROID)
49 #include "base/android/build_info.h"
50 #endif
51
48 #define OPEN_ELEMENT_FOR_SCOPE(name) ScopedElement scoped_element(this, name) 52 #define OPEN_ELEMENT_FOR_SCOPE(name) ScopedElement scoped_element(this, name)
49 53
50 #if defined(OS_WIN) 54 #if defined(OS_WIN)
51 #include "base/win/metro.h" 55 #include "base/win/metro.h"
52 56
53 // http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx 57 // http://blogs.msdn.com/oldnewthing/archive/2004/10/25/247180.aspx
54 extern "C" IMAGE_DOS_HEADER __ImageBase; 58 extern "C" IMAGE_DOS_HEADER __ImageBase;
55 #endif 59 #endif
56 60
57 using content::GpuDataManager; 61 using content::GpuDataManager;
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 322
319 void MetricsLog::RecordIncrementalStabilityElements( 323 void MetricsLog::RecordIncrementalStabilityElements(
320 const std::vector<webkit::WebPluginInfo>& plugin_list) { 324 const std::vector<webkit::WebPluginInfo>& plugin_list) {
321 DCHECK(!locked()); 325 DCHECK(!locked());
322 326
323 PrefService* pref = GetPrefService(); 327 PrefService* pref = GetPrefService();
324 DCHECK(pref); 328 DCHECK(pref);
325 329
326 OPEN_ELEMENT_FOR_SCOPE("profile"); 330 OPEN_ELEMENT_FOR_SCOPE("profile");
327 WriteCommonEventAttributes(); 331 WriteCommonEventAttributes();
328
329 WriteInstallElement(); 332 WriteInstallElement();
333 #if defined(OS_ANDROID)
334 WriteOSInfoElement();
335 #endif
Ilya Sherman 2012/10/01 23:01:38 I don't think it's appropriate to add the OS info
gone 2012/10/02 18:24:24 With nilesh's comment as context, does your commen
Ilya Sherman 2012/10/02 21:37:45 TL;DR: You can ignore my previous comment w.r.t. t
gone 2012/10/02 23:10:00 If that's the case then we really shouldn't be for
330 336
331 { 337 {
332 OPEN_ELEMENT_FOR_SCOPE("stability"); // Minimal set of stability elements. 338 OPEN_ELEMENT_FOR_SCOPE("stability"); // Minimal set of stability elements.
333 WriteRequiredStabilityAttributes(pref); 339 WriteRequiredStabilityAttributes(pref);
334 WriteRealtimeStabilityAttributes(pref); 340 WriteRealtimeStabilityAttributes(pref);
335 341
336 WritePluginStabilityElements(plugin_list, pref); 342 WritePluginStabilityElements(plugin_list, pref);
337 } 343 }
338 } 344 }
339 345
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 void MetricsLog::RecordEnvironment( 647 void MetricsLog::RecordEnvironment(
642 const std::vector<webkit::WebPluginInfo>& plugin_list, 648 const std::vector<webkit::WebPluginInfo>& plugin_list,
643 const GoogleUpdateMetrics& google_update_metrics, 649 const GoogleUpdateMetrics& google_update_metrics,
644 const DictionaryValue* profile_metrics) { 650 const DictionaryValue* profile_metrics) {
645 DCHECK(!locked()); 651 DCHECK(!locked());
646 652
647 PrefService* pref = GetPrefService(); 653 PrefService* pref = GetPrefService();
648 654
649 OPEN_ELEMENT_FOR_SCOPE("profile"); 655 OPEN_ELEMENT_FOR_SCOPE("profile");
650 WriteCommonEventAttributes(); 656 WriteCommonEventAttributes();
651
652 WriteInstallElement(); 657 WriteInstallElement();
653 658
654 // Write the XML version. 659 // Write the XML version.
655 // We'll write the protobuf version in RecordEnvironmentProto(). 660 // We'll write the protobuf version in RecordEnvironmentProto().
656 bool write_as_xml = true; 661 bool write_as_xml = true;
657 WritePluginList(plugin_list, write_as_xml); 662 WritePluginList(plugin_list, write_as_xml);
658 663
659 WriteStabilityElement(plugin_list, pref); 664 WriteStabilityElement(plugin_list, pref);
660 665
661 { 666 {
662 // Write the XML version. 667 // Write the XML version.
663 // We'll write the protobuf version in RecordEnvironmentProto(). 668 // We'll write the protobuf version in RecordEnvironmentProto().
664 OPEN_ELEMENT_FOR_SCOPE("cpu"); 669 OPEN_ELEMENT_FOR_SCOPE("cpu");
665 WriteAttribute("arch", base::SysInfo::CPUArchitecture()); 670 WriteAttribute("arch", base::SysInfo::CPUArchitecture());
666 } 671 }
667 672
668 { 673 {
669 // Write the XML version. 674 // Write the XML version.
670 // We'll write the protobuf version in RecordEnvironmentProto(). 675 // We'll write the protobuf version in RecordEnvironmentProto().
671 OPEN_ELEMENT_FOR_SCOPE("memory"); 676 OPEN_ELEMENT_FOR_SCOPE("memory");
672 WriteIntAttribute("mb", base::SysInfo::AmountOfPhysicalMemoryMB()); 677 WriteIntAttribute("mb", base::SysInfo::AmountOfPhysicalMemoryMB());
673 #if defined(OS_WIN) 678 #if defined(OS_WIN)
674 WriteIntAttribute("dllbase", reinterpret_cast<int>(&__ImageBase)); 679 WriteIntAttribute("dllbase", reinterpret_cast<int>(&__ImageBase));
675 #endif 680 #endif
676 } 681 }
677 682
678 { 683 WriteOSInfoElement();
679 // Write the XML version.
680 // We'll write the protobuf version in RecordEnvironmentProto().
681 OPEN_ELEMENT_FOR_SCOPE("os");
682 WriteAttribute("name", base::SysInfo::OperatingSystemName());
683 WriteAttribute("version", base::SysInfo::OperatingSystemVersion());
684 }
685 684
686 { 685 {
687 OPEN_ELEMENT_FOR_SCOPE("gpu"); 686 OPEN_ELEMENT_FOR_SCOPE("gpu");
688 const content::GPUInfo& gpu_info = 687 const content::GPUInfo& gpu_info =
689 GpuDataManager::GetInstance()->GetGPUInfo(); 688 GpuDataManager::GetInstance()->GetGPUInfo();
690 689
691 // Write the XML version. 690 // Write the XML version.
692 // We'll write the protobuf version in RecordEnvironmentProto(). 691 // We'll write the protobuf version in RecordEnvironmentProto().
693 WriteIntAttribute("vendorid", gpu_info.gpu.vendor_id); 692 WriteIntAttribute("vendorid", gpu_info.gpu.vendor_id);
694 WriteIntAttribute("deviceid", gpu_info.gpu.device_id); 693 WriteIntAttribute("deviceid", gpu_info.gpu.device_id);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
769 // TODO(mad): This only checks whether the main process is a Metro process at 768 // TODO(mad): This only checks whether the main process is a Metro process at
770 // upload time; not whether the collected metrics were all gathered from 769 // upload time; not whether the collected metrics were all gathered from
771 // Metro. This is ok as an approximation for now, since users will rarely be 770 // Metro. This is ok as an approximation for now, since users will rarely be
772 // switching from Metro to Desktop mode; but we should re-evaluate whether we 771 // switching from Metro to Desktop mode; but we should re-evaluate whether we
773 // can distinguish metrics more cleanly in the future: http://crbug.com/140568 772 // can distinguish metrics more cleanly in the future: http://crbug.com/140568
774 if (base::win::IsMetroProcess()) 773 if (base::win::IsMetroProcess())
775 os_name += " (Metro)"; 774 os_name += " (Metro)";
776 #endif 775 #endif
777 os->set_name(os_name); 776 os->set_name(os_name);
778 os->set_version(base::SysInfo::OperatingSystemVersion()); 777 os->set_version(base::SysInfo::OperatingSystemVersion());
778 #if defined(OS_ANDROID)
779 os->set_fingerprint(
780 base::android::BuildInfo::GetInstance()->android_build_fp());
781 #endif
779 782
780 const content::GPUInfo& gpu_info = 783 const content::GPUInfo& gpu_info =
781 GpuDataManager::GetInstance()->GetGPUInfo(); 784 GpuDataManager::GetInstance()->GetGPUInfo();
782 SystemProfileProto::Hardware::Graphics* gpu = hardware->mutable_gpu(); 785 SystemProfileProto::Hardware::Graphics* gpu = hardware->mutable_gpu();
783 gpu->set_vendor_id(gpu_info.gpu.vendor_id); 786 gpu->set_vendor_id(gpu_info.gpu.vendor_id);
784 gpu->set_device_id(gpu_info.gpu.device_id); 787 gpu->set_device_id(gpu_info.gpu.device_id);
785 gpu->set_driver_version(gpu_info.driver_version); 788 gpu->set_driver_version(gpu_info.driver_version);
786 gpu->set_driver_date(gpu_info.driver_date); 789 gpu->set_driver_date(gpu_info.driver_date);
787 SystemProfileProto::Hardware::Graphics::PerformanceStatistics* 790 SystemProfileProto::Hardware::Graphics::PerformanceStatistics*
788 gpu_performance = gpu->mutable_performance_statistics(); 791 gpu_performance = gpu->mutable_performance_statistics();
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
887 } 890 }
888 891
889 default: 892 default:
890 NOTREACHED(); 893 NOTREACHED();
891 break; 894 break;
892 } 895 }
893 } 896 }
894 } 897 }
895 } 898 }
896 899
900 void MetricsLog::WriteOSInfoElement() {
901 // Write the XML version.
Ilya Sherman 2012/10/01 23:01:38 As I mentioned above, I don't think you should mov
gone 2012/10/02 23:45:10 Undid the change. We'll go with the protobuf on m
902 OPEN_ELEMENT_FOR_SCOPE("os");
903 WriteAttribute("name", base::SysInfo::OperatingSystemName());
904 WriteAttribute("version", base::SysInfo::OperatingSystemVersion());
905 #if defined(OS_ANDROID)
906 WriteAttribute("fingerprint",
907 base::android::BuildInfo::GetInstance()->android_build_fp());
Ilya Sherman 2012/10/01 23:01:38 I don't recommend trying to add this field to the
gone 2012/10/02 23:45:10 Removed.
908 #endif
909 }
910
897 void MetricsLog::RecordOmniboxOpenedURL(const AutocompleteLog& log) { 911 void MetricsLog::RecordOmniboxOpenedURL(const AutocompleteLog& log) {
898 DCHECK(!locked()); 912 DCHECK(!locked());
899 913
900 // Write the XML version. 914 // Write the XML version.
901 OPEN_ELEMENT_FOR_SCOPE("uielement"); 915 OPEN_ELEMENT_FOR_SCOPE("uielement");
902 WriteAttribute("action", "autocomplete"); 916 WriteAttribute("action", "autocomplete");
903 WriteAttribute("targetidhash", ""); 917 WriteAttribute("targetidhash", "");
904 // TODO(kochi): Properly track windows. 918 // TODO(kochi): Properly track windows.
905 WriteIntAttribute("window", 0); 919 WriteIntAttribute("window", 0);
906 if (log.tab_id != -1) { 920 if (log.tab_id != -1) {
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 ProductDataToProto(google_update_metrics.google_update_data, 1021 ProductDataToProto(google_update_metrics.google_update_data,
1008 google_update->mutable_google_update_status()); 1022 google_update->mutable_google_update_status());
1009 } 1023 }
1010 1024
1011 if (!google_update_metrics.product_data.version.empty()) { 1025 if (!google_update_metrics.product_data.version.empty()) {
1012 ProductDataToProto(google_update_metrics.product_data, 1026 ProductDataToProto(google_update_metrics.product_data,
1013 google_update->mutable_client_status()); 1027 google_update->mutable_client_status());
1014 } 1028 }
1015 #endif // defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN) 1029 #endif // defined(GOOGLE_CHROME_BUILD) && defined(OS_WIN)
1016 } 1030 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698