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

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

Issue 8347016: chromeos: Simplify power supply info in PowerLibrary (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: support unit testing, added power supply status struct 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 1b70c798a7946f7a67daa8cc7ea53566ff578501..277e789a801b8942b7d348ef1040192a8a9c6f8a 100644
--- a/chrome/browser/chromeos/cros/power_library.cc
+++ b/chrome/browser/chromeos/cros/power_library.cc
@@ -4,8 +4,10 @@
#include "chrome/browser/chromeos/cros/power_library.h"
-#include "base/bind.h"
+#include <algorithm>
+
#include "base/basictypes.h"
+#include "base/bind.h"
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/observer_list.h"
@@ -22,8 +24,7 @@ class PowerLibraryImpl : public PowerLibrary {
public:
PowerLibraryImpl()
: power_status_connection_(NULL),
- resume_status_connection_(NULL),
- status_(chromeos::PowerStatus()) {
+ resume_status_connection_(NULL) {
}
virtual ~PowerLibraryImpl() {
@@ -54,30 +55,6 @@ class PowerLibraryImpl : public PowerLibrary {
observers_.RemoveObserver(observer);
}
- virtual bool IsLinePowerOn() const OVERRIDE {
- return status_.line_power_on;
- }
-
- virtual bool IsBatteryFullyCharged() const OVERRIDE {
- return status_.battery_state == chromeos::BATTERY_STATE_FULLY_CHARGED;
- }
-
- virtual double GetBatteryPercentage() const OVERRIDE {
- return status_.battery_percentage;
- }
-
- virtual bool IsBatteryPresent() const OVERRIDE {
- return status_.battery_is_present;
- }
-
- virtual base::TimeDelta GetBatteryTimeToEmpty() const OVERRIDE {
- return base::TimeDelta::FromSeconds(status_.battery_time_to_empty);
- }
-
- virtual base::TimeDelta GetBatteryTimeToFull() const OVERRIDE {
- 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.
@@ -132,7 +109,19 @@ class PowerLibraryImpl : public PowerLibrary {
}
static void PowerStatusChangedHandler(void* object,
- const chromeos::PowerStatus& status) {
+ 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;
satorux1 2011/10/20 04:32:40 You can zero-clear the struct by: PowerSupplyStat
Simon Que 2011/10/20 21:18:53 Done.
+ 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_time_to_empty = power_status.battery_time_to_empty;
+ status.battery_time_to_full = power_status.battery_time_to_full;
+ status.battery_percentage = power_status.battery_percentage;
+
PowerLibraryImpl* power = static_cast<PowerLibraryImpl*>(object);
power->UpdatePowerStatus(status);
}
@@ -142,18 +131,16 @@ class PowerLibraryImpl : public PowerLibrary {
power->SystemResumed();
}
- void UpdatePowerStatus(const chromeos::PowerStatus& status) {
+ 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 lpo=" << status.line_power_on
- << " sta=" << status.battery_state
<< " per=" << status.battery_percentage
<< " tte=" << status.battery_time_to_empty
<< " ttf=" << status.battery_time_to_full;
satorux1 2011/10/20 04:32:40 Would be nice to clean up names here. per= -> perc
Simon Que 2011/10/20 21:18:53 Done.
- status_ = status;
- FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(this));
+ FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status));
}
void SystemResumed() {
@@ -172,9 +159,6 @@ class PowerLibraryImpl : public PowerLibrary {
// A reference to the resume alerts.
chromeos::ResumeConnection resume_status_connection_;
- // The latest power status.
- chromeos::PowerStatus status_;
-
DISALLOW_COPY_AND_ASSIGN(PowerLibraryImpl);
};
@@ -200,36 +184,6 @@ class PowerLibraryStubImpl : public PowerLibrary {
observers_.RemoveObserver(observer);
}
- virtual bool IsLinePowerOn() const OVERRIDE {
- return !discharging_;
- }
-
- virtual bool IsBatteryFullyCharged() const OVERRIDE {
- return battery_percentage_ == 100;
- }
-
- virtual double GetBatteryPercentage() const OVERRIDE {
- return battery_percentage_;
- }
-
- virtual bool IsBatteryPresent() const OVERRIDE {
- return true;
- }
-
- virtual base::TimeDelta GetBatteryTimeToEmpty() const OVERRIDE {
- if (battery_percentage_ == 0)
- return base::TimeDelta::FromSeconds(1);
- else
- return (base::TimeDelta::FromHours(3) * battery_percentage_) / 100;
- }
-
- virtual base::TimeDelta GetBatteryTimeToFull() const OVERRIDE {
- if (battery_percentage_ == 100)
- return base::TimeDelta::FromSeconds(1);
- else
- return base::TimeDelta::FromHours(3) - GetBatteryTimeToEmpty();
- }
-
virtual void CalculateIdleTime(CalculateIdleTimeCallback* callback) OVERRIDE {
callback->Run(0);
delete callback;
@@ -273,7 +227,16 @@ class PowerLibraryStubImpl : public PowerLibrary {
}
}
battery_percentage_ += (discharging_ ? -1 : 1);
- FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(this));
+
+ PowerSupplyStatus status;
+ status.line_power_on = !discharging_;
+ status.battery_is_present = true;
+ status.battery_percentage = battery_percentage_;
+ status.battery_time_to_empty = std::max(1, battery_percentage_ * 180 / 100);
+ status.battery_time_to_full = std::max(static_cast<int64>(1),
+ 180 - status.battery_time_to_empty);
+
+ FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(status));
}
bool discharging_;

Powered by Google App Engine
This is Rietveld 408576698