blob: 0f8db773cfda982d38bdfa48e5d141161c7c9d19 [file] [log] [blame]
// 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.
#include "ash/message_center/message_center_scroll_bar.h"
#include "ash/public/cpp/ash_features.h"
#include "base/metrics/histogram_macros.h"
namespace {
enum class ScrollActionReason {
kUnknown,
kByMouseWheel,
kByTouch,
kByArrowKey,
kCount,
};
void CollectScrollActionReason(ScrollActionReason reason) {
UMA_HISTOGRAM_ENUMERATION("ChromeOS.MessageCenter.ScrollActionReason", reason,
ScrollActionReason::kCount);
}
} // namespace
namespace ash {
MessageCenterScrollBar::MessageCenterScrollBar(
MessageCenterScrollBar::Observer* observer)
: views::OverlayScrollBar(false), observer_(observer) {
GetThumb()->layer()->SetVisible(!features::IsSystemTrayUnifiedEnabled() ||
features::IsNotificationScrollBarEnabled());
}
bool MessageCenterScrollBar::OnKeyPressed(const ui::KeyEvent& event) {
if (!stats_recorded_ &&
(event.key_code() == ui::VKEY_UP || event.key_code() == ui::VKEY_DOWN)) {
CollectScrollActionReason(ScrollActionReason::kByMouseWheel);
stats_recorded_ = true;
}
return views::OverlayScrollBar::OnKeyPressed(event);
}
bool MessageCenterScrollBar::OnMouseWheel(const ui::MouseWheelEvent& event) {
if (!stats_recorded_) {
CollectScrollActionReason(ScrollActionReason::kByMouseWheel);
stats_recorded_ = true;
}
bool result = views::OverlayScrollBar::OnMouseWheel(event);
if (observer_)
observer_->OnMessageCenterScrolled();
return result;
}
void MessageCenterScrollBar::OnGestureEvent(ui::GestureEvent* event) {
if (!stats_recorded_ && (event->type() == ui::ET_GESTURE_SCROLL_BEGIN)) {
CollectScrollActionReason(ScrollActionReason::kByTouch);
stats_recorded_ = true;
}
views::OverlayScrollBar::OnGestureEvent(event);
if (observer_)
observer_->OnMessageCenterScrolled();
}
bool MessageCenterScrollBar::OnScroll(float dx, float dy) {
bool result = views::OverlayScrollBar::OnScroll(dx, dy);
if (observer_)
observer_->OnMessageCenterScrolled();
return result;
}
} // namespace ash