Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3005)

Unified Diff: chrome/browser/chromeos/cros/power_library.cc

Issue 8271024: chromeos: Add power supply info reading capability (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased after refactoring Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/cros/power_library.cc
diff --git a/chrome/browser/chromeos/cros/power_library.cc b/chrome/browser/chromeos/cros/power_library.cc
index cb675c9425aa98c2762e4c761d4f7dbde124ea1d..80b6792e58b58c29f8a9a7b19df07b9077d6b1f6 100644
--- a/chrome/browser/chromeos/cros/power_library.cc
+++ b/chrome/browser/chromeos/cros/power_library.cc
@@ -5,33 +5,54 @@
#include "chrome/browser/chromeos/cros/power_library.h"
#include <algorithm>
+#include <inttypes.h>
#include "base/basictypes.h"
#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/observer_list.h"
+#include "base/stringprintf.h"
#include "base/time.h"
#include "base/timer.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/dbus/dbus_thread_manager.h"
#include "content/browser/browser_thread.h"
#include "third_party/cros/chromeos_power.h"
#include "third_party/cros/chromeos_resume.h"
namespace chromeos {
+const std::string& PowerSupplyStatus::ToString() const {
+ static std::string result = "";
+ base::StringAppendF(&result,
+ "line_power_on = %s ",
+ line_power_on ? "true" : "false");
+ base::StringAppendF(&result,
+ "battery_is_present = %s ",
+ battery_is_present ? "true" : "false");
+ base::StringAppendF(&result,
+ "battery_is_full = %s ",
+ battery_is_full ? "true" : "false");
+ base::StringAppendF(&result,
+ "battery_percentage = %f ",
+ battery_percentage);
+ base::StringAppendF(&result,
+ "battery_seconds_to_empty = %"PRId64" ",
+ battery_seconds_to_empty);
+ base::StringAppendF(&result,
+ "battery_seconds_to_full = %"PRId64" ",
+ battery_seconds_to_full);
+ return result;
+}
+
class PowerLibraryImpl : public PowerLibrary {
public:
PowerLibraryImpl()
- : power_status_connection_(NULL),
- resume_status_connection_(NULL) {
+ : resume_status_connection_(NULL) {
}
virtual ~PowerLibraryImpl() {
- if (power_status_connection_) {
- chromeos::DisconnectPowerStatus(power_status_connection_);
- power_status_connection_ = NULL;
- }
if (resume_status_connection_) {
chromeos::DisconnectResume(resume_status_connection_);
resume_status_connection_ = NULL;
@@ -41,8 +62,6 @@ class PowerLibraryImpl : public PowerLibrary {
// Begin PowerLibrary implementation.
virtual void Init() OVERRIDE {
DCHECK(CrosLibrary::Get()->libcros_loaded());
- power_status_connection_ =
- chromeos::MonitorPowerStatus(&PowerStatusChangedHandler, this);
resume_status_connection_ =
chromeos::MonitorResume(&SystemResumedHandler, this);
}
@@ -62,14 +81,11 @@ class PowerLibraryImpl : public PowerLibrary {
}
virtual void EnableScreenLock(bool enable) OVERRIDE {
- // Called when the screen preference is changed, which should always
- // run on UI thread.
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- // Post the task to FILE thread as chromeos::EnableScreenLock
+ // Make sure we run on FILE thread because chromeos::EnableScreenLock
// would write power manager config file to disk.
- BrowserThread::PostTask(
- BrowserThread::FILE, FROM_HERE,
- base::Bind(&PowerLibraryImpl::DoEnableScreenLock, enable));
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
+
+ chromeos::EnableScreenLock(enable);
}
virtual void RequestRestart() OVERRIDE {
@@ -86,6 +102,26 @@ class PowerLibraryImpl : public PowerLibrary {
// when we migrate the DBus code from libcros to here.
}
+ // PowerManagerClient::Observer implementation.
+ virtual void UpdatePowerStatus(const PowerStatus& power_status) OVERRIDE {
+ // Make this is being called from UI thread.
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
+ // TODO(sque): this is a temporary copy-over from libcros. Soon libcros
+ // will be removed and this will not be necessary.
+ PowerSupplyStatus status;
+ status.line_power_on = power_status.line_power_on;
+ status.battery_is_present = power_status.battery_is_present;
+ status.battery_is_full =
+ (power_status.battery_state == chromeos::BATTERY_STATE_FULLY_CHARGED);
+ status.battery_seconds_to_empty = power_status.battery_time_to_empty;
+ status.battery_seconds_to_full = power_status.battery_time_to_full;
+ status.battery_percentage = power_status.battery_percentage;
+
+ VLOG(1) << "Power status: " << status.ToString();
+ FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status));
satorux1 2011/10/27 21:09:21 The method is essentially redirecting UpdatePowerS
Simon Que 2011/10/27 22:46:20 Done.
+ }
+
// End PowerLibrary implementation.
private:
@@ -108,53 +144,21 @@ class PowerLibraryImpl : public PowerLibrary {
delete notify;
}
- static void PowerStatusChangedHandler(
- void* object, const chromeos::PowerStatus& power_status) {
- // TODO(sque): this is a temporary copy-over from libcros. Soon libcros
- // will be removed and this will not be necessary.
- PowerSupplyStatus status;
- status.line_power_on = power_status.line_power_on;
- status.battery_is_present = power_status.battery_is_present;
- status.battery_is_full =
- (power_status.battery_state == chromeos::BATTERY_STATE_FULLY_CHARGED);
- status.battery_seconds_to_empty = power_status.battery_time_to_empty;
- status.battery_seconds_to_full = power_status.battery_time_to_full;
- status.battery_percentage = power_status.battery_percentage;
-
- PowerLibraryImpl* power = static_cast<PowerLibraryImpl*>(object);
- power->UpdatePowerStatus(status);
- }
-
static void SystemResumedHandler(void* object) {
PowerLibraryImpl* power = static_cast<PowerLibraryImpl*>(object);
power->SystemResumed();
}
- void UpdatePowerStatus(const PowerSupplyStatus& status) {
- // Called from PowerStatusChangedHandler, a libcros callback which
- // should always run on UI thread.
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
-
- DVLOG(1) << "Power line_power_on = " << status.line_power_on
- << " percentage = " << status.battery_percentage
- << " seconds_to_empty = " << status.battery_seconds_to_empty
- << " seconds_to_full = " << status.battery_seconds_to_full;
- FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status));
- }
-
void SystemResumed() {
// Called from SystemResumedHandler, a libcros callback which should
// always run on UI thread.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
FOR_EACH_OBSERVER(Observer, observers_, SystemResumed());
}
ObserverList<Observer> observers_;
- // A reference to the power battery API, to allow callbacks when the battery
- // status changes.
- chromeos::PowerStatusConnection power_status_connection_;
-
// A reference to the resume alerts.
chromeos::ResumeConnection resume_status_connection_;
@@ -206,6 +210,9 @@ class PowerLibraryStubImpl : public PowerLibrary {
}
}
+ virtual void UpdatePowerStatus(const PowerStatus& status) OVERRIDE {
+ }
+
// End PowerLibrary implementation.
private:

Powered by Google App Engine
This is Rietveld 408576698