summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authorsidor@chromium.org <sidor@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-08 03:30:41 +0000
committersidor@chromium.org <sidor@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-08 03:30:41 +0000
commitbc7c5830c106536eed8cbbdaf330a91d467141ff (patch)
tree7cc343888e01673bebac31ace67a3f3a961bd09d /chrome/browser/chromeos
parent2148db9477774635644a6643d7b23fada6ab72fd (diff)
downloadchromium_src-bc7c5830c106536eed8cbbdaf330a91d467141ff.zip
chromium_src-bc7c5830c106536eed8cbbdaf330a91d467141ff.tar.gz
chromium_src-bc7c5830c106536eed8cbbdaf330a91d467141ff.tar.bz2
UI fix for idle API on ChromeOS.
BUG=chromium-os:17167 TEST=None. Review URL: http://codereview.chromium.org/7800018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100093 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/cros/mock_power_library.h2
-rw-r--r--chrome/browser/chromeos/cros/power_library.cc24
-rw-r--r--chrome/browser/chromeos/cros/power_library.h8
-rw-r--r--chrome/browser/chromeos/notifications/desktop_notifications_unittest.h4
4 files changed, 38 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/cros/mock_power_library.h b/chrome/browser/chromeos/cros/mock_power_library.h
index 044614b..762fa00 100644
--- a/chrome/browser/chromeos/cros/mock_power_library.h
+++ b/chrome/browser/chromeos/cros/mock_power_library.h
@@ -29,6 +29,8 @@ class MockPowerLibrary : public PowerLibrary {
MOCK_CONST_METHOD0(battery_time_to_empty, base::TimeDelta(void));
MOCK_CONST_METHOD0(battery_time_to_full, base::TimeDelta(void));
+ MOCK_METHOD1(CalculateIdleTime, void(CalculateIdleTimeCallback*));
+
MOCK_METHOD1(EnableScreenLock, void(bool));
MOCK_METHOD0(RequestRestart, void(void));
MOCK_METHOD0(RequestShutdown, void(void));
diff --git a/chrome/browser/chromeos/cros/power_library.cc b/chrome/browser/chromeos/cros/power_library.cc
index 721202b..070d377 100644
--- a/chrome/browser/chromeos/cros/power_library.cc
+++ b/chrome/browser/chromeos/cros/power_library.cc
@@ -78,6 +78,12 @@ class PowerLibraryImpl : public PowerLibrary {
return base::TimeDelta::FromSeconds(status_.battery_time_to_full);
}
+ virtual void CalculateIdleTime(CalculateIdleTimeCallback* callback) OVERRIDE {
+ // TODO(sidor): Examine if it's really a good idea to use void* as a second
+ // argument.
+ chromeos::GetIdleTime(&GetIdleTimeCallback, callback);
+ }
+
virtual void EnableScreenLock(bool enable) OVERRIDE {
if (!CrosLibrary::Get()->EnsureLoaded())
return;
@@ -106,6 +112,21 @@ class PowerLibraryImpl : public PowerLibrary {
// End PowerLibrary implementation.
private:
+ static void GetIdleTimeCallback(void* object,
+ int64_t time_idle_ms,
+ bool success) {
+ DCHECK(object);
+ CalculateIdleTimeCallback* notify =
+ static_cast<CalculateIdleTimeCallback*>(object);
+ if (success) {
+ notify->Run(time_idle_ms/1000);
+ } else {
+ LOG(ERROR) << "Power manager failed to calculate idle time.";
+ notify->Run(-1);
+ }
+ delete notify;
+ }
+
static void PowerStatusChangedHandler(void* object,
const chromeos::PowerStatus& status) {
PowerLibraryImpl* power = static_cast<PowerLibraryImpl*>(object);
@@ -220,6 +241,9 @@ class PowerLibraryStubImpl : public PowerLibrary {
return base::TimeDelta::FromHours(3) - battery_time_to_empty();
}
+ virtual void CalculateIdleTime(CalculateIdleTimeCallback* callback) OVERRIDE {
+ callback->Run(0);
+ }
virtual void EnableScreenLock(bool enable) OVERRIDE {}
virtual void RequestRestart() OVERRIDE {}
virtual void RequestShutdown() OVERRIDE {}
diff --git a/chrome/browser/chromeos/cros/power_library.h b/chrome/browser/chromeos/cros/power_library.h
index a32f8fc..5efa124 100644
--- a/chrome/browser/chromeos/cros/power_library.h
+++ b/chrome/browser/chromeos/cros/power_library.h
@@ -6,12 +6,16 @@
#define CHROME_BROWSER_CHROMEOS_CROS_POWER_LIBRARY_H_
#pragma once
+#include "base/callback.h"
+
namespace base {
class TimeDelta;
}
namespace chromeos {
+typedef base::Callback<void(int64_t)> CalculateIdleTimeCallback;
+
// This interface defines interaction with the ChromeOS power library APIs.
// Classes can add themselves as observers. Users can get an instance of this
// library class like this: chromeos::CrosLibrary::Get()->GetPowerLibrary()
@@ -51,6 +55,10 @@ class PowerLibrary {
// The amount of time until battery is full.
virtual base::TimeDelta battery_time_to_full() const = 0;
+ // Calculates idle time asynchronously. If it encounters some error,
+ // it returns -1.
+ virtual void CalculateIdleTime(CalculateIdleTimeCallback* callback) = 0;
+
// Enable/disable screen lock for current session.
virtual void EnableScreenLock(bool enable) = 0;
diff --git a/chrome/browser/chromeos/notifications/desktop_notifications_unittest.h b/chrome/browser/chromeos/notifications/desktop_notifications_unittest.h
index 18137b9..ab8cc1d 100644
--- a/chrome/browser/chromeos/notifications/desktop_notifications_unittest.h
+++ b/chrome/browser/chromeos/notifications/desktop_notifications_unittest.h
@@ -11,6 +11,7 @@
#include "base/message_loop.h"
#include "base/string_util.h"
+#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/notifications/balloon_collection_impl.h"
#include "chrome/browser/notifications/balloon.h"
#include "chrome/browser/notifications/desktop_notification_service.h"
@@ -109,6 +110,9 @@ class DesktopNotificationsTest : public testing::Test {
// Contains the cumulative output of the unit test.
static std::string log_output_;
+
+ // Initializes / shuts down a stub CrosLibrary.
+ chromeos::ScopedStubCrosEnabler stub_cros_enabler_;
};
} // namespace chromeos