OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/chrome_browser_main_extra_parts_metrics.h" | 5 #include "chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 11 matching lines...) Expand all Loading... |
22 #include "chrome/browser/shell_integration.h" | 22 #include "chrome/browser/shell_integration.h" |
23 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
24 #include "ui/base/touch/touch_device.h" | 24 #include "ui/base/touch/touch_device.h" |
25 #include "ui/base/ui_base_switches.h" | 25 #include "ui/base/ui_base_switches.h" |
26 #include "ui/events/event_switches.h" | 26 #include "ui/events/event_switches.h" |
27 | 27 |
28 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) | 28 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
29 #include <gnu/libc-version.h> | 29 #include <gnu/libc-version.h> |
30 | 30 |
31 #include "base/version.h" | 31 #include "base/version.h" |
| 32 #include "ui/base/x/x11_util.h" |
32 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) | 33 #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) |
33 | 34 |
34 #if defined(OS_WIN) | 35 #if defined(OS_WIN) |
35 #include "chrome/installer/util/google_update_settings.h" | 36 #include "chrome/installer/util/google_update_settings.h" |
36 #endif // defined(OS_WIN) | 37 #endif // defined(OS_WIN) |
37 | 38 |
38 namespace { | 39 namespace { |
39 | 40 |
40 enum UMALinuxGlibcVersion { | 41 enum UMALinuxGlibcVersion { |
41 UMA_LINUX_GLIBC_NOT_PARSEABLE, | 42 UMA_LINUX_GLIBC_NOT_PARSEABLE, |
42 UMA_LINUX_GLIBC_UNKNOWN, | 43 UMA_LINUX_GLIBC_UNKNOWN, |
43 UMA_LINUX_GLIBC_2_11, | 44 UMA_LINUX_GLIBC_2_11, |
44 UMA_LINUX_GLIBC_2_19 = UMA_LINUX_GLIBC_2_11 + 8, | 45 UMA_LINUX_GLIBC_2_19 = UMA_LINUX_GLIBC_2_11 + 8, |
45 // NOTE: Add new version above this line and update the enum list in | 46 // NOTE: Add new version above this line and update the enum list in |
46 // tools/histograms/histograms.xml accordingly. | 47 // tools/metrics/histograms/histograms.xml accordingly. |
47 UMA_LINUX_GLIBC_VERSION_COUNT | 48 UMA_LINUX_GLIBC_VERSION_COUNT |
48 }; | 49 }; |
49 | 50 |
| 51 enum UMALinuxWindowManager { |
| 52 UMA_LINUX_WINDOW_MANAGER_OTHER, |
| 53 UMA_LINUX_WINDOW_MANAGER_BLACKBOX, |
| 54 UMA_LINUX_WINDOW_MANAGER_CHROME_OS, |
| 55 UMA_LINUX_WINDOW_MANAGER_COMPIZ, |
| 56 UMA_LINUX_WINDOW_MANAGER_ENLIGHTENMENT, |
| 57 UMA_LINUX_WINDOW_MANAGER_ICE_WM, |
| 58 UMA_LINUX_WINDOW_MANAGER_KWIN, |
| 59 UMA_LINUX_WINDOW_MANAGER_METACITY, |
| 60 UMA_LINUX_WINDOW_MANAGER_MUFFIN, |
| 61 UMA_LINUX_WINDOW_MANAGER_MUTTER, |
| 62 UMA_LINUX_WINDOW_MANAGER_OPENBOX, |
| 63 UMA_LINUX_WINDOW_MANAGER_XFWM4, |
| 64 // NOTE: Add new window managers above this line and update the enum list in |
| 65 // tools/metrics/histograms/histograms.xml accordingly. |
| 66 UMA_LINUX_WINDOW_MANAGER_COUNT |
| 67 }; |
| 68 |
50 enum UMATouchEventsState { | 69 enum UMATouchEventsState { |
51 UMA_TOUCH_EVENTS_ENABLED, | 70 UMA_TOUCH_EVENTS_ENABLED, |
52 UMA_TOUCH_EVENTS_AUTO_ENABLED, | 71 UMA_TOUCH_EVENTS_AUTO_ENABLED, |
53 UMA_TOUCH_EVENTS_AUTO_DISABLED, | 72 UMA_TOUCH_EVENTS_AUTO_DISABLED, |
54 UMA_TOUCH_EVENTS_DISABLED, | 73 UMA_TOUCH_EVENTS_DISABLED, |
55 // NOTE: Add states only immediately above this line. Make sure to | 74 // NOTE: Add states only immediately above this line. Make sure to |
56 // update the enum list in tools/histograms/histograms.xml accordingly. | 75 // update the enum list in tools/metrics/histograms/histograms.xml |
| 76 // accordingly. |
57 UMA_TOUCH_EVENTS_STATE_COUNT | 77 UMA_TOUCH_EVENTS_STATE_COUNT |
58 }; | 78 }; |
59 | 79 |
60 void RecordMicroArchitectureStats() { | 80 void RecordMicroArchitectureStats() { |
61 #if defined(ARCH_CPU_X86_FAMILY) | 81 #if defined(ARCH_CPU_X86_FAMILY) |
62 base::CPU cpu; | 82 base::CPU cpu; |
63 base::CPU::IntelMicroArchitecture arch = cpu.GetIntelMicroArchitecture(); | 83 base::CPU::IntelMicroArchitecture arch = cpu.GetIntelMicroArchitecture(); |
64 UMA_HISTOGRAM_ENUMERATION("Platform.IntelMaxMicroArchitecture", arch, | 84 UMA_HISTOGRAM_ENUMERATION("Platform.IntelMaxMicroArchitecture", arch, |
65 base::CPU::MAX_INTEL_MICRO_ARCHITECTURE); | 85 base::CPU::MAX_INTEL_MICRO_ARCHITECTURE); |
66 #endif // defined(ARCH_CPU_X86_FAMILY) | 86 #endif // defined(ARCH_CPU_X86_FAMILY) |
(...skipping 29 matching lines...) Expand all Loading... |
96 glibc_version_result = | 116 glibc_version_result = |
97 static_cast<UMALinuxGlibcVersion>(translated_glibc_minor_version); | 117 static_cast<UMALinuxGlibcVersion>(translated_glibc_minor_version); |
98 } | 118 } |
99 } | 119 } |
100 } | 120 } |
101 UMA_HISTOGRAM_ENUMERATION("Linux.GlibcVersion", glibc_version_result, | 121 UMA_HISTOGRAM_ENUMERATION("Linux.GlibcVersion", glibc_version_result, |
102 UMA_LINUX_GLIBC_VERSION_COUNT); | 122 UMA_LINUX_GLIBC_VERSION_COUNT); |
103 #endif | 123 #endif |
104 } | 124 } |
105 | 125 |
| 126 void RecordLinuxWindowManager() { |
| 127 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
| 128 ui::WindowManagerName name = ui::GuessWindowManager(); |
| 129 UMALinuxWindowManager uma_name = UMA_LINUX_WINDOW_MANAGER_OTHER; |
| 130 switch (name) { |
| 131 case ui::WM_UNKNOWN: |
| 132 uma_name = UMA_LINUX_WINDOW_MANAGER_OTHER; |
| 133 break; |
| 134 case ui::WM_BLACKBOX: |
| 135 uma_name = UMA_LINUX_WINDOW_MANAGER_BLACKBOX; |
| 136 break; |
| 137 case ui::WM_CHROME_OS: |
| 138 uma_name = UMA_LINUX_WINDOW_MANAGER_CHROME_OS; |
| 139 break; |
| 140 case ui::WM_COMPIZ: |
| 141 uma_name = UMA_LINUX_WINDOW_MANAGER_COMPIZ; |
| 142 break; |
| 143 case ui::WM_ENLIGHTENMENT: |
| 144 uma_name = UMA_LINUX_WINDOW_MANAGER_ENLIGHTENMENT; |
| 145 break; |
| 146 case ui::WM_ICE_WM: |
| 147 uma_name = UMA_LINUX_WINDOW_MANAGER_ICE_WM; |
| 148 break; |
| 149 case ui::WM_KWIN: |
| 150 uma_name = UMA_LINUX_WINDOW_MANAGER_KWIN; |
| 151 break; |
| 152 case ui::WM_METACITY: |
| 153 uma_name = UMA_LINUX_WINDOW_MANAGER_METACITY; |
| 154 break; |
| 155 case ui::WM_MUFFIN: |
| 156 uma_name = UMA_LINUX_WINDOW_MANAGER_MUFFIN; |
| 157 break; |
| 158 case ui::WM_MUTTER: |
| 159 uma_name = UMA_LINUX_WINDOW_MANAGER_MUTTER; |
| 160 break; |
| 161 case ui::WM_OPENBOX: |
| 162 uma_name = UMA_LINUX_WINDOW_MANAGER_OPENBOX; |
| 163 break; |
| 164 case ui::WM_XFWM4: |
| 165 uma_name = UMA_LINUX_WINDOW_MANAGER_XFWM4; |
| 166 break; |
| 167 } |
| 168 UMA_HISTOGRAM_ENUMERATION("Linux.WindowManager", uma_name, |
| 169 UMA_LINUX_WINDOW_MANAGER_COUNT); |
| 170 #endif |
| 171 } |
| 172 |
106 void RecordTouchEventState() { | 173 void RecordTouchEventState() { |
107 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 174 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
108 const std::string touch_enabled_switch = | 175 const std::string touch_enabled_switch = |
109 command_line.HasSwitch(switches::kTouchEvents) ? | 176 command_line.HasSwitch(switches::kTouchEvents) ? |
110 command_line.GetSwitchValueASCII(switches::kTouchEvents) : | 177 command_line.GetSwitchValueASCII(switches::kTouchEvents) : |
111 switches::kTouchEventsAuto; | 178 switches::kTouchEventsAuto; |
112 | 179 |
113 UMATouchEventsState state; | 180 UMATouchEventsState state; |
114 if (touch_enabled_switch.empty() || | 181 if (touch_enabled_switch.empty() || |
115 touch_enabled_switch == switches::kTouchEventsEnabled) { | 182 touch_enabled_switch == switches::kTouchEventsEnabled) { |
(...skipping 25 matching lines...) Expand all Loading... |
141 } | 208 } |
142 | 209 |
143 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() { | 210 void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() { |
144 about_flags::PrefServiceFlagsStorage flags_storage_( | 211 about_flags::PrefServiceFlagsStorage flags_storage_( |
145 g_browser_process->local_state()); | 212 g_browser_process->local_state()); |
146 about_flags::RecordUMAStatistics(&flags_storage_); | 213 about_flags::RecordUMAStatistics(&flags_storage_); |
147 } | 214 } |
148 | 215 |
149 void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { | 216 void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { |
150 RecordLinuxGlibcVersion(); | 217 RecordLinuxGlibcVersion(); |
| 218 RecordLinuxWindowManager(); |
151 RecordTouchEventState(); | 219 RecordTouchEventState(); |
152 | 220 |
153 const int kStartupMetricsGatheringDelaySeconds = 45; | 221 const int kStartupMetricsGatheringDelaySeconds = 45; |
154 content::BrowserThread::GetBlockingPool()->PostDelayedTask( | 222 content::BrowserThread::GetBlockingPool()->PostDelayedTask( |
155 FROM_HERE, | 223 FROM_HERE, |
156 base::Bind(&RecordStartupMetricsOnBlockingPool), | 224 base::Bind(&RecordStartupMetricsOnBlockingPool), |
157 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds)); | 225 base::TimeDelta::FromSeconds(kStartupMetricsGatheringDelaySeconds)); |
158 | 226 |
159 // Create the metrics log observer. | 227 // Create the metrics log observer. |
160 // We only need this for Android for now. | 228 // We only need this for Android for now. |
161 #if defined(ANDROID) | 229 #if defined(ANDROID) |
162 metrics_service_observer_.reset(new ChromeBrowserMetricsServiceObserver()); | 230 metrics_service_observer_.reset(new ChromeBrowserMetricsServiceObserver()); |
163 #endif | 231 #endif |
164 } | 232 } |
165 | 233 |
166 namespace chrome { | 234 namespace chrome { |
167 | 235 |
168 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) { | 236 void AddMetricsExtraParts(ChromeBrowserMainParts* main_parts) { |
169 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics()); | 237 main_parts->AddParts(new ChromeBrowserMainExtraPartsMetrics()); |
170 } | 238 } |
171 | 239 |
172 } // namespace chrome | 240 } // namespace chrome |
OLD | NEW |