Commit c44cb64d authored by pkotwicz's avatar pkotwicz Committed by Commit bot

Make UserActivityDetector a singleton

BUG=426561,408752
TEST=None

Review URL: https://codereview.chromium.org/693643004

Cr-Commit-Position: refs/heads/master@{#302734}
parent 8747d18f
...@@ -267,7 +267,7 @@ void DisplayChangeObserver::OnDisplayModeChanged( ...@@ -267,7 +267,7 @@ void DisplayChangeObserver::OnDisplayModeChanged(
// For the purposes of user activity detection, ignore synthetic mouse events // For the purposes of user activity detection, ignore synthetic mouse events
// that are triggered by screen resizes: http://crbug.com/360634 // that are triggered by screen resizes: http://crbug.com/360634
::wm::UserActivityDetector* user_activity_detector = ::wm::UserActivityDetector* user_activity_detector =
Shell::GetInstance()->user_activity_detector(); ::wm::UserActivityDetector::Get();
if (user_activity_detector) if (user_activity_detector)
user_activity_detector->OnDisplayPowerChanging(); user_activity_detector->OnDisplayPowerChanging();
} }
......
...@@ -368,9 +368,6 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate, ...@@ -368,9 +368,6 @@ class ASH_EXPORT Shell : public SystemModalContainerEventFilterDelegate,
MruWindowTracker* mru_window_tracker() { MruWindowTracker* mru_window_tracker() {
return mru_window_tracker_.get(); return mru_window_tracker_.get();
} }
::wm::UserActivityDetector* user_activity_detector() {
return user_activity_detector_.get();
}
VideoDetector* video_detector() { VideoDetector* video_detector() {
return video_detector_.get(); return video_detector_.get();
} }
......
...@@ -50,7 +50,7 @@ void PowerEventObserver::SuspendImminent() { ...@@ -50,7 +50,7 @@ void PowerEventObserver::SuspendImminent() {
RequestLockScreen(); RequestLockScreen();
} }
shell->user_activity_detector()->OnDisplayPowerChanging(); wm::UserActivityDetector::Get()->OnDisplayPowerChanging();
shell->display_configurator()->SuspendDisplays(); shell->display_configurator()->SuspendDisplays();
} }
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h" #include "chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h"
#include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/logging.h" #include "base/logging.h"
...@@ -57,9 +56,10 @@ KioskModeIdleAppNameNotification::KioskModeIdleAppNameNotification() ...@@ -57,9 +56,10 @@ KioskModeIdleAppNameNotification::KioskModeIdleAppNameNotification()
} }
KioskModeIdleAppNameNotification::~KioskModeIdleAppNameNotification() { KioskModeIdleAppNameNotification::~KioskModeIdleAppNameNotification() {
if (ash::Shell::HasInstance() && wm::UserActivityDetector* user_activity_detector =
ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) { wm::UserActivityDetector::Get();
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); if (user_activity_detector && user_activity_detector->HasObserver(this)) {
user_activity_detector->RemoveObserver(this);
// At this time the DBusThreadManager might already be gone. // At this time the DBusThreadManager might already be gone.
if (chromeos::DBusThreadManager::IsInitialized()) if (chromeos::DBusThreadManager::IsInitialized())
chromeos::DBusThreadManager::Get()->GetPowerManagerClient( chromeos::DBusThreadManager::Get()->GetPowerManagerClient(
...@@ -98,8 +98,8 @@ void KioskModeIdleAppNameNotification::SuspendDone( ...@@ -98,8 +98,8 @@ void KioskModeIdleAppNameNotification::SuspendDone(
} }
void KioskModeIdleAppNameNotification::Start() { void KioskModeIdleAppNameNotification::Start() {
if (!ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) { if (!wm::UserActivityDetector::Get()->HasObserver(this)) {
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); wm::UserActivityDetector::Get()->AddObserver(this);
chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver( chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(
this); this);
} }
......
...@@ -57,8 +57,7 @@ void DisplayPowerServiceProvider::SetDisplayPower( ...@@ -57,8 +57,7 @@ void DisplayPowerServiceProvider::SetDisplayPower(
// we suspend may trigger a mouse move, which would then be incorrectly // we suspend may trigger a mouse move, which would then be incorrectly
// reported as user activity. Let the UserActivityDetector // reported as user activity. Let the UserActivityDetector
// know so that it can ignore such events. // know so that it can ignore such events.
ash::Shell::GetInstance()->user_activity_detector()-> wm::UserActivityDetector::Get()->OnDisplayPowerChanging();
OnDisplayPowerChanging();
DisplayPowerState state = static_cast<DisplayPowerState>(int_state); DisplayPowerState state = static_cast<DisplayPowerState>(int_state);
ash::Shell::GetInstance()->display_configurator()->SetDisplayPower( ash::Shell::GetInstance()->display_configurator()->SetDisplayPower(
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/chromeos/idle_detector.h" #include "chrome/browser/chromeos/idle_detector.h"
#include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/logging.h" #include "base/logging.h"
#include "ui/wm/core/user_activity_detector.h" #include "ui/wm/core/user_activity_detector.h"
...@@ -16,9 +15,10 @@ IdleDetector::IdleDetector(const base::Closure& on_active_callback, ...@@ -16,9 +15,10 @@ IdleDetector::IdleDetector(const base::Closure& on_active_callback,
: active_callback_(on_active_callback), idle_callback_(on_idle_callback) {} : active_callback_(on_active_callback), idle_callback_(on_idle_callback) {}
IdleDetector::~IdleDetector() { IdleDetector::~IdleDetector() {
if (ash::Shell::HasInstance() && wm::UserActivityDetector* user_activity_detector =
ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) wm::UserActivityDetector::Get();
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); if (user_activity_detector && user_activity_detector->HasObserver(this))
user_activity_detector->RemoveObserver(this);
} }
void IdleDetector::OnUserActivity(const ui::Event* event) { void IdleDetector::OnUserActivity(const ui::Event* event) {
...@@ -29,8 +29,8 @@ void IdleDetector::OnUserActivity(const ui::Event* event) { ...@@ -29,8 +29,8 @@ void IdleDetector::OnUserActivity(const ui::Event* event) {
void IdleDetector::Start(const base::TimeDelta& timeout) { void IdleDetector::Start(const base::TimeDelta& timeout) {
timeout_ = timeout; timeout_ = timeout;
if (!ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) if (!wm::UserActivityDetector::Get()->HasObserver(this))
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); wm::UserActivityDetector::Get()->AddObserver(this);
ResetTimer(); ResetTimer();
} }
......
...@@ -42,9 +42,10 @@ KioskModeIdleLogout::KioskModeIdleLogout() { ...@@ -42,9 +42,10 @@ KioskModeIdleLogout::KioskModeIdleLogout() {
} }
KioskModeIdleLogout::~KioskModeIdleLogout() { KioskModeIdleLogout::~KioskModeIdleLogout() {
if (ash::Shell::HasInstance() && wm::UserActivityDetector* user_activity_detector =
ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) wm::UserActivityDetector::Get();
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); if (user_activity_detector && user_activity_detector->HasObserver(this))
user_activity_detector->RemoveObserver(this);
} }
void KioskModeIdleLogout::Setup() { void KioskModeIdleLogout::Setup() {
...@@ -74,8 +75,8 @@ void KioskModeIdleLogout::OnUserActivity(const ui::Event* event) { ...@@ -74,8 +75,8 @@ void KioskModeIdleLogout::OnUserActivity(const ui::Event* event) {
} }
void KioskModeIdleLogout::Start() { void KioskModeIdleLogout::Start() {
if (!ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) if (!wm::UserActivityDetector::Get()->HasObserver(this))
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); wm::UserActivityDetector::Get()->AddObserver(this);
ResetTimer(); ResetTimer();
} }
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_idle_logout.h" #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_idle_logout.h"
#include "ash/shell.h"
#include "ash/test/ash_test_base.h" #include "ash/test/ash_test_base.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
...@@ -44,8 +43,7 @@ class KioskModeIdleLogoutTest : public ash::test::AshTestBase { ...@@ -44,8 +43,7 @@ class KioskModeIdleLogoutTest : public ash::test::AshTestBase {
} }
bool UserActivityObserverRegistered() { bool UserActivityObserverRegistered() {
return ash::Shell::GetInstance()->user_activity_detector()->HasObserver( return wm::UserActivityDetector::Get()->HasObserver(idle_logout_);
idle_logout_);
} }
ScopedDeviceSettingsTestHelper device_settings_test_helper_; ScopedDeviceSettingsTestHelper device_settings_test_helper_;
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h" #include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_screensaver.h"
#include "ash/screensaver/screensaver_view.h" #include "ash/screensaver/screensaver_view.h"
#include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
...@@ -199,10 +198,10 @@ KioskModeScreensaver::~KioskModeScreensaver() { ...@@ -199,10 +198,10 @@ KioskModeScreensaver::~KioskModeScreensaver() {
// In case we're shutting down without ever triggering the active // In case we're shutting down without ever triggering the active
// notification and/or logging in. // notification and/or logging in.
if (ash::Shell::GetInstance() && wm::UserActivityDetector* user_activity_detector =
ash::Shell::GetInstance()->user_activity_detector() && wm::UserActivityDetector::Get();
ash::Shell::GetInstance()->user_activity_detector()->HasObserver(this)) if (user_activity_detector && user_activity_detector->HasObserver(this))
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); user_activity_detector->RemoveObserver(this);
} }
void KioskModeScreensaver::GetScreensaverCrxPath() { void KioskModeScreensaver::GetScreensaverCrxPath() {
...@@ -252,7 +251,7 @@ void KioskModeScreensaver::SetupScreensaver( ...@@ -252,7 +251,7 @@ void KioskModeScreensaver::SetupScreensaver(
if (chromeos::LoginState::Get()->IsUserLoggedIn()) if (chromeos::LoginState::Get()->IsUserLoggedIn())
return; return;
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); wm::UserActivityDetector::Get()->AddObserver(this);
ExtensionService* extension_service = GetDefaultExtensionService(); ExtensionService* extension_service = GetDefaultExtensionService();
// Add the extension to the extension service and display the screensaver. // Add the extension to the extension service and display the screensaver.
...@@ -269,7 +268,7 @@ void KioskModeScreensaver::SetupScreensaver( ...@@ -269,7 +268,7 @@ void KioskModeScreensaver::SetupScreensaver(
void KioskModeScreensaver::OnUserActivity(const ui::Event* event) { void KioskModeScreensaver::OnUserActivity(const ui::Event* event) {
// We don't want to handle further user notifications; we'll either login // We don't want to handle further user notifications; we'll either login
// the user and close out or or at least close the screensaver. // the user and close out or or at least close the screensaver.
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); wm::UserActivityDetector::Get()->RemoveObserver(this);
// Find the retail mode login page. // Find the retail mode login page.
if (LoginDisplayHostImpl::default_host()) { if (LoginDisplayHostImpl::default_host()) {
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/chromeos/login/screens/user_selection_screen.h" #include "chrome/browser/chromeos/login/screens/user_selection_screen.h"
#include "ash/shell.h"
#include "base/location.h" #include "base/location.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/prefs/pref_service.h" #include "base/prefs/pref_service.h"
...@@ -106,13 +105,9 @@ UserSelectionScreen::UserSelectionScreen() : handler_(NULL) { ...@@ -106,13 +105,9 @@ UserSelectionScreen::UserSelectionScreen() : handler_(NULL) {
} }
UserSelectionScreen::~UserSelectionScreen() { UserSelectionScreen::~UserSelectionScreen() {
#if !defined(USE_ATHENA) wm::UserActivityDetector* activity_detector = wm::UserActivityDetector::Get();
// TODO(dpolukhin): crbug.com/408752
wm::UserActivityDetector* activity_detector =
ash::Shell::GetInstance()->user_activity_detector();
if (activity_detector->HasObserver(this)) if (activity_detector->HasObserver(this))
activity_detector->RemoveObserver(this); activity_detector->RemoveObserver(this);
#endif
} }
// static // static
...@@ -210,13 +205,9 @@ void UserSelectionScreen::Init(const user_manager::UserList& users, ...@@ -210,13 +205,9 @@ void UserSelectionScreen::Init(const user_manager::UserList& users,
users_ = users; users_ = users;
show_guest_ = show_guest; show_guest_ = show_guest;
#if !defined(USE_ATHENA) wm::UserActivityDetector* activity_detector = wm::UserActivityDetector::Get();
// TODO(dpolukhin): crbug.com/408752
wm::UserActivityDetector* activity_detector =
ash::Shell::GetInstance()->user_activity_detector();
if (!activity_detector->HasObserver(this)) if (!activity_detector->HasObserver(this))
activity_detector->AddObserver(this); activity_detector->AddObserver(this);
#endif
} }
void UserSelectionScreen::OnBeforeUserRemoved(const std::string& username) { void UserSelectionScreen::OnBeforeUserRemoved(const std::string& username) {
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/chromeos/login/ui/webui_login_display.h" #include "chrome/browser/chromeos/login/ui/webui_login_display.h"
#include "ash/shell.h"
#include "chrome/browser/chromeos/accessibility/accessibility_manager.h" #include "chrome/browser/chromeos/accessibility/accessibility_manager.h"
#include "chrome/browser/chromeos/login/lock/screen_locker.h" #include "chrome/browser/chromeos/login/lock/screen_locker.h"
#include "chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h" #include "chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h"
...@@ -35,12 +34,9 @@ namespace chromeos { ...@@ -35,12 +34,9 @@ namespace chromeos {
WebUILoginDisplay::~WebUILoginDisplay() { WebUILoginDisplay::~WebUILoginDisplay() {
if (webui_handler_) if (webui_handler_)
webui_handler_->ResetSigninScreenHandlerDelegate(); webui_handler_->ResetSigninScreenHandlerDelegate();
#if !defined(USE_ATHENA) wm::UserActivityDetector* activity_detector = wm::UserActivityDetector::Get();
wm::UserActivityDetector* activity_detector = ash::Shell::GetInstance()->
user_activity_detector();
if (activity_detector->HasObserver(this)) if (activity_detector->HasObserver(this))
activity_detector->RemoveObserver(this); activity_detector->RemoveObserver(this);
#endif
} }
// LoginDisplay implementation: ------------------------------------------------ // LoginDisplay implementation: ------------------------------------------------
...@@ -71,12 +67,9 @@ void WebUILoginDisplay::Init(const user_manager::UserList& users, ...@@ -71,12 +67,9 @@ void WebUILoginDisplay::Init(const user_manager::UserList& users,
show_users_ = show_users; show_users_ = show_users;
show_new_user_ = show_new_user; show_new_user_ = show_new_user;
#if !defined(USE_ATHENA) wm::UserActivityDetector* activity_detector = wm::UserActivityDetector::Get();
wm::UserActivityDetector* activity_detector = ash::Shell::GetInstance()->
user_activity_detector();
if (!activity_detector->HasObserver(this)) if (!activity_detector->HasObserver(this))
activity_detector->AddObserver(this); activity_detector->AddObserver(this);
#endif
} }
// ---- Common methods // ---- Common methods
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/chromeos/policy/recommendation_restorer.h" #include "chrome/browser/chromeos/policy/recommendation_restorer.h"
#include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/location.h" #include "base/location.h"
...@@ -107,11 +106,14 @@ void RecommendationRestorer::Restore(bool allow_delay, ...@@ -107,11 +106,14 @@ void RecommendationRestorer::Restore(bool allow_delay,
if (logged_in_) { if (logged_in_) {
allow_delay = false; allow_delay = false;
} else if (allow_delay && ash::Shell::HasInstance()) { } else if (allow_delay) {
// Skip the delay if there has been no user input since the browser started. // Skip the delay if there has been no user input since the browser started.
const wm::UserActivityDetector* user_activity_detector = const wm::UserActivityDetector* user_activity_detector =
ash::Shell::GetInstance()->user_activity_detector(); wm::UserActivityDetector::Get();
allow_delay = !user_activity_detector->last_activity_time().is_null(); if (user_activity_detector &&
user_activity_detector->last_activity_time().is_null()) {
allow_delay = false;
}
} }
if (allow_delay) if (allow_delay)
...@@ -133,12 +135,10 @@ void RecommendationRestorer::StartTimer() { ...@@ -133,12 +135,10 @@ void RecommendationRestorer::StartTimer() {
// Listen for user activity so that the timer can be reset while the user is // Listen for user activity so that the timer can be reset while the user is
// active, causing it to fire only when the user remains idle for // active, causing it to fire only when the user remains idle for
// |kRestoreDelayInMs|. // |kRestoreDelayInMs|.
if (ash::Shell::HasInstance()) { wm::UserActivityDetector* user_activity_detector =
wm::UserActivityDetector* user_activity_detector = wm::UserActivityDetector::Get();
ash::Shell::GetInstance()->user_activity_detector(); if (user_activity_detector && !user_activity_detector->HasObserver(this))
if (!user_activity_detector->HasObserver(this)) user_activity_detector->AddObserver(this);
user_activity_detector->AddObserver(this);
}
// There should be a separate timer for each pref. However, in the common // There should be a separate timer for each pref. However, in the common
// case of the user changing settings, a single timer is sufficient. This is // case of the user changing settings, a single timer is sufficient. This is
...@@ -156,8 +156,8 @@ void RecommendationRestorer::StartTimer() { ...@@ -156,8 +156,8 @@ void RecommendationRestorer::StartTimer() {
void RecommendationRestorer::StopTimer() { void RecommendationRestorer::StopTimer() {
restore_timer_.Stop(); restore_timer_.Stop();
if (ash::Shell::HasInstance()) if (wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); wm::UserActivityDetector::Get()->RemoveObserver(this);
} }
} // namespace policy } // namespace policy
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#include <algorithm> #include <algorithm>
#include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/location.h" #include "base/location.h"
...@@ -98,20 +97,20 @@ SessionLengthLimiter::SessionLengthLimiter(Delegate* delegate, ...@@ -98,20 +97,20 @@ SessionLengthLimiter::SessionLengthLimiter(Delegate* delegate,
UpdateSessionStartTime(); UpdateSessionStartTime();
} }
if (!user_activity_seen_ && ash::Shell::HasInstance()) if (!user_activity_seen_ && wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); wm::UserActivityDetector::Get()->AddObserver(this);
} }
SessionLengthLimiter::~SessionLengthLimiter() { SessionLengthLimiter::~SessionLengthLimiter() {
if (!user_activity_seen_ && ash::Shell::HasInstance()) if (!user_activity_seen_ && wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); wm::UserActivityDetector::Get()->RemoveObserver(this);
} }
void SessionLengthLimiter::OnUserActivity(const ui::Event* event) { void SessionLengthLimiter::OnUserActivity(const ui::Event* event) {
if (user_activity_seen_) if (user_activity_seen_)
return; return;
if (ash::Shell::HasInstance()) if (wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); wm::UserActivityDetector::Get()->RemoveObserver(this);
user_activity_seen_ = true; user_activity_seen_ = true;
PrefService* local_state = g_browser_process->local_state(); PrefService* local_state = g_browser_process->local_state();
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include <algorithm> #include <algorithm>
#include <string> #include <string>
#include "ash/shell.h"
#include "base/bind.h" #include "base/bind.h"
#include "base/bind_helpers.h" #include "base/bind_helpers.h"
#include "base/callback.h" #include "base/callback.h"
...@@ -172,8 +171,8 @@ AutomaticRebootManager::AutomaticRebootManager( ...@@ -172,8 +171,8 @@ AutomaticRebootManager::AutomaticRebootManager(
// idle. Start listening for user activity to determine whether the user is // idle. Start listening for user activity to determine whether the user is
// idle or not. // idle or not.
if (!user_manager::UserManager::Get()->IsUserLoggedIn()) { if (!user_manager::UserManager::Get()->IsUserLoggedIn()) {
if (ash::Shell::HasInstance()) if (wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->AddObserver(this); wm::UserActivityDetector::Get()->AddObserver(this);
notification_registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED, notification_registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_CHANGED,
content::NotificationService::AllSources()); content::NotificationService::AllSources());
login_screen_idle_timer_.reset( login_screen_idle_timer_.reset(
...@@ -202,8 +201,8 @@ AutomaticRebootManager::~AutomaticRebootManager() { ...@@ -202,8 +201,8 @@ AutomaticRebootManager::~AutomaticRebootManager() {
DBusThreadManager* dbus_thread_manager = DBusThreadManager::Get(); DBusThreadManager* dbus_thread_manager = DBusThreadManager::Get();
dbus_thread_manager->GetPowerManagerClient()->RemoveObserver(this); dbus_thread_manager->GetPowerManagerClient()->RemoveObserver(this);
dbus_thread_manager->GetUpdateEngineClient()->RemoveObserver(this); dbus_thread_manager->GetUpdateEngineClient()->RemoveObserver(this);
if (ash::Shell::HasInstance()) if (wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); wm::UserActivityDetector::Get()->RemoveObserver(this);
} }
void AutomaticRebootManager::AddObserver( void AutomaticRebootManager::AddObserver(
...@@ -270,8 +269,8 @@ void AutomaticRebootManager::Observe( ...@@ -270,8 +269,8 @@ void AutomaticRebootManager::Observe(
} else if (type == chrome::NOTIFICATION_LOGIN_USER_CHANGED) { } else if (type == chrome::NOTIFICATION_LOGIN_USER_CHANGED) {
// A session is starting. Stop listening for user activity as it no longer // A session is starting. Stop listening for user activity as it no longer
// is a relevant criterion. // is a relevant criterion.
if (ash::Shell::HasInstance()) if (wm::UserActivityDetector::Get())
ash::Shell::GetInstance()->user_activity_detector()->RemoveObserver(this); wm::UserActivityDetector::Get()->RemoveObserver(this);
notification_registrar_.Remove( notification_registrar_.Remove(
this, chrome::NOTIFICATION_LOGIN_USER_CHANGED, this, chrome::NOTIFICATION_LOGIN_USER_CHANGED,
content::NotificationService::AllSources()); content::NotificationService::AllSources());
......
...@@ -10,14 +10,8 @@ ...@@ -10,14 +10,8 @@
#include "ui/wm/core/user_activity_detector.h" #include "ui/wm/core/user_activity_detector.h"
void CalculateIdleTime(IdleTimeCallback notify) { void CalculateIdleTime(IdleTimeCallback notify) {
#if defined(USE_ATHENA)
// TODO(oshima): Implement this for athena. crbug.com/408752
base::TimeDelta idle_time;
NOTIMPLEMENTED();
#else
base::TimeDelta idle_time = base::TimeTicks::Now() - base::TimeDelta idle_time = base::TimeTicks::Now() -
ash::Shell::GetInstance()->user_activity_detector()->last_activity_time(); wm::UserActivityDetector::Get()->last_activity_time();
#endif
notify.Run(static_cast<int>(idle_time.InSeconds())); notify.Run(static_cast<int>(idle_time.InSeconds()));
} }
......
...@@ -14,6 +14,8 @@ namespace wm { ...@@ -14,6 +14,8 @@ namespace wm {
namespace { namespace {
UserActivityDetector* g_instance = nullptr;
// Returns a string describing |event|. // Returns a string describing |event|.
std::string GetEventDebugString(const ui::Event* event) { std::string GetEventDebugString(const ui::Event* event) {
std::string details = base::StringPrintf( std::string details = base::StringPrintf(
...@@ -44,9 +46,17 @@ const int UserActivityDetector::kNotifyIntervalMs = 200; ...@@ -44,9 +46,17 @@ const int UserActivityDetector::kNotifyIntervalMs = 200;
const int UserActivityDetector::kDisplayPowerChangeIgnoreMouseMs = 1000; const int UserActivityDetector::kDisplayPowerChangeIgnoreMouseMs = 1000;
UserActivityDetector::UserActivityDetector() { UserActivityDetector::UserActivityDetector() {
CHECK(!g_instance);
g_instance = this;
} }
UserActivityDetector::~UserActivityDetector() { UserActivityDetector::~UserActivityDetector() {
g_instance = nullptr;
}
// static
UserActivityDetector* UserActivityDetector::Get() {
return g_instance;
} }
bool UserActivityDetector::HasObserver(UserActivityObserver* observer) const { bool UserActivityDetector::HasObserver(UserActivityObserver* observer) const {
......
...@@ -29,6 +29,9 @@ class WM_EXPORT UserActivityDetector : public ui::EventHandler { ...@@ -29,6 +29,9 @@ class WM_EXPORT UserActivityDetector : public ui::EventHandler {
UserActivityDetector(); UserActivityDetector();
~UserActivityDetector() override; ~UserActivityDetector() override;
// Returns the UserActivityDetector instance if one was created.
static UserActivityDetector* Get();
base::TimeTicks last_activity_time() const { return last_activity_time_; } base::TimeTicks last_activity_time() const { return last_activity_time_; }
void set_now_for_test(base::TimeTicks now) { now_for_test_ = now; } void set_now_for_test(base::TimeTicks now) { now_for_test_ = now; }
......
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