Index: components/mus/ws/user_activity_monitor.cc |
diff --git a/components/mus/ws/user_activity_monitor.cc b/components/mus/ws/user_activity_monitor.cc |
deleted file mode 100644 |
index 3cd66419a27456442c3604193ea93759eddad86b..0000000000000000000000000000000000000000 |
--- a/components/mus/ws/user_activity_monitor.cc |
+++ /dev/null |
@@ -1,134 +0,0 @@ |
-// Copyright 2016 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 "components/mus/ws/user_activity_monitor.h" |
- |
-#include "base/bind.h" |
-#include "base/time/default_tick_clock.h" |
- |
-namespace mus { |
-namespace ws { |
- |
-UserActivityMonitor::UserActivityMonitor(std::unique_ptr<base::TickClock> clock) |
- : now_clock_(std::move(clock)) { |
- if (!now_clock_) |
- now_clock_ = base::WrapUnique(new base::DefaultTickClock); |
- last_activity_ = now_clock_->NowTicks(); |
-} |
- |
-UserActivityMonitor::~UserActivityMonitor() {} |
- |
-void UserActivityMonitor::OnUserActivity() { |
- base::TimeTicks now = now_clock_->NowTicks(); |
- for (auto& pair : activity_observers_) { |
- ActivityObserverInfo* info = &(pair.first); |
- if (info->last_activity_notification.is_null() || |
- (now - info->last_activity_notification) > info->delay) { |
- pair.second->OnUserActivity(); |
- info->last_activity_notification = now; |
- } |
- } |
- |
- // Wake up all the 'idle' observers. |
- for (auto& pair : idle_observers_) { |
- IdleObserverInfo* info = &(pair.first); |
- if (info->idle_state == mojom::UserIdleObserver::IdleState::ACTIVE) |
- continue; |
- info->last_idle_state_notification = now; |
- info->idle_state = mojom::UserIdleObserver::IdleState::ACTIVE; |
- pair.second->OnUserIdleStateChanged(info->idle_state); |
- } |
- |
- last_activity_ = now; |
- |
- // Start the timer if there are some idle observers. |
- if (idle_timer_.IsRunning()) |
- idle_timer_.Reset(); |
-} |
- |
-void UserActivityMonitor::Add(mojom::UserActivityMonitorRequest request) { |
- bindings_.AddBinding(this, std::move(request)); |
-} |
- |
-void UserActivityMonitor::AddUserActivityObserver( |
- uint32_t delay_between_notify_secs, |
- mojom::UserActivityObserverPtr observer) { |
- ActivityObserverInfo info; |
- info.delay = base::TimeDelta::FromSeconds(delay_between_notify_secs); |
- observer.set_connection_error_handler( |
- base::Bind(&UserActivityMonitor::OnActivityObserverDisconnected, |
- base::Unretained(this), observer.get())); |
- activity_observers_.push_back(std::make_pair(info, std::move(observer))); |
-} |
- |
-void UserActivityMonitor::AddUserIdleObserver( |
- uint32_t idleness_in_minutes, |
- mojom::UserIdleObserverPtr observer) { |
- IdleObserverInfo info; |
- info.idle_duration = base::TimeDelta::FromMinutes(idleness_in_minutes); |
- base::TimeTicks now = now_clock_->NowTicks(); |
- DCHECK(!last_activity_.is_null()); |
- bool user_is_active = (now - last_activity_ < info.idle_duration); |
- info.idle_state = user_is_active ? mojom::UserIdleObserver::IdleState::ACTIVE |
- : mojom::UserIdleObserver::IdleState::IDLE; |
- info.last_idle_state_notification = now; |
- observer->OnUserIdleStateChanged(info.idle_state); |
- observer.set_connection_error_handler( |
- base::Bind(&UserActivityMonitor::OnIdleObserverDisconnected, |
- base::Unretained(this), observer.get())); |
- idle_observers_.push_back(std::make_pair(info, std::move(observer))); |
- if (user_is_active) |
- ActivateIdleTimer(); |
-} |
- |
-void UserActivityMonitor::ActivateIdleTimer() { |
- if (idle_timer_.IsRunning()) |
- return; |
- idle_timer_.Start(FROM_HERE, base::TimeDelta::FromMinutes(1), this, |
- &UserActivityMonitor::OnMinuteTimer); |
-} |
- |
-void UserActivityMonitor::OnMinuteTimer() { |
- base::TimeTicks now = now_clock_->NowTicks(); |
- bool active_observer = false; |
- for (auto& pair : idle_observers_) { |
- IdleObserverInfo* info = &(pair.first); |
- if (info->idle_state == mojom::UserIdleObserver::IdleState::IDLE) |
- continue; |
- if (now - info->last_idle_state_notification < info->idle_duration) { |
- active_observer = true; |
- continue; |
- } |
- info->last_idle_state_notification = now; |
- info->idle_state = mojom::UserIdleObserver::IdleState::IDLE; |
- pair.second->OnUserIdleStateChanged(info->idle_state); |
- } |
- // All observers are already notified of IDLE. No point running the timer |
- // anymore. |
- if (!active_observer) |
- idle_timer_.Stop(); |
-} |
- |
-void UserActivityMonitor::OnActivityObserverDisconnected( |
- mojom::UserActivityObserver* observer) { |
- activity_observers_.erase(std::remove_if( |
- activity_observers_.begin(), activity_observers_.end(), |
- [observer](const std::pair<ActivityObserverInfo, |
- mojom::UserActivityObserverPtr>& pair) { |
- return pair.second.get() == observer; |
- })); |
-} |
- |
-void UserActivityMonitor::OnIdleObserverDisconnected( |
- mojom::UserIdleObserver* observer) { |
- idle_observers_.erase(std::remove_if( |
- idle_observers_.begin(), idle_observers_.end(), |
- [observer]( |
- const std::pair<IdleObserverInfo, mojom::UserIdleObserverPtr>& pair) { |
- return pair.second.get() == observer; |
- })); |
-} |
- |
-} // namespace ws |
-} // namespace mus |