Commit 1d0b8c34 authored by Tetsui Ohkubo's avatar Tetsui Ohkubo Committed by Commit Bot

Record DefaultView.VisibleRows metrics in Unified.

This adds DefaultView.VisibleRows metrics to UnifiedSystemTray. It was
previously implemented in old SystemTray.

PatchSet 1: Moving SystemTrayItem::UmaType to SystemTrayItemUmaType
PatchSet 2: Implement the metrics in UnifiedSystemTray

TEST=manual
BUG=842079

Change-Id: Ied65e288147c59b6df0a8312a86e30a35fa4b953
Reviewed-on: https://chromium-review.googlesource.com/1094821
Commit-Queue: Tetsui Ohkubo <tetsui@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567108}
parent 433099ab
...@@ -869,6 +869,7 @@ component("ash") { ...@@ -869,6 +869,7 @@ component("ash") {
"system/tray/system_tray_item.h", "system/tray/system_tray_item.h",
"system/tray/system_tray_item_detailed_view_delegate.cc", "system/tray/system_tray_item_detailed_view_delegate.cc",
"system/tray/system_tray_item_detailed_view_delegate.h", "system/tray/system_tray_item_detailed_view_delegate.h",
"system/tray/system_tray_item_uma_type.h",
"system/tray/system_tray_notifier.cc", "system/tray/system_tray_notifier.cc",
"system/tray/system_tray_notifier.h", "system/tray/system_tray_notifier.h",
"system/tray/system_tray_view.cc", "system/tray/system_tray_view.cc",
......
...@@ -21,7 +21,9 @@ namespace ash { ...@@ -21,7 +21,9 @@ namespace ash {
using chromeos::CrasAudioHandler; using chromeos::CrasAudioHandler;
TrayAudio::TrayAudio(SystemTray* system_tray) TrayAudio::TrayAudio(SystemTray* system_tray)
: TrayImageItem(system_tray, kSystemTrayVolumeMuteIcon, UMA_AUDIO), : TrayImageItem(system_tray,
kSystemTrayVolumeMuteIcon,
SystemTrayItemUmaType::UMA_AUDIO),
volume_view_(nullptr), volume_view_(nullptr),
pop_up_volume_view_(false), pop_up_volume_view_(false),
audio_detail_view_(nullptr), audio_detail_view_(nullptr),
......
...@@ -43,6 +43,10 @@ void BluetoothFeaturePodController::OnLabelPressed() { ...@@ -43,6 +43,10 @@ void BluetoothFeaturePodController::OnLabelPressed() {
tray_controller_->ShowBluetoothDetailedView(); tray_controller_->ShowBluetoothDetailedView();
} }
SystemTrayItemUmaType BluetoothFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_BLUETOOTH;
}
void BluetoothFeaturePodController::UpdateButton() { void BluetoothFeaturePodController::UpdateButton() {
bool is_available = bool is_available =
Shell::Get()->tray_bluetooth_helper()->GetBluetoothAvailable(); Shell::Get()->tray_bluetooth_helper()->GetBluetoothAvailable();
......
...@@ -25,6 +25,7 @@ class BluetoothFeaturePodController : public FeaturePodControllerBase, ...@@ -25,6 +25,7 @@ class BluetoothFeaturePodController : public FeaturePodControllerBase,
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
void OnLabelPressed() override; void OnLabelPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
private: private:
void UpdateButton(); void UpdateButton();
......
...@@ -108,7 +108,7 @@ class BluetoothDefaultView : public TrayItemMore { ...@@ -108,7 +108,7 @@ class BluetoothDefaultView : public TrayItemMore {
} // namespace tray } // namespace tray
TrayBluetooth::TrayBluetooth(SystemTray* system_tray) TrayBluetooth::TrayBluetooth(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_BLUETOOTH), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_BLUETOOTH),
default_(nullptr), default_(nullptr),
detailed_(nullptr), detailed_(nullptr),
detailed_view_delegate_( detailed_view_delegate_(
......
...@@ -168,7 +168,8 @@ void BrightnessView::SliderDragEnded(views::Slider* slider) { ...@@ -168,7 +168,8 @@ void BrightnessView::SliderDragEnded(views::Slider* slider) {
} // namespace tray } // namespace tray
TrayBrightness::TrayBrightness(SystemTray* system_tray) TrayBrightness::TrayBrightness(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_DISPLAY_BRIGHTNESS), : SystemTrayItem(system_tray,
SystemTrayItemUmaType::UMA_DISPLAY_BRIGHTNESS),
brightness_view_(nullptr), brightness_view_(nullptr),
current_percent_(100.0), current_percent_(100.0),
got_current_percent_(false), got_current_percent_(false),
......
...@@ -37,6 +37,10 @@ void CastFeaturePodController::OnIconPressed() { ...@@ -37,6 +37,10 @@ void CastFeaturePodController::OnIconPressed() {
tray_controller_->ShowCastDetailedView(); tray_controller_->ShowCastDetailedView();
} }
SystemTrayItemUmaType CastFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_CAST;
}
void CastFeaturePodController::OnDevicesUpdated( void CastFeaturePodController::OnDevicesUpdated(
std::vector<mojom::SinkAndRoutePtr> devices) { std::vector<mojom::SinkAndRoutePtr> devices) {
Update(); Update();
......
...@@ -25,6 +25,7 @@ class ASH_EXPORT CastFeaturePodController ...@@ -25,6 +25,7 @@ class ASH_EXPORT CastFeaturePodController
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
// CastConfigControllerObserver: // CastConfigControllerObserver:
void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override; void OnDevicesUpdated(std::vector<mojom::SinkAndRoutePtr> devices) override;
......
...@@ -417,7 +417,7 @@ void CastDetailedView::HandleViewClicked(views::View* view) { ...@@ -417,7 +417,7 @@ void CastDetailedView::HandleViewClicked(views::View* view) {
} // namespace tray } // namespace tray
TrayCast::TrayCast(SystemTray* system_tray) TrayCast::TrayCast(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_CAST), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_CAST),
detailed_view_delegate_( detailed_view_delegate_(
std::make_unique<SystemTrayItemDetailedViewDelegate>(this)) { std::make_unique<SystemTrayItemDetailedViewDelegate>(this)) {
Shell::Get()->AddShellObserver(this); Shell::Get()->AddShellObserver(this);
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
namespace ash { namespace ash {
TraySystemInfo::TraySystemInfo(SystemTray* system_tray) TraySystemInfo::TraySystemInfo(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_DATE), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_DATE),
tray_view_(nullptr), tray_view_(nullptr),
default_view_(nullptr) {} default_view_(nullptr) {}
......
...@@ -26,7 +26,7 @@ bool IsDisplayScaleTrayEnabled() { ...@@ -26,7 +26,7 @@ bool IsDisplayScaleTrayEnabled() {
} // namespace } // namespace
TrayScale::TrayScale(SystemTray* system_tray) TrayScale::TrayScale(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_NOT_RECORDED), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_NOT_RECORDED),
detailed_view_delegate_( detailed_view_delegate_(
std::make_unique<SystemTrayItemDetailedViewDelegate>(this)) {} std::make_unique<SystemTrayItemDetailedViewDelegate>(this)) {}
......
...@@ -41,7 +41,8 @@ base::string16 GetEnterpriseMessage() { ...@@ -41,7 +41,8 @@ base::string16 GetEnterpriseMessage() {
} // namespace } // namespace
TrayEnterprise::TrayEnterprise(SystemTray* system_tray) TrayEnterprise::TrayEnterprise(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_ENTERPRISE), tray_view_(nullptr) { : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_ENTERPRISE),
tray_view_(nullptr) {
Shell::Get()->system_tray_model()->enterprise_domain()->AddObserver(this); Shell::Get()->system_tray_model()->enterprise_domain()->AddObserver(this);
} }
......
...@@ -57,6 +57,10 @@ void IMEFeaturePodController::OnIconPressed() { ...@@ -57,6 +57,10 @@ void IMEFeaturePodController::OnIconPressed() {
tray_controller_->ShowIMEDetailedView(); tray_controller_->ShowIMEDetailedView();
} }
SystemTrayItemUmaType IMEFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_IME;
}
void IMEFeaturePodController::Update() { void IMEFeaturePodController::Update() {
button_->SetSubLabel(GetLabelString()); button_->SetSubLabel(GetLabelString());
button_->SetVisible(IsButtonVisible()); button_->SetVisible(IsButtonVisible());
......
...@@ -22,6 +22,7 @@ class ASH_EXPORT IMEFeaturePodController : public FeaturePodControllerBase { ...@@ -22,6 +22,7 @@ class ASH_EXPORT IMEFeaturePodController : public FeaturePodControllerBase {
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
private: private:
void Update(); void Update();
......
...@@ -127,7 +127,7 @@ void IMEDetailedView::ShowSettings() { ...@@ -127,7 +127,7 @@ void IMEDetailedView::ShowSettings() {
} // namespace tray } // namespace tray
TrayIME::TrayIME(SystemTray* system_tray) TrayIME::TrayIME(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_IME), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_IME),
ime_controller_(Shell::Get()->ime_controller()), ime_controller_(Shell::Get()->ime_controller()),
tray_label_(nullptr), tray_label_(nullptr),
default_(nullptr), default_(nullptr),
......
...@@ -102,7 +102,8 @@ void KeyboardBrightnessView::OnBoundsChanged(const gfx::Rect& old_bounds) { ...@@ -102,7 +102,8 @@ void KeyboardBrightnessView::OnBoundsChanged(const gfx::Rect& old_bounds) {
} // namespace tray } // namespace tray
TrayKeyboardBrightness::TrayKeyboardBrightness(SystemTray* system_tray) TrayKeyboardBrightness::TrayKeyboardBrightness(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_DISPLAY_BRIGHTNESS), : SystemTrayItem(system_tray,
SystemTrayItemUmaType::UMA_DISPLAY_BRIGHTNESS),
weak_ptr_factory_(this) { weak_ptr_factory_(this) {
chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver( chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(
this); this);
......
...@@ -55,7 +55,8 @@ class MultiProfileMediaTrayView : public TrayItemView, ...@@ -55,7 +55,8 @@ class MultiProfileMediaTrayView : public TrayItemView,
} // namespace tray } // namespace tray
MultiProfileMediaTrayItem::MultiProfileMediaTrayItem(SystemTray* system_tray) MultiProfileMediaTrayItem::MultiProfileMediaTrayItem(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_MULTI_PROFILE_MEDIA) {} : SystemTrayItem(system_tray,
SystemTrayItemUmaType::UMA_MULTI_PROFILE_MEDIA) {}
MultiProfileMediaTrayItem::~MultiProfileMediaTrayItem() = default; MultiProfileMediaTrayItem::~MultiProfileMediaTrayItem() = default;
......
...@@ -75,7 +75,8 @@ SystemTray* GetSystemTray() { ...@@ -75,7 +75,8 @@ SystemTray* GetSystemTray() {
// Trivial item implementation for testing PopupAndSystemTray test case. // Trivial item implementation for testing PopupAndSystemTray test case.
class TestItem : public SystemTrayItem { class TestItem : public SystemTrayItem {
public: public:
TestItem() : SystemTrayItem(GetSystemTray(), UMA_TEST) {} TestItem()
: SystemTrayItem(GetSystemTray(), SystemTrayItemUmaType::UMA_TEST) {}
views::View* CreateDefaultView(LoginStatus status) override { views::View* CreateDefaultView(LoginStatus status) override {
views::View* default_view = new views::View; views::View* default_view = new views::View;
......
...@@ -49,4 +49,8 @@ void NetworkFeaturePodController::OnLabelPressed() { ...@@ -49,4 +49,8 @@ void NetworkFeaturePodController::OnLabelPressed() {
tray_controller_->ShowNetworkDetailedView(); tray_controller_->ShowNetworkDetailedView();
} }
SystemTrayItemUmaType NetworkFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_NETWORK;
}
} // namespace ash } // namespace ash
...@@ -23,6 +23,7 @@ class NetworkFeaturePodController : public FeaturePodControllerBase { ...@@ -23,6 +23,7 @@ class NetworkFeaturePodController : public FeaturePodControllerBase {
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
void OnLabelPressed() override; void OnLabelPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
private: private:
// Unowned. // Unowned.
......
...@@ -101,7 +101,7 @@ class NetworkDefaultView : public TrayItemMore, ...@@ -101,7 +101,7 @@ class NetworkDefaultView : public TrayItemMore,
} // namespace tray } // namespace tray
TrayNetwork::TrayNetwork(SystemTray* system_tray) TrayNetwork::TrayNetwork(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_NETWORK), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_NETWORK),
tray_(nullptr), tray_(nullptr),
default_(nullptr), default_(nullptr),
detailed_(nullptr), detailed_(nullptr),
......
...@@ -142,7 +142,7 @@ class VpnDefaultView : public TrayItemMore, ...@@ -142,7 +142,7 @@ class VpnDefaultView : public TrayItemMore,
} // namespace tray } // namespace tray
TrayVPN::TrayVPN(SystemTray* system_tray) TrayVPN::TrayVPN(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_VPN), : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_VPN),
default_(nullptr), default_(nullptr),
detailed_(nullptr), detailed_(nullptr),
detailed_view_delegate_( detailed_view_delegate_(
......
...@@ -45,6 +45,10 @@ void VPNFeaturePodController::OnIconPressed() { ...@@ -45,6 +45,10 @@ void VPNFeaturePodController::OnIconPressed() {
tray_controller_->ShowVPNDetailedView(); tray_controller_->ShowVPNDetailedView();
} }
SystemTrayItemUmaType VPNFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_VPN;
}
void VPNFeaturePodController::Update() { void VPNFeaturePodController::Update() {
// NetworkHandler can be uninitialized in unit tests. // NetworkHandler can be uninitialized in unit tests.
if (!chromeos::NetworkHandler::IsInitialized()) if (!chromeos::NetworkHandler::IsInitialized())
......
...@@ -22,6 +22,7 @@ class VPNFeaturePodController : public FeaturePodControllerBase { ...@@ -22,6 +22,7 @@ class VPNFeaturePodController : public FeaturePodControllerBase {
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
private: private:
void Update(); void Update();
......
...@@ -34,6 +34,10 @@ void NightLightFeaturePodController::OnIconPressed() { ...@@ -34,6 +34,10 @@ void NightLightFeaturePodController::OnIconPressed() {
UpdateButton(); UpdateButton();
} }
SystemTrayItemUmaType NightLightFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_NIGHT_LIGHT;
}
void NightLightFeaturePodController::UpdateButton() { void NightLightFeaturePodController::UpdateButton() {
if (!features::IsNightLightEnabled()) if (!features::IsNightLightEnabled())
return; return;
......
...@@ -19,6 +19,7 @@ class NightLightFeaturePodController : public FeaturePodControllerBase { ...@@ -19,6 +19,7 @@ class NightLightFeaturePodController : public FeaturePodControllerBase {
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
private: private:
void UpdateButton(); void UpdateButton();
......
...@@ -11,7 +11,9 @@ ...@@ -11,7 +11,9 @@
namespace ash { namespace ash {
TrayNightLight::TrayNightLight(SystemTray* system_tray) TrayNightLight::TrayNightLight(SystemTray* system_tray)
: TrayImageItem(system_tray, kSystemTrayNightLightIcon, UMA_NIGHT_LIGHT) { : TrayImageItem(system_tray,
kSystemTrayNightLightIcon,
SystemTrayItemUmaType::UMA_NIGHT_LIGHT) {
Shell::Get()->night_light_controller()->AddObserver(this); Shell::Get()->night_light_controller()->AddObserver(this);
} }
......
...@@ -79,8 +79,7 @@ void PowerTrayView::UpdateImage() { ...@@ -79,8 +79,7 @@ void PowerTrayView::UpdateImage() {
} // namespace tray } // namespace tray
TrayPower::TrayPower(SystemTray* system_tray) TrayPower::TrayPower(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_POWER) { : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_POWER) {}
}
TrayPower::~TrayPower() = default; TrayPower::~TrayPower() = default;
......
...@@ -39,6 +39,10 @@ void RotationLockFeaturePodController::OnIconPressed() { ...@@ -39,6 +39,10 @@ void RotationLockFeaturePodController::OnIconPressed() {
Shell::Get()->screen_orientation_controller()->ToggleUserRotationLock(); Shell::Get()->screen_orientation_controller()->ToggleUserRotationLock();
} }
SystemTrayItemUmaType RotationLockFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_ROTATION_LOCK;
}
void RotationLockFeaturePodController::OnTabletModeStarted() { void RotationLockFeaturePodController::OnTabletModeStarted() {
UpdateButton(); UpdateButton();
} }
......
...@@ -25,6 +25,7 @@ class ASH_EXPORT RotationLockFeaturePodController ...@@ -25,6 +25,7 @@ class ASH_EXPORT RotationLockFeaturePodController
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
// TabletModeObserver: // TabletModeObserver:
void OnTabletModeStarted() override; void OnTabletModeStarted() override;
......
...@@ -173,7 +173,7 @@ void RotationLockDefaultView::OnUserRotationLockChanged() { ...@@ -173,7 +173,7 @@ void RotationLockDefaultView::OnUserRotationLockChanged() {
TrayRotationLock::TrayRotationLock(SystemTray* system_tray) TrayRotationLock::TrayRotationLock(SystemTray* system_tray)
: TrayImageItem(system_tray, : TrayImageItem(system_tray,
kSystemTrayRotationLockLockedIcon, kSystemTrayRotationLockLockedIcon,
UMA_ROTATION_LOCK) { SystemTrayItemUmaType::UMA_ROTATION_LOCK) {
Shell::Get()->tablet_mode_controller()->AddObserver(this); Shell::Get()->tablet_mode_controller()->AddObserver(this);
} }
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
namespace ash { namespace ash {
ScreenCaptureTrayItem::ScreenCaptureTrayItem(SystemTray* system_tray) ScreenCaptureTrayItem::ScreenCaptureTrayItem(SystemTray* system_tray)
: ScreenTrayItem(system_tray, UMA_SCREEN_CAPTURE) { : ScreenTrayItem(system_tray, SystemTrayItemUmaType::UMA_SCREEN_CAPTURE) {
Shell::Get()->AddShellObserver(this); Shell::Get()->AddShellObserver(this);
Shell::Get()->system_tray_notifier()->AddScreenCaptureObserver(this); Shell::Get()->system_tray_notifier()->AddScreenCaptureObserver(this);
} }
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
namespace ash { namespace ash {
ScreenShareTrayItem::ScreenShareTrayItem(SystemTray* system_tray) ScreenShareTrayItem::ScreenShareTrayItem(SystemTray* system_tray)
: ScreenTrayItem(system_tray, UMA_SCREEN_SHARE) { : ScreenTrayItem(system_tray, SystemTrayItemUmaType::UMA_SCREEN_SHARE) {
Shell::Get()->system_tray_notifier()->AddScreenShareObserver(this); Shell::Get()->system_tray_notifier()->AddScreenShareObserver(this);
} }
......
...@@ -91,7 +91,8 @@ void ScreenStatusView::UpdateFromScreenTrayItem() { ...@@ -91,7 +91,8 @@ void ScreenStatusView::UpdateFromScreenTrayItem() {
} // namespace tray } // namespace tray
ScreenTrayItem::ScreenTrayItem(SystemTray* system_tray, UmaType uma_type) ScreenTrayItem::ScreenTrayItem(SystemTray* system_tray,
SystemTrayItemUmaType uma_type)
: SystemTrayItem(system_tray, uma_type), : SystemTrayItem(system_tray, uma_type),
tray_view_(nullptr), tray_view_(nullptr),
default_view_(nullptr), default_view_(nullptr),
......
...@@ -73,7 +73,7 @@ class ScreenStatusView : public views::View, public views::ButtonListener { ...@@ -73,7 +73,7 @@ class ScreenStatusView : public views::View, public views::ButtonListener {
// can stop the screen capture/sharing by pressing the stop button. // can stop the screen capture/sharing by pressing the stop button.
class ASH_EXPORT ScreenTrayItem : public SystemTrayItem { class ASH_EXPORT ScreenTrayItem : public SystemTrayItem {
public: public:
ScreenTrayItem(SystemTray* system_tray, UmaType uma_type); ScreenTrayItem(SystemTray* system_tray, SystemTrayItemUmaType uma_type);
~ScreenTrayItem() override; ~ScreenTrayItem() override;
tray::ScreenTrayView* tray_view() { return tray_view_; } tray::ScreenTrayView* tray_view() { return tray_view_; }
......
...@@ -27,7 +27,8 @@ ...@@ -27,7 +27,8 @@
namespace ash { namespace ash {
TraySessionLengthLimit::TraySessionLengthLimit(SystemTray* system_tray) TraySessionLengthLimit::TraySessionLengthLimit(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_SESSION_LENGTH_LIMIT), : SystemTrayItem(system_tray,
SystemTrayItemUmaType::UMA_SESSION_LENGTH_LIMIT),
model_(Shell::Get()->system_tray_model()->session_length_limit()) { model_(Shell::Get()->system_tray_model()->session_length_limit()) {
model_->AddObserver(this); model_->AddObserver(this);
OnSessionLengthLimitUpdated(); OnSessionLengthLimitUpdated();
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
namespace ash { namespace ash {
TraySupervisedUser::TraySupervisedUser(SystemTray* system_tray) TraySupervisedUser::TraySupervisedUser(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_SUPERVISED_USER) {} : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_SUPERVISED_USER) {}
TraySupervisedUser::~TraySupervisedUser() = default; TraySupervisedUser::~TraySupervisedUser() = default;
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
namespace ash { namespace ash {
TrayTiles::TrayTiles(SystemTray* system_tray) TrayTiles::TrayTiles(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_NOT_RECORDED), default_view_(nullptr) {} : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_NOT_RECORDED),
default_view_(nullptr) {}
TrayTiles::~TrayTiles() = default; TrayTiles::~TrayTiles() = default;
......
...@@ -94,7 +94,8 @@ namespace { ...@@ -94,7 +94,8 @@ namespace {
// A tray item that just reserves space in the tray. // A tray item that just reserves space in the tray.
class PaddingTrayItem : public SystemTrayItem { class PaddingTrayItem : public SystemTrayItem {
public: public:
PaddingTrayItem() : SystemTrayItem(nullptr, UMA_NOT_RECORDED) {} PaddingTrayItem()
: SystemTrayItem(nullptr, SystemTrayItemUmaType::UMA_NOT_RECORDED) {}
~PaddingTrayItem() override = default; ~PaddingTrayItem() override = default;
// SystemTrayItem: // SystemTrayItem:
......
...@@ -67,7 +67,7 @@ class SystemTrayBubble { ...@@ -67,7 +67,7 @@ class SystemTrayBubble {
views::TrayBubbleView* bubble_view_ = nullptr; views::TrayBubbleView* bubble_view_ = nullptr;
// Tracks the views created in the last call to CreateItemViews(). // Tracks the views created in the last call to CreateItemViews().
std::map<SystemTrayItem::UmaType, views::View*> tray_item_view_map_; std::map<SystemTrayItemUmaType, views::View*> tray_item_view_map_;
int autoclose_delay_; int autoclose_delay_;
base::OneShotTimer autoclose_; base::OneShotTimer autoclose_;
......
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
namespace ash { namespace ash {
SystemTrayItem::SystemTrayItem(SystemTray* system_tray, UmaType uma_type) SystemTrayItem::SystemTrayItem(SystemTray* system_tray,
SystemTrayItemUmaType uma_type)
: system_tray_(system_tray), uma_type_(uma_type), restore_focus_(false) {} : system_tray_(system_tray), uma_type_(uma_type), restore_focus_(false) {}
SystemTrayItem::~SystemTrayItem() = default; SystemTrayItem::~SystemTrayItem() = default;
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "ash/ash_export.h" #include "ash/ash_export.h"
#include "ash/login_status.h" #include "ash/login_status.h"
#include "ash/public/cpp/shelf_types.h" #include "ash/public/cpp/shelf_types.h"
#include "ash/system/tray/system_tray_item_uma_type.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/timer/timer.h" #include "base/timer/timer.h"
...@@ -28,44 +29,7 @@ class TrayItemView; ...@@ -28,44 +29,7 @@ class TrayItemView;
// Detailed view - The submenu shown when the top-level menu row is clicked. // Detailed view - The submenu shown when the top-level menu row is clicked.
class ASH_EXPORT SystemTrayItem { class ASH_EXPORT SystemTrayItem {
public: public:
// The different types of SystemTrayItems. SystemTrayItem(SystemTray* system_tray, SystemTrayItemUmaType type);
//
// NOTE: These values are used for UMA metrics so do NOT re-order this enum
// and only insert items before the COUNT item.
enum UmaType {
// SystemTrayItem's with this type are not recorded in the histogram.
UMA_NOT_RECORDED = 0,
// Used for testing purposes only.
UMA_TEST = 1,
UMA_ACCESSIBILITY = 2,
UMA_AUDIO = 3,
UMA_BLUETOOTH = 4,
UMA_CAPS_LOCK = 5,
UMA_CAST = 6,
UMA_DATE = 7,
UMA_DISPLAY = 8,
UMA_DISPLAY_BRIGHTNESS = 9,
UMA_ENTERPRISE = 10,
UMA_IME = 11,
UMA_MULTI_PROFILE_MEDIA = 12,
UMA_NETWORK = 13,
UMA_SETTINGS = 14,
UMA_UPDATE = 15,
UMA_POWER = 16,
UMA_ROTATION_LOCK = 17,
UMA_SCREEN_CAPTURE = 18,
UMA_SCREEN_SHARE = 19,
UMA_SESSION_LENGTH_LIMIT = 20,
UMA_SMS = 21,
UMA_SUPERVISED_USER = 22,
UMA_TRACING = 23,
UMA_USER = 24,
UMA_VPN = 25,
UMA_NIGHT_LIGHT = 26,
UMA_COUNT = 27,
};
SystemTrayItem(SystemTray* system_tray, UmaType type);
virtual ~SystemTrayItem(); virtual ~SystemTrayItem();
// Create* functions may return NULL if nothing should be displayed for the // Create* functions may return NULL if nothing should be displayed for the
...@@ -150,10 +114,10 @@ class ASH_EXPORT SystemTrayItem { ...@@ -150,10 +114,10 @@ class ASH_EXPORT SystemTrayItem {
// Accesses uma_type(). // Accesses uma_type().
friend class SystemTrayView; friend class SystemTrayView;
UmaType uma_type() const { return uma_type_; } SystemTrayItemUmaType uma_type() const { return uma_type_; }
SystemTray* system_tray_; SystemTray* system_tray_;
UmaType uma_type_; SystemTrayItemUmaType uma_type_;
bool restore_focus_; bool restore_focus_;
// Used to delay the transition to the detailed view. // Used to delay the transition to the detailed view.
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_ITEM_UMA_TYPE_H_
#define ASH_SYSTEM_TRAY_SYSTEM_TRAY_ITEM_UMA_TYPE_H_
namespace ash {
// The different types of SystemTrayItems.
//
// NOTE: These values are used for UMA metrics so do NOT re-order this enum
// and only insert items before the COUNT item.
enum class SystemTrayItemUmaType {
// SystemTrayItem's with this type are not recorded in the histogram.
UMA_NOT_RECORDED = 0,
// Used for testing purposes only.
UMA_TEST = 1,
UMA_ACCESSIBILITY = 2,
UMA_AUDIO = 3,
UMA_BLUETOOTH = 4,
UMA_CAPS_LOCK = 5,
UMA_CAST = 6,
UMA_DATE = 7,
UMA_DISPLAY = 8,
UMA_DISPLAY_BRIGHTNESS = 9,
UMA_ENTERPRISE = 10,
UMA_IME = 11,
UMA_MULTI_PROFILE_MEDIA = 12,
UMA_NETWORK = 13,
UMA_SETTINGS = 14,
UMA_UPDATE = 15,
UMA_POWER = 16,
UMA_ROTATION_LOCK = 17,
UMA_SCREEN_CAPTURE = 18,
UMA_SCREEN_SHARE = 19,
UMA_SESSION_LENGTH_LIMIT = 20,
UMA_SMS = 21,
UMA_SUPERVISED_USER = 22,
UMA_TRACING = 23,
UMA_USER = 24,
UMA_VPN = 25,
UMA_NIGHT_LIGHT = 26,
UMA_COUNT = 27,
};
} // namespace ash
#endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_ITEM_UMA_TYPE_H_
...@@ -467,7 +467,7 @@ TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) { ...@@ -467,7 +467,7 @@ TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) {
tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 1); SystemTrayItemUmaType::UMA_TEST, 1);
ASSERT_TRUE(tray->HasSystemBubble()); ASSERT_TRUE(tray->HasSystemBubble());
tray->CloseBubble(); tray->CloseBubble();
...@@ -476,7 +476,7 @@ TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) { ...@@ -476,7 +476,7 @@ TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) {
tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 2); SystemTrayItemUmaType::UMA_TEST, 2);
ASSERT_TRUE(tray->HasSystemBubble()); ASSERT_TRUE(tray->HasSystemBubble());
tray->CloseBubble(); tray->CloseBubble();
...@@ -487,7 +487,7 @@ TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) { ...@@ -487,7 +487,7 @@ TEST_F(SystemTrayTest, OnlyVisibleItemsRecorded) {
tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 2); SystemTrayItemUmaType::UMA_TEST, 2);
ASSERT_TRUE(tray->HasSystemBubble()); ASSERT_TRUE(tray->HasSystemBubble());
tray->CloseBubble(); tray->CloseBubble();
...@@ -505,15 +505,15 @@ TEST_F(SystemTrayTest, NotRecordedtemsAreNotRecorded) { ...@@ -505,15 +505,15 @@ TEST_F(SystemTrayTest, NotRecordedtemsAreNotRecorded) {
SystemTray* tray = GetPrimarySystemTray(); SystemTray* tray = GetPrimarySystemTray();
ASSERT_TRUE(tray->GetWidget()); ASSERT_TRUE(tray->GetWidget());
tray->AddTrayItem( tray->AddTrayItem(std::make_unique<TestSystemTrayItem>(
std::make_unique<TestSystemTrayItem>(SystemTrayItem::UMA_NOT_RECORDED)); SystemTrayItemUmaType::UMA_NOT_RECORDED));
base::HistogramTester histogram_tester; base::HistogramTester histogram_tester;
tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(
SystemTrayItem::UMA_NOT_RECORDED, 0); kVisibleRowsHistogramName, SystemTrayItemUmaType::UMA_NOT_RECORDED, 0);
ASSERT_TRUE(tray->HasSystemBubble()); ASSERT_TRUE(tray->HasSystemBubble());
tray->CloseBubble(); tray->CloseBubble();
...@@ -540,7 +540,7 @@ TEST_F(SystemTrayTest, NullDefaultViewIsNotRecorded) { ...@@ -540,7 +540,7 @@ TEST_F(SystemTrayTest, NullDefaultViewIsNotRecorded) {
tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 0); SystemTrayItemUmaType::UMA_TEST, 0);
ASSERT_TRUE(tray->HasSystemBubble()); ASSERT_TRUE(tray->HasSystemBubble());
tray->CloseBubble(); tray->CloseBubble();
...@@ -592,17 +592,17 @@ TEST_F(SystemTrayTest, VisibleDefaultViewIsNotRecordedOnReshow) { ...@@ -592,17 +592,17 @@ TEST_F(SystemTrayTest, VisibleDefaultViewIsNotRecordedOnReshow) {
tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_CREATE_NEW, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 1); SystemTrayItemUmaType::UMA_TEST, 1);
tray->ShowDetailedView(test_item, 0, BUBBLE_USE_EXISTING); tray->ShowDetailedView(test_item, 0, BUBBLE_USE_EXISTING);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 1); SystemTrayItemUmaType::UMA_TEST, 1);
tray->ShowDefaultView(BUBBLE_USE_EXISTING, false /* show_by_click */); tray->ShowDefaultView(BUBBLE_USE_EXISTING, false /* show_by_click */);
RunAllPendingInMessageLoop(); RunAllPendingInMessageLoop();
histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName, histogram_tester.ExpectBucketCount(kVisibleRowsHistogramName,
SystemTrayItem::UMA_TEST, 1); SystemTrayItemUmaType::UMA_TEST, 1);
ASSERT_TRUE(tray->HasSystemBubble()); ASSERT_TRUE(tray->HasSystemBubble());
tray->CloseBubble(); tray->CloseBubble();
......
...@@ -121,12 +121,12 @@ void SystemTrayView::RecordVisibleRowMetrics() { ...@@ -121,12 +121,12 @@ void SystemTrayView::RecordVisibleRowMetrics() {
if (system_tray_type_ != SYSTEM_TRAY_TYPE_DEFAULT) if (system_tray_type_ != SYSTEM_TRAY_TYPE_DEFAULT)
return; return;
for (const std::pair<SystemTrayItem::UmaType, views::View*>& pair : for (const std::pair<SystemTrayItemUmaType, views::View*>& pair :
tray_item_view_map_) { tray_item_view_map_) {
if (pair.second->visible() && if (pair.second->visible() &&
pair.first != SystemTrayItem::UMA_NOT_RECORDED) { pair.first != SystemTrayItemUmaType::UMA_NOT_RECORDED) {
UMA_HISTOGRAM_ENUMERATION("Ash.SystemMenu.DefaultView.VisibleRows", UMA_HISTOGRAM_ENUMERATION("Ash.SystemMenu.DefaultView.VisibleRows",
pair.first, SystemTrayItem::UMA_COUNT); pair.first, SystemTrayItemUmaType::UMA_COUNT);
} }
} }
} }
......
...@@ -40,7 +40,7 @@ class SystemTrayView : public views::View { ...@@ -40,7 +40,7 @@ class SystemTrayView : public views::View {
private: private:
// Tracks the views created in the last call to CreateItemViews(). // Tracks the views created in the last call to CreateItemViews().
std::map<SystemTrayItem::UmaType, views::View*> tray_item_view_map_; std::map<SystemTrayItemUmaType, views::View*> tray_item_view_map_;
std::unique_ptr<ui::EventHandler> time_to_click_recorder_; std::unique_ptr<ui::EventHandler> time_to_click_recorder_;
std::unique_ptr<ui::EventHandler> interacted_by_tap_recorder_; std::unique_ptr<ui::EventHandler> interacted_by_tap_recorder_;
......
...@@ -12,9 +12,10 @@ ...@@ -12,9 +12,10 @@
namespace ash { namespace ash {
TestSystemTrayItem::TestSystemTrayItem() : TestSystemTrayItem(UMA_TEST) {} TestSystemTrayItem::TestSystemTrayItem()
: TestSystemTrayItem(SystemTrayItemUmaType::UMA_TEST) {}
TestSystemTrayItem::TestSystemTrayItem(SystemTrayItem::UmaType uma_type) TestSystemTrayItem::TestSystemTrayItem(SystemTrayItemUmaType uma_type)
: SystemTrayItem(AshTestBase::GetPrimarySystemTray(), uma_type), : SystemTrayItem(AshTestBase::GetPrimarySystemTray(), uma_type),
has_views_(true), has_views_(true),
views_are_visible_(true), views_are_visible_(true),
......
...@@ -16,7 +16,7 @@ namespace ash { ...@@ -16,7 +16,7 @@ namespace ash {
class TestSystemTrayItem : public SystemTrayItem { class TestSystemTrayItem : public SystemTrayItem {
public: public:
TestSystemTrayItem(); TestSystemTrayItem();
explicit TestSystemTrayItem(SystemTrayItem::UmaType uma_type); explicit TestSystemTrayItem(SystemTrayItemUmaType uma_type);
~TestSystemTrayItem() override; ~TestSystemTrayItem() override;
void set_has_views(bool has_views) { has_views_ = has_views; } void set_has_views(bool has_views) { has_views_ = has_views; }
......
...@@ -52,7 +52,8 @@ class TestDetailsView : public TrayDetailedView { ...@@ -52,7 +52,8 @@ class TestDetailsView : public TrayDetailedView {
class TestItem : public SystemTrayItem { class TestItem : public SystemTrayItem {
public: public:
TestItem() TestItem()
: SystemTrayItem(AshTestBase::GetPrimarySystemTray(), UMA_TEST), : SystemTrayItem(AshTestBase::GetPrimarySystemTray(),
SystemTrayItemUmaType::UMA_TEST),
tray_view_(nullptr), tray_view_(nullptr),
default_view_(nullptr), default_view_(nullptr),
detailed_view_(nullptr), detailed_view_(nullptr),
......
...@@ -18,7 +18,7 @@ namespace ash { ...@@ -18,7 +18,7 @@ namespace ash {
TrayImageItem::TrayImageItem(SystemTray* system_tray, TrayImageItem::TrayImageItem(SystemTray* system_tray,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
UmaType uma_type) SystemTrayItemUmaType uma_type)
: SystemTrayItem(system_tray, uma_type), : SystemTrayItem(system_tray, uma_type),
icon_(icon), icon_(icon),
icon_color_(kTrayIconColor), icon_color_(kTrayIconColor),
......
...@@ -26,7 +26,7 @@ class ASH_EXPORT TrayImageItem : public SystemTrayItem { ...@@ -26,7 +26,7 @@ class ASH_EXPORT TrayImageItem : public SystemTrayItem {
public: public:
TrayImageItem(SystemTray* system_tray, TrayImageItem(SystemTray* system_tray,
const gfx::VectorIcon& icon, const gfx::VectorIcon& icon,
UmaType uma_type); SystemTrayItemUmaType uma_type);
~TrayImageItem() override; ~TrayImageItem() override;
views::View* tray_view(); views::View* tray_view();
......
...@@ -458,7 +458,7 @@ void AccessibilityDetailedView::ShowHelp() { ...@@ -458,7 +458,7 @@ void AccessibilityDetailedView::ShowHelp() {
TrayAccessibility::TrayAccessibility(SystemTray* system_tray) TrayAccessibility::TrayAccessibility(SystemTray* system_tray)
: TrayImageItem(system_tray, : TrayImageItem(system_tray,
kSystemTrayAccessibilityIcon, kSystemTrayAccessibilityIcon,
UMA_ACCESSIBILITY), SystemTrayItemUmaType::UMA_ACCESSIBILITY),
default_(nullptr), default_(nullptr),
detailed_menu_(nullptr), detailed_menu_(nullptr),
tray_icon_visible_(false), tray_icon_visible_(false),
......
...@@ -133,7 +133,9 @@ class CapsLockDefaultView : public ActionableView { ...@@ -133,7 +133,9 @@ class CapsLockDefaultView : public ActionableView {
}; };
TrayCapsLock::TrayCapsLock(SystemTray* system_tray) TrayCapsLock::TrayCapsLock(SystemTray* system_tray)
: TrayImageItem(system_tray, kSystemTrayCapsLockIcon, UMA_CAPS_LOCK), : TrayImageItem(system_tray,
kSystemTrayCapsLockIcon,
SystemTrayItemUmaType::UMA_CAPS_LOCK),
default_(nullptr), default_(nullptr),
caps_lock_enabled_(IsCapsLockEnabled()) { caps_lock_enabled_(IsCapsLockEnabled()) {
Shell::Get()->ime_controller()->AddObserver(this); Shell::Get()->ime_controller()->AddObserver(this);
......
...@@ -72,7 +72,9 @@ class DefaultTracingView : public ActionableView { ...@@ -72,7 +72,9 @@ class DefaultTracingView : public ActionableView {
// ash::TrayTracing // ash::TrayTracing
TrayTracing::TrayTracing(SystemTray* system_tray) TrayTracing::TrayTracing(SystemTray* system_tray)
: TrayImageItem(system_tray, kSystemTrayTracingIcon, UMA_TRACING) { : TrayImageItem(system_tray,
kSystemTrayTracingIcon,
SystemTrayItemUmaType::UMA_TRACING) {
DCHECK(system_tray); DCHECK(system_tray);
Shell::Get()->system_tray_model()->tracing()->AddObserver(this); Shell::Get()->system_tray_model()->tracing()->AddObserver(this);
} }
......
...@@ -39,4 +39,8 @@ void AccessibilityFeaturePodController::OnIconPressed() { ...@@ -39,4 +39,8 @@ void AccessibilityFeaturePodController::OnIconPressed() {
tray_controller_->ShowAccessibilityDetailedView(); tray_controller_->ShowAccessibilityDetailedView();
} }
SystemTrayItemUmaType AccessibilityFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_ACCESSIBILITY;
}
} // namespace ash } // namespace ash
...@@ -24,6 +24,7 @@ class ASH_EXPORT AccessibilityFeaturePodController ...@@ -24,6 +24,7 @@ class ASH_EXPORT AccessibilityFeaturePodController
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
private: private:
// Unowned. // Unowned.
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define ASH_SYSTEM_UNIFIED_FEATURE_POD_CONTROLLER_BASE_H_ #define ASH_SYSTEM_UNIFIED_FEATURE_POD_CONTROLLER_BASE_H_
#include "ash/ash_export.h" #include "ash/ash_export.h"
#include "ash/system/tray/system_tray_item_uma_type.h"
namespace ash { namespace ash {
...@@ -32,6 +33,10 @@ class ASH_EXPORT FeaturePodControllerBase { ...@@ -32,6 +33,10 @@ class ASH_EXPORT FeaturePodControllerBase {
// If the feature pod has a detailed view, it is expected to show the detailed // If the feature pod has a detailed view, it is expected to show the detailed
// view. Defaults to OnIconPressed(). // view. Defaults to OnIconPressed().
virtual void OnLabelPressed(); virtual void OnLabelPressed();
// Return histogram value for Ash.SystemMenu.DefaultView.VisibleRows. If the
// button is not recorded, UMA_NOT_RECORDED will be used.
virtual SystemTrayItemUmaType GetUmaType() const = 0;
}; };
} // namespace ash } // namespace ash
......
...@@ -31,6 +31,9 @@ class FeaturePodsContainerViewTest : public AshTestBase, ...@@ -31,6 +31,9 @@ class FeaturePodsContainerViewTest : public AshTestBase,
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override { return nullptr; } FeaturePodButton* CreateButton() override { return nullptr; }
void OnIconPressed() override {} void OnIconPressed() override {}
SystemTrayItemUmaType GetUmaType() const override {
return SystemTrayItemUmaType::UMA_TEST;
}
// views::ViewObserver: // views::ViewObserver:
void OnViewPreferredSizeChanged(views::View* observed_view) override { void OnViewPreferredSizeChanged(views::View* observed_view) override {
......
...@@ -37,6 +37,10 @@ void QuietModeFeaturePodController::OnIconPressed() { ...@@ -37,6 +37,10 @@ void QuietModeFeaturePodController::OnIconPressed() {
message_center->SetQuietMode(!is_quiet_mode); message_center->SetQuietMode(!is_quiet_mode);
} }
SystemTrayItemUmaType QuietModeFeaturePodController::GetUmaType() const {
return SystemTrayItemUmaType::UMA_NOT_RECORDED;
}
void QuietModeFeaturePodController::OnQuietModeChanged(bool in_quiet_mode) { void QuietModeFeaturePodController::OnQuietModeChanged(bool in_quiet_mode) {
button_->SetVectorIcon(in_quiet_mode button_->SetVectorIcon(in_quiet_mode
? kNotificationCenterDoNotDisturbOnIcon ? kNotificationCenterDoNotDisturbOnIcon
......
...@@ -25,6 +25,7 @@ class QuietModeFeaturePodController ...@@ -25,6 +25,7 @@ class QuietModeFeaturePodController
// FeaturePodControllerBase: // FeaturePodControllerBase:
FeaturePodButton* CreateButton() override; FeaturePodButton* CreateButton() override;
void OnIconPressed() override; void OnIconPressed() override;
SystemTrayItemUmaType GetUmaType() const override;
// message_center::MessageCenterObserver: // message_center::MessageCenterObserver:
void OnQuietModeChanged(bool in_quiet_mode) override; void OnQuietModeChanged(bool in_quiet_mode) override;
......
...@@ -24,8 +24,10 @@ ...@@ -24,8 +24,10 @@
#include "ash/system/night_light/night_light_feature_pod_controller.h" #include "ash/system/night_light/night_light_feature_pod_controller.h"
#include "ash/system/rotation/rotation_lock_feature_pod_controller.h" #include "ash/system/rotation/rotation_lock_feature_pod_controller.h"
#include "ash/system/tray/system_tray_controller.h" #include "ash/system/tray/system_tray_controller.h"
#include "ash/system/tray/system_tray_item_uma_type.h"
#include "ash/system/unified/accessibility_feature_pod_controller.h" #include "ash/system/unified/accessibility_feature_pod_controller.h"
#include "ash/system/unified/detailed_view_controller.h" #include "ash/system/unified/detailed_view_controller.h"
#include "ash/system/unified/feature_pod_button.h"
#include "ash/system/unified/feature_pod_controller_base.h" #include "ash/system/unified/feature_pod_controller_base.h"
#include "ash/system/unified/quiet_mode_feature_pod_controller.h" #include "ash/system/unified/quiet_mode_feature_pod_controller.h"
#include "ash/system/unified/unified_system_tray_model.h" #include "ash/system/unified/unified_system_tray_model.h"
...@@ -262,7 +264,17 @@ void UnifiedSystemTrayController::InitFeaturePods() { ...@@ -262,7 +264,17 @@ void UnifiedSystemTrayController::InitFeaturePods() {
void UnifiedSystemTrayController::AddFeaturePodItem( void UnifiedSystemTrayController::AddFeaturePodItem(
std::unique_ptr<FeaturePodControllerBase> controller) { std::unique_ptr<FeaturePodControllerBase> controller) {
DCHECK(unified_view_); DCHECK(unified_view_);
unified_view_->AddFeaturePodButton(controller->CreateButton()); FeaturePodButton* button = controller->CreateButton();
// Record DefaultView.VisibleRows UMA.
SystemTrayItemUmaType uma_type = controller->GetUmaType();
if (uma_type != SystemTrayItemUmaType::UMA_NOT_RECORDED &&
button->visible_preferred()) {
UMA_HISTOGRAM_ENUMERATION("Ash.SystemMenu.DefaultView.VisibleRows",
uma_type, SystemTrayItemUmaType::UMA_COUNT);
}
unified_view_->AddFeaturePodButton(button);
feature_pod_controllers_.push_back(std::move(controller)); feature_pod_controllers_.push_back(std::move(controller));
} }
......
...@@ -131,7 +131,9 @@ class TrayUpdate::UpdateView : public ActionableView { ...@@ -131,7 +131,9 @@ class TrayUpdate::UpdateView : public ActionableView {
}; };
TrayUpdate::TrayUpdate(SystemTray* system_tray) TrayUpdate::TrayUpdate(SystemTray* system_tray)
: TrayImageItem(system_tray, kSystemTrayUpdateIcon, UMA_UPDATE), : TrayImageItem(system_tray,
kSystemTrayUpdateIcon,
SystemTrayItemUmaType::UMA_UPDATE),
model_(Shell::Get()->system_tray_model()->update_model()) { model_(Shell::Get()->system_tray_model()->update_model()) {
model_->AddObserver(this); model_->AddObserver(this);
} }
......
...@@ -47,7 +47,8 @@ views::ImageView* CreateIcon() { ...@@ -47,7 +47,8 @@ views::ImageView* CreateIcon() {
namespace ash { namespace ash {
TrayUser::TrayUser(SystemTray* system_tray) TrayUser::TrayUser(SystemTray* system_tray)
: SystemTrayItem(system_tray, UMA_USER), scoped_session_observer_(this) {} : SystemTrayItem(system_tray, SystemTrayItemUmaType::UMA_USER),
scoped_session_observer_(this) {}
TrayUser::~TrayUser() = default; TrayUser::~TrayUser() = default;
......
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