Commit ccf9d19e authored by Alexander Dunaev's avatar Alexander Dunaev Committed by Commit Bot

[ozone/x11] Enabled the Linux.WindowManager histogram.

The functionality had been available for non-Ozone path.  This CL moves
the necessary enum and utility function to the component so Ozone can
use it.

Bug: 1097007
Change-Id: Id7070dc7a87e4efc36d3611f072b89c4ce9e4da2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2359040Reviewed-by: default avatarScott Violet <sky@chromium.org>
Reviewed-by: default avatarMaksim Sisov (GMT+3) <msisov@igalia.com>
Commit-Queue: Alexander Dunaev <adunaev@igalia.com>
Cr-Commit-Position: refs/heads/master@{#799613}
parent 9fa04bfc
......@@ -120,37 +120,6 @@ enum UMALinuxGlibcVersion {
// To log newer versions, just update tools/metrics/histograms/histograms.xml.
};
enum UMALinuxWindowManager {
UMA_LINUX_WINDOW_MANAGER_OTHER,
UMA_LINUX_WINDOW_MANAGER_BLACKBOX,
UMA_LINUX_WINDOW_MANAGER_CHROME_OS, // Deprecated.
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,
UMA_LINUX_WINDOW_MANAGER_AWESOME,
UMA_LINUX_WINDOW_MANAGER_I3,
UMA_LINUX_WINDOW_MANAGER_ION3,
UMA_LINUX_WINDOW_MANAGER_MATCHBOX,
UMA_LINUX_WINDOW_MANAGER_NOTION,
UMA_LINUX_WINDOW_MANAGER_QTILE,
UMA_LINUX_WINDOW_MANAGER_RATPOISON,
UMA_LINUX_WINDOW_MANAGER_STUMPWM,
UMA_LINUX_WINDOW_MANAGER_WMII,
UMA_LINUX_WINDOW_MANAGER_FLUXBOX,
UMA_LINUX_WINDOW_MANAGER_XMONAD,
UMA_LINUX_WINDOW_MANAGER_UNNAMED,
// NOTE: Append new window managers to the list above this line (i.e. don't
// renumber) and update LinuxWindowManagerName in
// tools/metrics/histograms/histograms.xml accordingly.
UMA_LINUX_WINDOW_MANAGER_COUNT
};
enum UMATouchEventFeatureDetectionState {
UMA_TOUCH_EVENT_FEATURE_DETECTION_ENABLED,
UMA_TOUCH_EVENT_FEATURE_DETECTION_AUTO_ENABLED,
......@@ -319,61 +288,6 @@ void RecordLinuxGlibcVersion() {
#endif
}
#if defined(USE_X11)
UMALinuxWindowManager GetLinuxWindowManager() {
switch (ui::GuessWindowManager()) {
case ui::WM_OTHER:
return UMA_LINUX_WINDOW_MANAGER_OTHER;
case ui::WM_UNNAMED:
return UMA_LINUX_WINDOW_MANAGER_UNNAMED;
case ui::WM_AWESOME:
return UMA_LINUX_WINDOW_MANAGER_AWESOME;
case ui::WM_BLACKBOX:
return UMA_LINUX_WINDOW_MANAGER_BLACKBOX;
case ui::WM_COMPIZ:
return UMA_LINUX_WINDOW_MANAGER_COMPIZ;
case ui::WM_ENLIGHTENMENT:
return UMA_LINUX_WINDOW_MANAGER_ENLIGHTENMENT;
case ui::WM_FLUXBOX:
return UMA_LINUX_WINDOW_MANAGER_FLUXBOX;
case ui::WM_I3:
return UMA_LINUX_WINDOW_MANAGER_I3;
case ui::WM_ICE_WM:
return UMA_LINUX_WINDOW_MANAGER_ICE_WM;
case ui::WM_ION3:
return UMA_LINUX_WINDOW_MANAGER_ION3;
case ui::WM_KWIN:
return UMA_LINUX_WINDOW_MANAGER_KWIN;
case ui::WM_MATCHBOX:
return UMA_LINUX_WINDOW_MANAGER_MATCHBOX;
case ui::WM_METACITY:
return UMA_LINUX_WINDOW_MANAGER_METACITY;
case ui::WM_MUFFIN:
return UMA_LINUX_WINDOW_MANAGER_MUFFIN;
case ui::WM_MUTTER:
return UMA_LINUX_WINDOW_MANAGER_MUTTER;
case ui::WM_NOTION:
return UMA_LINUX_WINDOW_MANAGER_NOTION;
case ui::WM_OPENBOX:
return UMA_LINUX_WINDOW_MANAGER_OPENBOX;
case ui::WM_QTILE:
return UMA_LINUX_WINDOW_MANAGER_QTILE;
case ui::WM_RATPOISON:
return UMA_LINUX_WINDOW_MANAGER_RATPOISON;
case ui::WM_STUMPWM:
return UMA_LINUX_WINDOW_MANAGER_STUMPWM;
case ui::WM_WMII:
return UMA_LINUX_WINDOW_MANAGER_WMII;
case ui::WM_XFWM4:
return UMA_LINUX_WINDOW_MANAGER_XFWM4;
case ui::WM_XMONAD:
return UMA_LINUX_WINDOW_MANAGER_XMONAD;
}
NOTREACHED();
return UMA_LINUX_WINDOW_MANAGER_OTHER;
}
#endif
void RecordTouchEventState() {
const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess();
......@@ -585,11 +499,10 @@ void ChromeBrowserMainExtraPartsMetrics::PostBrowserStart() {
RecordMemoryMetricsAfterDelay();
RecordLinuxGlibcVersion();
#if defined(USE_X11)
// TODO(https://crbug.com/1097007): capture window manager name on Linux.
if (!features::IsUsingOzonePlatform()) {
// Ozone writes this histogram upon platform initialisation.
base::UmaHistogramEnumeration("Linux.WindowManager",
GetLinuxWindowManager(),
UMA_LINUX_WINDOW_MANAGER_COUNT);
ui::GetWindowManagerUMA());
}
#endif
......
......@@ -955,6 +955,59 @@ std::string GuessWindowManagerName() {
return "Unknown";
}
UMALinuxWindowManager GetWindowManagerUMA() {
switch (GuessWindowManager()) {
case WM_OTHER:
return UMALinuxWindowManager::kOther;
case WM_UNNAMED:
return UMALinuxWindowManager::kUnnamed;
case WM_AWESOME:
return UMALinuxWindowManager::kAwesome;
case WM_BLACKBOX:
return UMALinuxWindowManager::kBlackbox;
case WM_COMPIZ:
return UMALinuxWindowManager::kCompiz;
case WM_ENLIGHTENMENT:
return UMALinuxWindowManager::kEnlightenment;
case WM_FLUXBOX:
return UMALinuxWindowManager::kFluxbox;
case WM_I3:
return UMALinuxWindowManager::kI3;
case WM_ICE_WM:
return UMALinuxWindowManager::kIceWM;
case WM_ION3:
return UMALinuxWindowManager::kIon3;
case WM_KWIN:
return UMALinuxWindowManager::kKWin;
case WM_MATCHBOX:
return UMALinuxWindowManager::kMatchbox;
case WM_METACITY:
return UMALinuxWindowManager::kMetacity;
case WM_MUFFIN:
return UMALinuxWindowManager::kMuffin;
case WM_MUTTER:
return UMALinuxWindowManager::kMutter;
case WM_NOTION:
return UMALinuxWindowManager::kNotion;
case WM_OPENBOX:
return UMALinuxWindowManager::kOpenbox;
case WM_QTILE:
return UMALinuxWindowManager::kQtile;
case WM_RATPOISON:
return UMALinuxWindowManager::kRatpoison;
case WM_STUMPWM:
return UMALinuxWindowManager::kStumpWM;
case WM_WMII:
return UMALinuxWindowManager::kWmii;
case WM_XFWM4:
return UMALinuxWindowManager::kXfwm4;
case WM_XMONAD:
return UMALinuxWindowManager::kXmonad;
}
NOTREACHED();
return UMALinuxWindowManager::kOther;
}
bool IsCompositingManagerPresent() {
auto is_compositing_manager_present_impl = []() {
auto response = x11::Connection::Get()
......
......@@ -495,6 +495,42 @@ COMPONENT_EXPORT(UI_BASE_X) WindowManagerName GuessWindowManager();
// can't determine it, return "Unknown".
COMPONENT_EXPORT(UI_BASE_X) std::string GuessWindowManagerName();
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
//
// Append new window managers before kMaxValue and update LinuxWindowManagerName
// in tools/metrics/histograms/enums.xml accordingly.
//
// See also tools/metrics/histograms/README.md#enum-histograms
enum class UMALinuxWindowManager {
kOther = 0,
kBlackbox = 1,
kChromeOS = 2, // Deprecated.
kCompiz = 3,
kEnlightenment = 4,
kIceWM = 5,
kKWin = 6,
kMetacity = 7,
kMuffin = 8,
kMutter = 9,
kOpenbox = 10,
kXfwm4 = 11,
kAwesome = 12,
kI3 = 13,
kIon3 = 14,
kMatchbox = 15,
kNotion = 16,
kQtile = 17,
kRatpoison = 18,
kStumpWM = 19,
kWmii = 20,
kFluxbox = 21,
kXmonad = 22,
kUnnamed = 23,
kMaxValue = kUnnamed
};
COMPONENT_EXPORT(UI_BASE_X) UMALinuxWindowManager GetWindowManagerUMA();
// Returns a buest-effort guess as to whether |window_manager| is tiling (true)
// or stacking (false).
COMPONENT_EXPORT(UI_BASE_X) bool IsWmTiling(WindowManagerName window_manager);
......
......@@ -204,6 +204,8 @@ class OzonePlatformWayland : public OzonePlatform {
std::make_unique<GtkUiDelegateWayland>(connection_.get());
GtkUiDelegate::SetInstance(gtk_ui_delegate_.get());
#endif
// TODO(crbug.com/1097007): report which Wayland compositor is used.
}
void InitializeGPU(const InitParams& args) override {
......
......@@ -8,6 +8,7 @@
#include <utility>
#include "base/message_loop/message_pump_type.h"
#include "base/metrics/histogram_functions.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "ui/base/buildflags.h"
......@@ -192,6 +193,8 @@ class OzonePlatformX11 : public OzonePlatform,
std::make_unique<GtkUiDelegateX11>(x11::Connection::Get());
GtkUiDelegate::SetInstance(gtk_ui_delegate_.get());
#endif
base::UmaHistogramEnumeration("Linux.WindowManager", GetWindowManagerUMA());
}
void InitializeGPU(const InitParams& params) override {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment