1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/chromeos/user_activity_notifier.h"
7 #include "chromeos/dbus/dbus_thread_manager.h"
8 #include "chromeos/dbus/power_manager_client.h"
9 #include "ui/events/event.h"
10 #include "ui/events/event_constants.h"
11 #include "ui/events/keycodes/keyboard_codes_posix.h"
12 #include "ui/wm/core/user_activity_detector.h"
17 // Minimum number of seconds between notifications.
18 const int kNotifyIntervalSec
= 5;
20 // Returns a UserActivityType describing |event|.
21 power_manager::UserActivityType
GetUserActivityTypeForEvent(
23 if (!event
|| event
->type() != ET_KEY_PRESSED
)
24 return power_manager::USER_ACTIVITY_OTHER
;
26 switch (static_cast<const KeyEvent
*>(event
)->key_code()) {
27 case VKEY_BRIGHTNESS_DOWN
:
28 return power_manager::USER_ACTIVITY_BRIGHTNESS_DOWN_KEY_PRESS
;
29 case VKEY_BRIGHTNESS_UP
:
30 return power_manager::USER_ACTIVITY_BRIGHTNESS_UP_KEY_PRESS
;
31 case VKEY_VOLUME_DOWN
:
32 return power_manager::USER_ACTIVITY_VOLUME_DOWN_KEY_PRESS
;
33 case VKEY_VOLUME_MUTE
:
34 return power_manager::USER_ACTIVITY_VOLUME_MUTE_KEY_PRESS
;
36 return power_manager::USER_ACTIVITY_VOLUME_UP_KEY_PRESS
;
38 return power_manager::USER_ACTIVITY_OTHER
;
44 UserActivityNotifier::UserActivityNotifier(::wm::UserActivityDetector
* detector
)
45 : detector_(detector
) {
46 detector_
->AddObserver(this);
49 UserActivityNotifier::~UserActivityNotifier() {
50 detector_
->RemoveObserver(this);
53 void UserActivityNotifier::OnUserActivity(const Event
* event
) {
54 base::TimeTicks now
= base::TimeTicks::Now();
55 // InSeconds() truncates rather than rounding, so it's fine for this
57 if (last_notify_time_
.is_null() ||
58 (now
- last_notify_time_
).InSeconds() >= kNotifyIntervalSec
) {
59 chromeos::DBusThreadManager::Get()->GetPowerManagerClient()->
60 NotifyUserActivity(GetUserActivityTypeForEvent(event
));
61 last_notify_time_
= now
;