Index: chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
diff --git a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
index ab66fa88a3635ecff0781f81b991499ce1b1a3ee..bd9ccf2d2648d65e0628141b68d500fc0e764480 100644 |
--- a/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
+++ b/chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc |
@@ -29,6 +29,7 @@ |
#include <gnu/libc-version.h> |
#include "base/version.h" |
+#include "ui/base/x/x11_util.h" |
#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS) |
#if defined(OS_WIN) |
@@ -43,17 +44,36 @@ enum UMALinuxGlibcVersion { |
UMA_LINUX_GLIBC_2_11, |
UMA_LINUX_GLIBC_2_19 = UMA_LINUX_GLIBC_2_11 + 8, |
// NOTE: Add new version above this line and update the enum list in |
- // tools/histograms/histograms.xml accordingly. |
+ // tools/metrics/histograms/histograms.xml accordingly. |
UMA_LINUX_GLIBC_VERSION_COUNT |
}; |
+enum UMALinuxWindowManager { |
+ UMA_LINUX_WINDOW_MANAGER_OTHER, |
+ UMA_LINUX_WINDOW_MANAGER_BLACKBOX, |
+ UMA_LINUX_WINDOW_MANAGER_CHROME_OS, |
+ UMA_LINUX_WINDOW_MANAGER_COMPIZ, |
+ UMA_LINUX_WINDOW_MANAGER_ENLIGHTENMENT, |
+ UMA_LINUX_WINDOW_MANAGER_ICE_WM, |
+ UMA_LINUX_WINDOW_MANAGER_KWIN, |
+ UMA_LINUX_WINDOW_MANAGER_METACITY, |
+ UMA_LINUX_WINDOW_MANAGER_MUFFIN, |
+ UMA_LINUX_WINDOW_MANAGER_MUTTER, |
+ UMA_LINUX_WINDOW_MANAGER_OPENBOX, |
+ UMA_LINUX_WINDOW_MANAGER_XFWM4, |
+ // NOTE: Add new window managers above this line and update the enum list in |
+ // tools/metrics/histograms/histograms.xml accordingly. |
+ UMA_LINUX_WINDOW_MANAGER_COUNT |
+}; |
+ |
enum UMATouchEventsState { |
UMA_TOUCH_EVENTS_ENABLED, |
UMA_TOUCH_EVENTS_AUTO_ENABLED, |
UMA_TOUCH_EVENTS_AUTO_DISABLED, |
UMA_TOUCH_EVENTS_DISABLED, |
// NOTE: Add states only immediately above this line. Make sure to |
- // update the enum list in tools/histograms/histograms.xml accordingly. |
+ // update the enum list in tools/metrics/histograms/histograms.xml |
+ // accordingly. |
UMA_TOUCH_EVENTS_STATE_COUNT |
}; |
@@ -103,6 +123,53 @@ void RecordLinuxGlibcVersion() { |
#endif |
} |
+void RecordLinuxWindowManager() { |
+#if defined(OS_LINUX) && !defined(OS_CHROMEOS) |
+ ui::WindowManagerName name = ui::GuessWindowManager(); |
+ UMALinuxWindowManager uma_name = UMA_LINUX_WINDOW_MANAGER_OTHER; |
+ switch (name) { |
+ case ui::WM_UNKNOWN: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_OTHER; |
+ break; |
+ case ui::WM_BLACKBOX: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_BLACKBOX; |
+ break; |
+ case ui::WM_CHROME_OS: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_CHROME_OS; |
+ break; |
+ case ui::WM_COMPIZ: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_COMPIZ; |
+ break; |
+ case ui::WM_ENLIGHTENMENT: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_ENLIGHTENMENT; |
+ break; |
+ case ui::WM_ICE_WM: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_ICE_WM; |
+ break; |
+ case ui::WM_KWIN: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_KWIN; |
+ break; |
+ case ui::WM_METACITY: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_METACITY; |
+ break; |
+ case ui::WM_MUFFIN: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_MUFFIN; |
+ break; |
+ case ui::WM_MUTTER: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_MUTTER; |
+ break; |
+ case ui::WM_OPENBOX: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_OPENBOX; |
+ break; |
+ case ui::WM_XFWM4: |
+ uma_name = UMA_LINUX_WINDOW_MANAGER_XFWM4; |
+ break; |
+ } |
+ UMA_HISTOGRAM_ENUMERATION("Linux.WindowManager", uma_name, |
+ UMA_LINUX_WINDOW_MANAGER_COUNT); |
+#endif |
+} |
+ |
void RecordTouchEventState() { |
const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
const std::string touch_enabled_switch = |
@@ -148,6 +215,7 @@ void ChromeBrowserMainExtraPartsMetrics::PreBrowserStart() { |
void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() { |
RecordLinuxGlibcVersion(); |
+ RecordLinuxWindowManager(); |
RecordTouchEventState(); |
const int kStartupMetricsGatheringDelaySeconds = 45; |