summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-21 20:48:00 +0000
committerderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-21 20:48:00 +0000
commita0d7f587f9a7a661b157860638e84eb5a2be358f (patch)
tree9e7eb2dcfb11c45b6499022f95767422eb147df9
parent6361ae888c8a9f3f86c0c7a0d92631d04c1ea0a0 (diff)
downloadchromium_src-a0d7f587f9a7a661b157860638e84eb5a2be358f.zip
chromium_src-a0d7f587f9a7a661b157860638e84eb5a2be358f.tar.gz
chromium_src-a0d7f587f9a7a661b157860638e84eb5a2be358f.tar.bz2
chromeos: Update IdleActionImminent and SuspendDone handling
IdleActionImminent signals sent by powerd now include the remaining time until the idle action will be performed; make PowerManagerClient decode it and pass it to observers. Also update PowerManagerClient to listen for SuspendDone signals rather than SuspendStateChanged; the latter is confusing and will be removed soon. Updates the system_api dependency to a9acc4df. BUG=287787,359619 TBR=stevenjb@chromium.org Review URL: https://codereview.chromium.org/240343004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@265058 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ash/system/chromeos/power/power_event_observer.cc2
-rw-r--r--ash/system/chromeos/power/power_event_observer.h2
-rw-r--r--ash/system/chromeos/power/power_event_observer_unittest.cc4
-rw-r--r--chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.cc2
-rw-r--r--chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h2
-rw-r--r--chrome/browser/chromeos/extensions/extension_system_event_observer.cc2
-rw-r--r--chrome/browser/chromeos/extensions/extension_system_event_observer.h2
-rw-r--r--chrome/browser/chromeos/file_manager/mounted_disk_monitor.cc4
-rw-r--r--chrome/browser/chromeos/file_manager/mounted_disk_monitor.h2
-rw-r--r--chrome/browser/chromeos/file_manager/mounted_disk_monitor_unittest.cc2
-rw-r--r--chrome/browser/chromeos/file_manager/volume_manager_unittest.cc7
-rw-r--r--chrome/browser/chromeos/login/webui_screen_locker.cc2
-rw-r--r--chrome/browser/chromeos/login/webui_screen_locker.h2
-rw-r--r--chrome/browser/chromeos/power/idle_action_warning_observer.cc3
-rw-r--r--chrome/browser/chromeos/power/idle_action_warning_observer.h3
-rw-r--r--chrome/browser/chromeos/power/power_data_collector.cc2
-rw-r--r--chrome/browser/chromeos/power/power_data_collector.h2
-rw-r--r--chrome/browser/chromeos/power/power_data_collector_unittest.cc6
-rw-r--r--chrome/browser/chromeos/system/automatic_reboot_manager.cc2
-rw-r--r--chrome/browser/chromeos/system/automatic_reboot_manager.h2
-rw-r--r--chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc2
-rw-r--r--chromeos/dbus/fake_power_manager_client.cc15
-rw-r--r--chromeos/dbus/fake_power_manager_client.h13
-rw-r--r--chromeos/dbus/power_manager_client.cc84
-rw-r--r--chromeos/dbus/power_manager_client.h14
-rw-r--r--chromeos/network/network_change_notifier_chromeos.cc2
-rw-r--r--chromeos/network/network_change_notifier_chromeos.h2
27 files changed, 86 insertions, 101 deletions
diff --git a/ash/system/chromeos/power/power_event_observer.cc b/ash/system/chromeos/power/power_event_observer.cc
index 5ede06b..776b004 100644
--- a/ash/system/chromeos/power/power_event_observer.cc
+++ b/ash/system/chromeos/power/power_event_observer.cc
@@ -54,7 +54,7 @@ void PowerEventObserver::SuspendImminent() {
shell->display_configurator()->SuspendDisplays();
}
-void PowerEventObserver::SystemResumed(const base::TimeDelta& sleep_duration) {
+void PowerEventObserver::SuspendDone(const base::TimeDelta& sleep_duration) {
Shell::GetInstance()->display_configurator()->ResumeDisplays();
Shell::GetInstance()->system_tray_notifier()->NotifyRefreshClock();
}
diff --git a/ash/system/chromeos/power/power_event_observer.h b/ash/system/chromeos/power/power_event_observer.h
index 518959b..46b6eb9 100644
--- a/ash/system/chromeos/power/power_event_observer.h
+++ b/ash/system/chromeos/power/power_event_observer.h
@@ -26,7 +26,7 @@ class ASH_EXPORT PowerEventObserver
// chromeos::PowerManagerClient::Observer overrides:
virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE;
virtual void SuspendImminent() OVERRIDE;
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// chromeos::SessionManagerClient::Observer overrides.
virtual void ScreenIsLocked() OVERRIDE;
diff --git a/ash/system/chromeos/power/power_event_observer_unittest.cc b/ash/system/chromeos/power/power_event_observer_unittest.cc
index 94dcdedd..30cd2e9 100644
--- a/ash/system/chromeos/power/power_event_observer_unittest.cc
+++ b/ash/system/chromeos/power/power_event_observer_unittest.cc
@@ -53,7 +53,7 @@ TEST_F(PowerEventObserverTest, LockBeforeSuspend) {
EXPECT_EQ(0, client->GetNumPendingSuspendReadinessCallbacks());
// If the system is already locked, no callback should be requested.
- observer_->SystemResumed(base::TimeDelta());
+ observer_->SuspendDone(base::TimeDelta());
observer_->ScreenIsUnlocked();
observer_->ScreenIsLocked();
observer_->SuspendImminent();
@@ -61,7 +61,7 @@ TEST_F(PowerEventObserverTest, LockBeforeSuspend) {
// It also shouldn't request a callback if it isn't instructed to lock the
// screen.
- observer_->SystemResumed(base::TimeDelta());
+ observer_->SuspendDone(base::TimeDelta());
SetShouldLockScreenBeforeSuspending(false);
observer_->SuspendImminent();
EXPECT_EQ(0, client->GetNumPendingSuspendReadinessCallbacks());
diff --git a/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.cc b/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.cc
index 8bbf815..089795e 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.cc
@@ -89,7 +89,7 @@ void KioskModeIdleAppNameNotification::OnUserActivity(const ui::Event* event) {
ResetTimer();
}
-void KioskModeIdleAppNameNotification::SystemResumed(
+void KioskModeIdleAppNameNotification::SuspendDone(
const base::TimeDelta& sleep_duration) {
// When we come back from a system resume we stop the timer and show the
// message.
diff --git a/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h b/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h
index 9006432..4bb327b 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h
+++ b/chrome/browser/chromeos/app_mode/kiosk_mode_idle_app_name_notification.h
@@ -33,7 +33,7 @@ class KioskModeIdleAppNameNotification : public wm::UserActivityObserver,
virtual void OnUserActivity(const ui::Event* event) OVERRIDE;
// PowerManagerClient::Observer overrides:
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// Begins listening for user activity and calls ResetTimer().
void Start();
diff --git a/chrome/browser/chromeos/extensions/extension_system_event_observer.cc b/chrome/browser/chromeos/extensions/extension_system_event_observer.cc
index cf948ad..3938d9c 100644
--- a/chrome/browser/chromeos/extensions/extension_system_event_observer.cc
+++ b/chrome/browser/chromeos/extensions/extension_system_event_observer.cc
@@ -24,7 +24,7 @@ void ExtensionSystemEventObserver::BrightnessChanged(int level,
extensions::DispatchBrightnessChangedEvent(level, user_initiated);
}
-void ExtensionSystemEventObserver::SystemResumed(
+void ExtensionSystemEventObserver::SuspendDone(
const base::TimeDelta& sleep_duration) {
extensions::DispatchWokeUpEvent();
}
diff --git a/chrome/browser/chromeos/extensions/extension_system_event_observer.h b/chrome/browser/chromeos/extensions/extension_system_event_observer.h
index 8b914cf..d51dce0 100644
--- a/chrome/browser/chromeos/extensions/extension_system_event_observer.h
+++ b/chrome/browser/chromeos/extensions/extension_system_event_observer.h
@@ -22,7 +22,7 @@ class ExtensionSystemEventObserver : public PowerManagerClient::Observer,
// PowerManagerClient::Observer overrides:
virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE;
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// SessionManagerClient::Observer override.
virtual void ScreenIsUnlocked() OVERRIDE;
diff --git a/chrome/browser/chromeos/file_manager/mounted_disk_monitor.cc b/chrome/browser/chromeos/file_manager/mounted_disk_monitor.cc
index 47b6051..17ecf0a 100644
--- a/chrome/browser/chromeos/file_manager/mounted_disk_monitor.cc
+++ b/chrome/browser/chromeos/file_manager/mounted_disk_monitor.cc
@@ -44,12 +44,12 @@ MountedDiskMonitor::~MountedDiskMonitor() {
void MountedDiskMonitor::SuspendImminent() {
// Flip the resuming flag while suspending, so it is possible to detect
// resuming as soon as possible after the lid is open. Note, that mount
- // events may occur before the SystemResumed method is called.
+ // events may occur before the SuspendDone method is called.
is_resuming_ = true;
weak_factory_.InvalidateWeakPtrs();
}
-void MountedDiskMonitor::SystemResumed(
+void MountedDiskMonitor::SuspendDone(
const base::TimeDelta& sleep_duration) {
// Undo any previous resets. Release the resuming flag after a fixed timeout.
weak_factory_.InvalidateWeakPtrs();
diff --git a/chrome/browser/chromeos/file_manager/mounted_disk_monitor.h b/chrome/browser/chromeos/file_manager/mounted_disk_monitor.h
index bb0c540..a37d22d 100644
--- a/chrome/browser/chromeos/file_manager/mounted_disk_monitor.h
+++ b/chrome/browser/chromeos/file_manager/mounted_disk_monitor.h
@@ -32,7 +32,7 @@ class MountedDiskMonitor
// PowerManagerClient::Observer overrides:
virtual void SuspendImminent() OVERRIDE;
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// DiskMountManager::Observer overrides.
virtual void OnDiskEvent(
diff --git a/chrome/browser/chromeos/file_manager/mounted_disk_monitor_unittest.cc b/chrome/browser/chromeos/file_manager/mounted_disk_monitor_unittest.cc
index 502c254..463f6f1 100644
--- a/chrome/browser/chromeos/file_manager/mounted_disk_monitor_unittest.cc
+++ b/chrome/browser/chromeos/file_manager/mounted_disk_monitor_unittest.cc
@@ -119,7 +119,7 @@ TEST_F(MountedDiskMonitorTest, SuspendAndResume) {
// Pseudo system suspend and resume.
mounted_disk_monitor_->SuspendImminent();
- mounted_disk_monitor_->SystemResumed(base::TimeDelta::FromSeconds(0));
+ mounted_disk_monitor_->SuspendDone(base::TimeDelta::FromSeconds(0));
// On system resume, we expect unmount and then mount immediately.
// During the phase, we expect the disk is remounting.
diff --git a/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc b/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc
index 196aaeb..c071f59 100644
--- a/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc
+++ b/chrome/browser/chromeos/file_manager/volume_manager_unittest.cc
@@ -517,12 +517,7 @@ TEST_F(VolumeManagerTest, OnMountEvent_Remounting) {
// Emulate system suspend and then resume.
{
power_manager_client_->SendSuspendImminent();
- power_manager::SuspendState state;
- state.set_type(power_manager::SuspendState_Type_SUSPEND_TO_MEMORY);
- state.set_wall_time(0);
- power_manager_client_->SendSuspendStateChanged(state);
- state.set_type(power_manager::SuspendState_Type_RESUME);
- power_manager_client_->SendSuspendStateChanged(state);
+ power_manager_client_->SendSuspendDone();
// After resume, the device is unmounted and then mounted.
disk_mount_manager_->UnmountPath(
diff --git a/chrome/browser/chromeos/login/webui_screen_locker.cc b/chrome/browser/chromeos/login/webui_screen_locker.cc
index 8c2cf2d..b86b4b9 100644
--- a/chrome/browser/chromeos/login/webui_screen_locker.cc
+++ b/chrome/browser/chromeos/login/webui_screen_locker.cc
@@ -347,7 +347,7 @@ void WebUIScreenLocker::LidEventReceived(bool open,
base::Bind(&WebUIScreenLocker::FocusUserPod, weak_factory_.GetWeakPtr()));
}
-void WebUIScreenLocker::SystemResumed(const base::TimeDelta& sleep_duration) {
+void WebUIScreenLocker::SuspendDone(const base::TimeDelta& sleep_duration) {
content::BrowserThread::PostTask(
content::BrowserThread::UI,
FROM_HERE,
diff --git a/chrome/browser/chromeos/login/webui_screen_locker.h b/chrome/browser/chromeos/login/webui_screen_locker.h
index 155e542..841f685 100644
--- a/chrome/browser/chromeos/login/webui_screen_locker.h
+++ b/chrome/browser/chromeos/login/webui_screen_locker.h
@@ -118,7 +118,7 @@ class WebUIScreenLocker : public WebUILoginView,
virtual void OnWidgetDestroying(views::Widget* widget) OVERRIDE;
// PowerManagerClient::Observer overrides:
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
virtual void LidEventReceived(bool open,
const base::TimeTicks& time) OVERRIDE;
diff --git a/chrome/browser/chromeos/power/idle_action_warning_observer.cc b/chrome/browser/chromeos/power/idle_action_warning_observer.cc
index d452cba..cc526ae 100644
--- a/chrome/browser/chromeos/power/idle_action_warning_observer.cc
+++ b/chrome/browser/chromeos/power/idle_action_warning_observer.cc
@@ -19,7 +19,8 @@ IdleActionWarningObserver::~IdleActionWarningObserver() {
warning_dialog_->CloseDialog();
}
-void IdleActionWarningObserver::IdleActionImminent() {
+void IdleActionWarningObserver::IdleActionImminent(
+ const base::TimeDelta& time_until_idle_action) {
if (!warning_dialog_)
warning_dialog_ = new IdleActionWarningDialogView;
}
diff --git a/chrome/browser/chromeos/power/idle_action_warning_observer.h b/chrome/browser/chromeos/power/idle_action_warning_observer.h
index 8cd0617..81deecf 100644
--- a/chrome/browser/chromeos/power/idle_action_warning_observer.h
+++ b/chrome/browser/chromeos/power/idle_action_warning_observer.h
@@ -21,7 +21,8 @@ class IdleActionWarningObserver : public PowerManagerClient::Observer {
virtual ~IdleActionWarningObserver();
// PowerManagerClient::Observer:
- virtual void IdleActionImminent() OVERRIDE;
+ virtual void IdleActionImminent(
+ const base::TimeDelta& time_until_idle_action) OVERRIDE;
virtual void IdleActionDeferred() OVERRIDE;
private:
diff --git a/chrome/browser/chromeos/power/power_data_collector.cc b/chrome/browser/chromeos/power/power_data_collector.cc
index a6ffe8f..bc8ebcd 100644
--- a/chrome/browser/chromeos/power/power_data_collector.cc
+++ b/chrome/browser/chromeos/power/power_data_collector.cc
@@ -59,7 +59,7 @@ void PowerDataCollector::PowerChanged(
AddSample(&power_supply_data_, sample);
}
-void PowerDataCollector::SystemResumed(const base::TimeDelta& sleep_duration) {
+void PowerDataCollector::SuspendDone(const base::TimeDelta& sleep_duration) {
SystemResumedSample sample;
sample.time = base::Time::Now();
sample.sleep_duration = sleep_duration;
diff --git a/chrome/browser/chromeos/power/power_data_collector.h b/chrome/browser/chromeos/power/power_data_collector.h
index 16ee5f7..436361d 100644
--- a/chrome/browser/chromeos/power/power_data_collector.h
+++ b/chrome/browser/chromeos/power/power_data_collector.h
@@ -84,7 +84,7 @@ class CHROMEOS_EXPORT PowerDataCollector : public PowerManagerClient::Observer {
// PowerManagerClient::Observer implementation:
virtual void PowerChanged(
const power_manager::PowerSupplyProperties& prop) OVERRIDE;
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// Only those power data samples which fall within the last
// |kSampleTimeLimitSec| are stored in memory.
diff --git a/chrome/browser/chromeos/power/power_data_collector_unittest.cc b/chrome/browser/chromeos/power/power_data_collector_unittest.cc
index b45e43d..821d1d4 100644
--- a/chrome/browser/chromeos/power/power_data_collector_unittest.cc
+++ b/chrome/browser/chromeos/power/power_data_collector_unittest.cc
@@ -55,14 +55,14 @@ TEST_F(PowerDataCollectorTest, PowerChanged) {
EXPECT_TRUE(data2[1].external_power);
}
-TEST_F(PowerDataCollectorTest, SystemResumed) {
- power_data_collector_->SystemResumed(base::TimeDelta::FromSeconds(10));
+TEST_F(PowerDataCollectorTest, SuspendDone) {
+ power_data_collector_->SuspendDone(base::TimeDelta::FromSeconds(10));
const std::deque<PowerDataCollector::SystemResumedSample>& data1 =
power_data_collector_->system_resumed_data();
ASSERT_EQ(static_cast<size_t>(1), data1.size());
ASSERT_EQ(static_cast<int64>(10), data1[0].sleep_duration.InSeconds());
- power_data_collector_->SystemResumed(base::TimeDelta::FromSeconds(20));
+ power_data_collector_->SuspendDone(base::TimeDelta::FromSeconds(20));
const std::deque<PowerDataCollector::SystemResumedSample>& data2 =
power_data_collector_->system_resumed_data();
ASSERT_EQ(static_cast<size_t>(2), data2.size());
diff --git a/chrome/browser/chromeos/system/automatic_reboot_manager.cc b/chrome/browser/chromeos/system/automatic_reboot_manager.cc
index a6b95e8..0a1be87 100644
--- a/chrome/browser/chromeos/system/automatic_reboot_manager.cc
+++ b/chrome/browser/chromeos/system/automatic_reboot_manager.cc
@@ -216,7 +216,7 @@ void AutomaticRebootManager::RemoveObserver(
observers_.RemoveObserver(observer);
}
-void AutomaticRebootManager::SystemResumed(
+void AutomaticRebootManager::SuspendDone(
const base::TimeDelta& sleep_duration) {
MaybeReboot(true);
}
diff --git a/chrome/browser/chromeos/system/automatic_reboot_manager.h b/chrome/browser/chromeos/system/automatic_reboot_manager.h
index 6e1adb5..1be4e2d 100644
--- a/chrome/browser/chromeos/system/automatic_reboot_manager.h
+++ b/chrome/browser/chromeos/system/automatic_reboot_manager.h
@@ -97,7 +97,7 @@ class AutomaticRebootManager : public PowerManagerClient::Observer,
void RemoveObserver(AutomaticRebootManagerObserver* observer);
// PowerManagerClient::Observer:
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// UpdateEngineClient::Observer:
virtual void UpdateStatusChanged(
diff --git a/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc b/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc
index f3204b6..409d36d 100644
--- a/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc
+++ b/chrome/browser/chromeos/system/automatic_reboot_manager_unittest.cc
@@ -426,7 +426,7 @@ void AutomaticRebootManagerBasicTest::NotifyUpdateRebootNeeded() {
}
void AutomaticRebootManagerBasicTest::NotifyResumed(bool expect_reboot) {
- automatic_reboot_manager_->SystemResumed(base::TimeDelta::FromHours(1));
+ automatic_reboot_manager_->SuspendDone(base::TimeDelta::FromHours(1));
task_runner_->RunUntilIdle();
EXPECT_EQ(expect_reboot ? 1 : 0,
power_manager_client_->num_request_restart_calls());
diff --git a/chromeos/dbus/fake_power_manager_client.cc b/chromeos/dbus/fake_power_manager_client.cc
index 529628a..5a39adf 100644
--- a/chromeos/dbus/fake_power_manager_client.cc
+++ b/chromeos/dbus/fake_power_manager_client.cc
@@ -92,19 +92,8 @@ void FakePowerManagerClient::SendSuspendImminent() {
FOR_EACH_OBSERVER(Observer, observers_, SuspendImminent());
}
-void FakePowerManagerClient::SendSuspendStateChanged(
- const power_manager::SuspendState& suspend_state) {
- base::Time wall_time =
- base::Time::FromInternalValue(suspend_state.wall_time());
- switch (suspend_state.type()) {
- case power_manager::SuspendState_Type_SUSPEND_TO_MEMORY:
- last_suspend_wall_time_ = wall_time;
- break;
- case power_manager::SuspendState_Type_RESUME:
- FOR_EACH_OBSERVER(Observer, observers_,
- SystemResumed(wall_time - last_suspend_wall_time_));
- break;
- }
+void FakePowerManagerClient::SendSuspendDone() {
+ FOR_EACH_OBSERVER(Observer, observers_, SuspendDone(base::TimeDelta()));
}
} // namespace chromeos
diff --git a/chromeos/dbus/fake_power_manager_client.h b/chromeos/dbus/fake_power_manager_client.h
index dd0cd26..c40dc18 100644
--- a/chromeos/dbus/fake_power_manager_client.h
+++ b/chromeos/dbus/fake_power_manager_client.h
@@ -63,14 +63,10 @@ class FakePowerManagerClient : public PowerManagerClient {
virtual base::Closure GetSuspendReadinessCallback() OVERRIDE;
virtual int GetNumPendingSuspendReadinessCallbacks() OVERRIDE;
- // Emulates that the dbus server sends a message "SuspendImminent" to the
- // client.
+ // Emulates the power manager announcing that the system is starting or
+ // completing a suspend attempt.
void SendSuspendImminent();
-
- // Emulates that the dbus server sends a message "SuspendStateChanged" to the
- // client.
- void SendSuspendStateChanged(
- const power_manager::SuspendState& suspend_state);
+ void SendSuspendDone();
private:
ObserverList<Observer> observers_;
@@ -78,9 +74,6 @@ class FakePowerManagerClient : public PowerManagerClient {
// Last policy passed to SetPolicy().
power_manager::PowerManagementPolicy policy_;
- // Last time passed to a SUSPEND_TO_MEMORY call to SendSuspendStateChanged().
- base::Time last_suspend_wall_time_;
-
// Number of times that RequestRestart() has been called.
int num_request_restart_calls_;
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
index be8fb6d..80df142 100644
--- a/chromeos/dbus/power_manager_client.cc
+++ b/chromeos/dbus/power_manager_client.cc
@@ -268,18 +268,18 @@ class PowerManagerClientImpl : public PowerManagerClient {
power_manager_proxy_->ConnectToSignal(
power_manager::kPowerManagerInterface,
- power_manager::kSuspendStateChangedSignal,
- base::Bind(&PowerManagerClientImpl::SuspendStateChangedReceived,
- weak_ptr_factory_.GetWeakPtr()),
+ power_manager::kSuspendImminentSignal,
+ base::Bind(
+ &PowerManagerClientImpl::SuspendImminentReceived,
+ weak_ptr_factory_.GetWeakPtr()),
base::Bind(&PowerManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
power_manager_proxy_->ConnectToSignal(
power_manager::kPowerManagerInterface,
- power_manager::kSuspendImminentSignal,
- base::Bind(
- &PowerManagerClientImpl::SuspendImminentReceived,
- weak_ptr_factory_.GetWeakPtr()),
+ power_manager::kSuspendDoneSignal,
+ base::Bind(&PowerManagerClientImpl::SuspendDoneReceived,
+ weak_ptr_factory_.GetWeakPtr()),
base::Bind(&PowerManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
@@ -452,29 +452,58 @@ class PowerManagerClientImpl : public PowerManagerClient {
}
dbus::MessageReader reader(signal);
- power_manager::SuspendImminent protobuf_imminent;
- if (!reader.PopArrayOfBytesAsProto(&protobuf_imminent)) {
+ power_manager::SuspendImminent proto;
+ if (!reader.PopArrayOfBytesAsProto(&proto)) {
LOG(ERROR) << "Unable to decode protocol buffer from "
<< power_manager::kSuspendImminentSignal << " signal";
return;
}
+ VLOG(1) << "Got " << power_manager::kSuspendImminentSignal << " signal "
+ << "announcing suspend attempt " << proto.suspend_id();
if (suspend_is_pending_) {
LOG(WARNING) << "Got " << power_manager::kSuspendImminentSignal
<< " signal about pending suspend attempt "
- << protobuf_imminent.suspend_id() << " while still waiting "
+ << proto.suspend_id() << " while still waiting "
<< "on attempt " << pending_suspend_id_;
}
- pending_suspend_id_ = protobuf_imminent.suspend_id();
+ pending_suspend_id_ = proto.suspend_id();
suspend_is_pending_ = true;
num_pending_suspend_readiness_callbacks_ = 0;
FOR_EACH_OBSERVER(Observer, observers_, SuspendImminent());
MaybeReportSuspendReadiness();
}
+ void SuspendDoneReceived(dbus::Signal* signal) {
+ dbus::MessageReader reader(signal);
+ power_manager::SuspendDone proto;
+ if (!reader.PopArrayOfBytesAsProto(&proto)) {
+ LOG(ERROR) << "Unable to decode protocol buffer from "
+ << power_manager::kSuspendDoneSignal << " signal";
+ return;
+ }
+
+ const base::TimeDelta duration =
+ base::TimeDelta::FromInternalValue(proto.suspend_duration());
+ VLOG(1) << "Got " << power_manager::kSuspendDoneSignal << " signal:"
+ << " suspend_id=" << proto.suspend_id()
+ << " duration=" << duration.InSeconds() << " sec";
+ FOR_EACH_OBSERVER(
+ PowerManagerClient::Observer, observers_, SuspendDone(duration));
+ }
+
void IdleActionImminentReceived(dbus::Signal* signal) {
- FOR_EACH_OBSERVER(Observer, observers_, IdleActionImminent());
+ dbus::MessageReader reader(signal);
+ power_manager::IdleActionImminent proto;
+ if (!reader.PopArrayOfBytesAsProto(&proto)) {
+ LOG(ERROR) << "Unable to decode protocol buffer from "
+ << power_manager::kIdleActionImminentSignal << " signal";
+ return;
+ }
+ FOR_EACH_OBSERVER(Observer, observers_,
+ IdleActionImminent(base::TimeDelta::FromInternalValue(
+ proto.time_until_idle_action())));
}
void IdleActionDeferredReceived(dbus::Signal* signal) {
@@ -527,31 +556,6 @@ class PowerManagerClientImpl : public PowerManagerClient {
}
}
- void SuspendStateChangedReceived(dbus::Signal* signal) {
- dbus::MessageReader reader(signal);
- power_manager::SuspendState proto;
- if (!reader.PopArrayOfBytesAsProto(&proto)) {
- LOG(ERROR) << "Unable to decode protocol buffer from "
- << power_manager::kSuspendStateChangedSignal << " signal";
- return;
- }
-
- VLOG(1) << "Got " << power_manager::kSuspendStateChangedSignal << " signal:"
- << " type=" << proto.type() << " wall_time=" << proto.wall_time();
- base::Time wall_time =
- base::Time::FromInternalValue(proto.wall_time());
- switch (proto.type()) {
- case power_manager::SuspendState_Type_SUSPEND_TO_MEMORY:
- last_suspend_wall_time_ = wall_time;
- break;
- case power_manager::SuspendState_Type_RESUME:
- FOR_EACH_OBSERVER(
- PowerManagerClient::Observer, observers_,
- SystemResumed(wall_time - last_suspend_wall_time_));
- break;
- }
- }
-
// Registers a suspend delay with the power manager. This is usually
// only called at startup, but if the power manager restarts, we need to
// create a new delay.
@@ -608,6 +612,8 @@ class PowerManagerClientImpl : public PowerManagerClient {
power_manager::kHandleSuspendReadinessMethod);
dbus::MessageWriter writer(&method_call);
+ VLOG(1) << "Announcing readiness of suspend delay " << suspend_delay_id_
+ << " for suspend attempt " << pending_suspend_id_;
power_manager::SuspendReadinessInfo protobuf_request;
protobuf_request.set_delay_id(suspend_delay_id_);
protobuf_request.set_suspend_id(pending_suspend_id_);
@@ -646,10 +652,6 @@ class PowerManagerClientImpl : public PowerManagerClient {
// attempt but have not yet been called.
int num_pending_suspend_readiness_callbacks_;
- // Wall time from the latest signal telling us that the system was about to
- // suspend to memory.
- base::Time last_suspend_wall_time_;
-
// Last state passed to SetIsProjecting().
bool last_is_projecting_;
diff --git a/chromeos/dbus/power_manager_client.h b/chromeos/dbus/power_manager_client.h
index 5c957f4..f37476e 100644
--- a/chromeos/dbus/power_manager_client.h
+++ b/chromeos/dbus/power_manager_client.h
@@ -66,6 +66,11 @@ class CHROMEOS_EXPORT PowerManagerClient : public DBusClient {
// the observer is ready for suspend.
virtual void SuspendImminent() {}
+ // Called when a suspend attempt (previously announced via
+ // SuspendImminent()) has completed. The system may not have actually
+ // suspended (if e.g. the user canceled the suspend attempt).
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) {}
+
// Called when the power button is pressed or released.
virtual void PowerButtonEventReceived(bool down,
const base::TimeTicks& timestamp) {}
@@ -74,11 +79,10 @@ class CHROMEOS_EXPORT PowerManagerClient : public DBusClient {
virtual void LidEventReceived(bool open,
const base::TimeTicks& timestamp) {}
- // Called when the system resumes from sleep.
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) {}
-
- // Called when the idle action will be performed soon.
- virtual void IdleActionImminent() {}
+ // Called when the idle action will be performed after
+ // |time_until_idle_action|.
+ virtual void IdleActionImminent(
+ const base::TimeDelta& time_until_idle_action) {}
// Called after IdleActionImminent() when the inactivity timer is reset
// before the idle action has been performed.
diff --git a/chromeos/network/network_change_notifier_chromeos.cc b/chromeos/network/network_change_notifier_chromeos.cc
index d8d3d2c..5c6908a 100644
--- a/chromeos/network/network_change_notifier_chromeos.cc
+++ b/chromeos/network/network_change_notifier_chromeos.cc
@@ -84,7 +84,7 @@ NetworkChangeNotifierChromeos::GetCurrentConnectionType() const {
return connection_type_;
}
-void NetworkChangeNotifierChromeos::SystemResumed(
+void NetworkChangeNotifierChromeos::SuspendDone(
const base::TimeDelta& sleep_duration) {
// Force invalidation of network resources on resume.
NetworkChangeNotifier::NotifyObserversOfIPAddressChange();
diff --git a/chromeos/network/network_change_notifier_chromeos.h b/chromeos/network/network_change_notifier_chromeos.h
index aabfddc..d70386e 100644
--- a/chromeos/network/network_change_notifier_chromeos.h
+++ b/chromeos/network/network_change_notifier_chromeos.h
@@ -36,7 +36,7 @@ class CHROMEOS_EXPORT NetworkChangeNotifierChromeos
GetCurrentConnectionType() const OVERRIDE;
// PowerManagerClient::Observer overrides.
- virtual void SystemResumed(const base::TimeDelta& sleep_duration) OVERRIDE;
+ virtual void SuspendDone(const base::TimeDelta& sleep_duration) OVERRIDE;
// NetworkStateHandlerObserver overrides.
virtual void DefaultNetworkChanged(