summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsque@chromium.org <sque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-24 01:02:13 +0000
committersque@chromium.org <sque@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-24 01:02:13 +0000
commit6f830b94d7e6062a7b2fdafe1694f4023cf65df1 (patch)
treec7f584ab792af986aef8f4c93672cdd95c66073b
parentd8a008e1268c516c042f59f6c710c168efd23386 (diff)
downloadchromium_src-6f830b94d7e6062a7b2fdafe1694f4023cf65df1.zip
chromium_src-6f830b94d7e6062a7b2fdafe1694f4023cf65df1.tar.gz
chromium_src-6f830b94d7e6062a7b2fdafe1694f4023cf65df1.tar.bz2
chromeos: Move system resume handling to power manager client
BUG=chromium-os:21115 TEST=Note the time. Suspend for 5 minutes. Resume. The time should have advanced 5 minutes. Signed-off-by: Simon Que <sque@chromium.org> R=satorux@chromium.org,stevenjb@chromium.org Review URL: http://codereview.chromium.org/8666007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111460 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/accessibility/system_event_observer.cc7
-rw-r--r--chrome/browser/chromeos/accessibility/system_event_observer.h6
-rw-r--r--chrome/browser/chromeos/chrome_browser_main_chromeos.cc9
-rw-r--r--chrome/browser/chromeos/dbus/power_manager_client.cc24
-rw-r--r--chrome/browser/chromeos/dbus/power_manager_client.h3
-rw-r--r--chrome/browser/chromeos/net/network_change_notifier_chromeos.cc7
-rw-r--r--chrome/browser/chromeos/net/network_change_notifier_chromeos.h3
-rw-r--r--chrome/browser/chromeos/status/status_area_view_chromeos.cc6
-rw-r--r--chrome/browser/chromeos/status/status_area_view_chromeos.h6
9 files changed, 48 insertions, 23 deletions
diff --git a/chrome/browser/chromeos/accessibility/system_event_observer.cc b/chrome/browser/chromeos/accessibility/system_event_observer.cc
index 9b16e7f..85415b4 100644
--- a/chrome/browser/chromeos/accessibility/system_event_observer.cc
+++ b/chrome/browser/chromeos/accessibility/system_event_observer.cc
@@ -7,6 +7,7 @@
#include "base/logging.h"
#include "chrome/browser/accessibility_events.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/dbus/dbus_thread_manager.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_notification_types.h"
@@ -20,13 +21,11 @@ SystemEventObserver* g_system_event_observer = NULL;
}
SystemEventObserver::SystemEventObserver() {
- CrosLibrary::Get()->GetPowerLibrary()->AddObserver(this);
CrosLibrary::Get()->GetScreenLockLibrary()->AddObserver(this);
}
SystemEventObserver::~SystemEventObserver() {
CrosLibrary::Get()->GetScreenLockLibrary()->RemoveObserver(this);
- CrosLibrary::Get()->GetPowerLibrary()->RemoveObserver(this);
}
void SystemEventObserver::SystemResumed() {
@@ -55,6 +54,8 @@ void SystemEventObserver::Initialize() {
DCHECK(!g_system_event_observer);
g_system_event_observer = new SystemEventObserver();
VLOG(1) << "SystemEventObserver initialized";
+ DBusThreadManager::Get()->GetPowerManagerClient()->
+ AddObserver(g_system_event_observer);
}
// static
@@ -65,6 +66,8 @@ SystemEventObserver* SystemEventObserver::GetInstance() {
// static
void SystemEventObserver::Shutdown() {
DCHECK(g_system_event_observer);
+ DBusThreadManager::Get()->GetPowerManagerClient()->
+ RemoveObserver(g_system_event_observer);
delete g_system_event_observer;
g_system_event_observer = NULL;
VLOG(1) << "SystemEventObserver Shutdown completed";
diff --git a/chrome/browser/chromeos/accessibility/system_event_observer.h b/chrome/browser/chromeos/accessibility/system_event_observer.h
index 82fcb6ea..4102b03 100644
--- a/chrome/browser/chromeos/accessibility/system_event_observer.h
+++ b/chrome/browser/chromeos/accessibility/system_event_observer.h
@@ -6,20 +6,20 @@
#define CHROME_BROWSER_CHROMEOS_ACCESSIBILITY_SYSTEM_EVENT_OBSERVER_H_
#pragma once
-#include "chrome/browser/chromeos/cros/power_library.h"
#include "chrome/browser/chromeos/cros/screen_lock_library.h"
+#include "chrome/browser/chromeos/dbus/power_manager_client.h"
namespace chromeos {
namespace accessibility {
// A singleton class to observe system events like wake up from sleep and
// screen unlock.
-class SystemEventObserver : public PowerLibrary::Observer,
+class SystemEventObserver : public PowerManagerClient::Observer,
public ScreenLockLibrary::Observer {
public:
virtual ~SystemEventObserver();
- // PowerLibrary::Observer override.
+ // PowerManagerClient::Observer override.
virtual void SystemResumed() OVERRIDE;
// ScreenLockLibrary::Observer override.
diff --git a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
index e7ce5b8..5d078d3 100644
--- a/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
+++ b/chrome/browser/chromeos/chrome_browser_main_chromeos.cc
@@ -88,14 +88,14 @@ ChromeBrowserMainPartsChromeos::ChromeBrowserMainPartsChromeos(
}
ChromeBrowserMainPartsChromeos::~ChromeBrowserMainPartsChromeos() {
+ chromeos::accessibility::SystemEventObserver::Shutdown();
+
chromeos::disks::DiskMountManager::Shutdown();
chromeos::BluetoothManager::Shutdown();
chromeos::DBusThreadManager::Shutdown();
- chromeos::accessibility::SystemEventObserver::Shutdown();
-
if (!parameters().ui_task && chromeos::CrosLibrary::Get())
chromeos::CrosLibrary::Shutdown();
@@ -129,8 +129,6 @@ void ChromeBrowserMainPartsChromeos::PreMainMessageLoopStart() {
// implementation.
net::NetworkChangeNotifier::SetFactory(
new chromeos::CrosNetworkChangeNotifierFactory());
-
- chromeos::accessibility::SystemEventObserver::Initialize();
}
void ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() {
@@ -174,6 +172,9 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopStart() {
// Initialize the disk mount manager.
chromeos::disks::DiskMountManager::Initialize();
+ // Initialize the system event observer.
+ chromeos::accessibility::SystemEventObserver::Initialize();
+
// Initialize the network change notifier for Chrome OS. The network
// change notifier starts to monitor changes from the power manager and
// the network manager.
diff --git a/chrome/browser/chromeos/dbus/power_manager_client.cc b/chrome/browser/chromeos/dbus/power_manager_client.cc
index 5b95f0e1..fce1c13 100644
--- a/chrome/browser/chromeos/dbus/power_manager_client.cc
+++ b/chrome/browser/chromeos/dbus/power_manager_client.cc
@@ -83,6 +83,15 @@ class PowerManagerClientImpl : public PowerManagerClient {
weak_ptr_factory_.GetWeakPtr()),
base::Bind(&PowerManagerClientImpl::SignalConnected,
weak_ptr_factory_.GetWeakPtr()));
+
+ // Monitor the D-Bus signal for power state changed signals.
+ power_manager_proxy_->ConnectToSignal(
+ power_manager::kPowerManagerInterface,
+ power_manager::kPowerStateChangedSignal,
+ base::Bind(&PowerManagerClientImpl::PowerStateChangedSignalReceived,
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&PowerManagerClientImpl::SignalConnected,
+ weak_ptr_factory_.GetWeakPtr()));
}
virtual ~PowerManagerClientImpl() {
@@ -211,6 +220,21 @@ class PowerManagerClientImpl : public PowerManagerClient {
VLOG(1) << "screen brightness increased: " << response->ToString();
}
+ // Called when a power state changed signal is received.
+ void PowerStateChangedSignalReceived(dbus::Signal* signal) {
+ VLOG(1) << "Received power state changed signal.";
+ dbus::MessageReader reader(signal);
+ std::string power_state_string;
+ if (!reader.PopString(&power_state_string)) {
+ LOG(ERROR) << "Error reading signal args: " << signal->ToString();
+ return;
+ }
+ if (power_state_string != "on")
+ return;
+ // Notify all observers of resume event.
+ FOR_EACH_OBSERVER(Observer, observers_, SystemResumed());
+ }
+
// Called when a power supply polling signal is received.
void PowerSupplyPollReceived(dbus::Signal* unused_signal) {
VLOG(1) << "Received power supply poll signal.";
diff --git a/chrome/browser/chromeos/dbus/power_manager_client.h b/chrome/browser/chromeos/dbus/power_manager_client.h
index bec0cea..43f58a4 100644
--- a/chrome/browser/chromeos/dbus/power_manager_client.h
+++ b/chrome/browser/chromeos/dbus/power_manager_client.h
@@ -51,6 +51,9 @@ class PowerManagerClient {
// Called when power supply polling takes place. |status| is a data
// structure that contains the current state of the power supply.
virtual void PowerChanged(const PowerSupplyStatus& status) {}
+
+ // Called when the system resumes from suspend.
+ virtual void SystemResumed() {}
};
// Adds and removes the observer.
diff --git a/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc b/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
index 8300151..c948dbe 100644
--- a/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
+++ b/chrome/browser/chromeos/net/network_change_notifier_chromeos.cc
@@ -81,8 +81,7 @@ void NetworkChangeNotifierChromeos::Init() {
chromeos::CrosLibrary::Get()->GetNetworkLibrary();
network_library->AddNetworkManagerObserver(this);
- chromeos::CrosLibrary::Get()->GetPowerLibrary()
- ->AddObserver(this);
+ DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
UpdateNetworkState(network_library);
}
@@ -99,9 +98,7 @@ void NetworkChangeNotifierChromeos::Shutdown() {
lib->RemoveNetworkManagerObserver(this);
lib->RemoveObserverForAllNetworks(this);
- chromeos::CrosLibrary::Get()->GetPowerLibrary()->RemoveObserver(this);
- chromeos::DBusThreadManager::Get()->GetPowerManagerClient()
- ->RemoveObserver(this);
+ DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
}
void NetworkChangeNotifierChromeos::PowerChanged(
diff --git a/chrome/browser/chromeos/net/network_change_notifier_chromeos.h b/chrome/browser/chromeos/net/network_change_notifier_chromeos.h
index c9d68d0..c183982 100644
--- a/chrome/browser/chromeos/net/network_change_notifier_chromeos.h
+++ b/chrome/browser/chromeos/net/network_change_notifier_chromeos.h
@@ -10,7 +10,6 @@
#include "base/compiler_specific.h"
#include "base/task.h"
#include "chrome/browser/chromeos/cros/network_library.h"
-#include "chrome/browser/chromeos/cros/power_library.h"
#include "chrome/browser/chromeos/dbus/power_manager_client.h"
#include "net/base/network_change_notifier.h"
@@ -20,7 +19,6 @@ class OnlineStatusReportThreadTask;
class NetworkChangeNotifierChromeos
: public net::NetworkChangeNotifier,
- public chromeos::PowerLibrary::Observer,
public chromeos::PowerManagerClient::Observer,
public chromeos::NetworkLibrary::NetworkObserver,
public chromeos::NetworkLibrary::NetworkManagerObserver {
@@ -42,7 +40,6 @@ class NetworkChangeNotifierChromeos
// PowerManagerClient::Observer overrides.
virtual void PowerChanged(const PowerSupplyStatus& status) OVERRIDE;
- // PowerLibrary::Observer overrides
virtual void SystemResumed() OVERRIDE;
// NetworkChangeNotifier overrides.
diff --git a/chrome/browser/chromeos/status/status_area_view_chromeos.cc b/chrome/browser/chromeos/status/status_area_view_chromeos.cc
index 36d3cfc..b6f08a9 100644
--- a/chrome/browser/chromeos/status/status_area_view_chromeos.cc
+++ b/chrome/browser/chromeos/status/status_area_view_chromeos.cc
@@ -5,7 +5,7 @@
#include "chrome/browser/chromeos/status/status_area_view_chromeos.h"
#include "base/command_line.h"
-#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/dbus/dbus_thread_manager.h"
#include "chrome/browser/chromeos/status/accessibility_menu_button.h"
#include "chrome/browser/chromeos/status/caps_lock_menu_button.h"
#include "chrome/browser/chromeos/status/clock_menu_button.h"
@@ -19,12 +19,12 @@
namespace chromeos {
StatusAreaViewChromeos::StatusAreaViewChromeos() {
- CrosLibrary::Get()->GetPowerLibrary()->AddObserver(this);
+ DBusThreadManager::Get()->GetPowerManagerClient()->AddObserver(this);
system::TimezoneSettings::GetInstance()->AddObserver(this);
}
StatusAreaViewChromeos::~StatusAreaViewChromeos() {
- CrosLibrary::Get()->GetPowerLibrary()->RemoveObserver(this);
+ DBusThreadManager::Get()->GetPowerManagerClient()->RemoveObserver(this);
system::TimezoneSettings::GetInstance()->RemoveObserver(this);
}
diff --git a/chrome/browser/chromeos/status/status_area_view_chromeos.h b/chrome/browser/chromeos/status/status_area_view_chromeos.h
index 82af1a2..614103c 100644
--- a/chrome/browser/chromeos/status/status_area_view_chromeos.h
+++ b/chrome/browser/chromeos/status/status_area_view_chromeos.h
@@ -8,7 +8,7 @@
#include "chrome/browser/chromeos/status/status_area_view.h"
-#include "chrome/browser/chromeos/cros/power_library.h"
+#include "chrome/browser/chromeos/dbus/power_manager_client.h"
#include "chrome/browser/chromeos/system/timezone_settings.h"
#include "chrome/browser/chromeos/view_ids.h"
@@ -17,7 +17,7 @@ class ClockMenuButton;
namespace chromeos {
class StatusAreaViewChromeos : public StatusAreaView,
- public PowerLibrary::Observer,
+ public PowerManagerClient::Observer,
public system::TimezoneSettings::Observer {
public:
// The type of screen the host window is on.
@@ -33,7 +33,7 @@ class StatusAreaViewChromeos : public StatusAreaView,
void Init(StatusAreaButton::Delegate* delegate, ScreenMode screen_mode);
- // PowerLibrary::Observer:
+ // PowerManagerClient::Observer:
virtual void SystemResumed() OVERRIDE;
// TimezoneSettings::Observer: