diff options
author | sidor@chromium.org <sidor@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-08 03:30:41 +0000 |
---|---|---|
committer | sidor@chromium.org <sidor@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-08 03:30:41 +0000 |
commit | bc7c5830c106536eed8cbbdaf330a91d467141ff (patch) | |
tree | 7cc343888e01673bebac31ace67a3f3a961bd09d /chrome/browser/chromeos | |
parent | 2148db9477774635644a6643d7b23fada6ab72fd (diff) | |
download | chromium_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')
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 |