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

Unified Diff: chromeos/dbus/power_manager_client.cc

Issue 1206733002: ChromeOs Power Emulation Impl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated Deps for broken unittests Created 5 years, 5 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: chromeos/dbus/power_manager_client.cc
diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
index a5d2322d3b1dd6fe14965d0c9e014d50a2bc8506..d3cbc815b8d5985330c04ff453aa69269e94aaed 100644
--- a/chromeos/dbus/power_manager_client.cc
+++ b/chromeos/dbus/power_manager_client.cc
@@ -20,6 +20,7 @@
#include "base/threading/platform_thread.h"
#include "base/timer/timer.h"
#include "chromeos/chromeos_switches.h"
+#include "chromeos/dbus/fake_power_manager_client.h"
#include "chromeos/dbus/power_manager/input_event.pb.h"
#include "chromeos/dbus/power_manager/peripheral_battery_status.pb.h"
#include "chromeos/dbus/power_manager/policy.pb.h"
@@ -768,227 +769,6 @@ class PowerManagerClientImpl : public PowerManagerClient {
DISALLOW_COPY_AND_ASSIGN(PowerManagerClientImpl);
};
-// The PowerManagerClient implementation used on Linux desktop,
-// which does nothing.
-class PowerManagerClientStubImpl : public PowerManagerClient {
- public:
- PowerManagerClientStubImpl()
- : discharging_(true),
- battery_percentage_(40),
- brightness_(50.0),
- pause_count_(2),
- cycle_count_(0),
- num_pending_suspend_readiness_callbacks_(0),
- weak_ptr_factory_(this) {}
-
- ~PowerManagerClientStubImpl() override {}
-
- int num_pending_suspend_readiness_callbacks() const {
- return num_pending_suspend_readiness_callbacks_;
- }
-
- // PowerManagerClient overrides:
- void Init(dbus::Bus* bus) override {
- ParseCommandLineSwitch();
- if (power_cycle_delay_ != base::TimeDelta()) {
- update_timer_.Start(FROM_HERE,
- power_cycle_delay_,
- this,
- &PowerManagerClientStubImpl::UpdateStatus);
- }
- }
-
- void AddObserver(Observer* observer) override {
- observers_.AddObserver(observer);
- }
-
- void RemoveObserver(Observer* observer) override {
- observers_.RemoveObserver(observer);
- }
-
- bool HasObserver(const Observer* observer) const override {
- return observers_.HasObserver(observer);
- }
-
- void SetRenderProcessManagerDelegate(
- base::WeakPtr<RenderProcessManagerDelegate> delegate) override {}
-
- void DecreaseScreenBrightness(bool allow_off) override {
- POWER_LOG(USER) << "Requested to descrease screen brightness";
- SetBrightness(brightness_ - 5.0, true);
- }
-
- void IncreaseScreenBrightness() override {
- POWER_LOG(USER) << "Requested to increase screen brightness";
- SetBrightness(brightness_ + 5.0, true);
- }
-
- void SetScreenBrightnessPercent(double percent, bool gradual) override {
- POWER_LOG(USER) << "Requested to set screen brightness to " << percent
- << "% " << (gradual ? "gradually" : "instantaneously");
- SetBrightness(percent, false);
- }
-
- void GetScreenBrightnessPercent(
- const GetScreenBrightnessPercentCallback& callback) override {
- POWER_LOG(USER) << "Requested to get screen brightness";
- callback.Run(brightness_);
- }
-
- void DecreaseKeyboardBrightness() override {
- POWER_LOG(USER) << "Requested to descrease keyboard brightness";
- }
-
- void IncreaseKeyboardBrightness() override {
- POWER_LOG(USER) << "Requested to increase keyboard brightness";
- }
-
- void RequestStatusUpdate() override {
- POWER_LOG(USER) << "Requested status update";
- base::MessageLoop::current()->PostTask(
- FROM_HERE, base::Bind(&PowerManagerClientStubImpl::UpdateStatus,
- weak_ptr_factory_.GetWeakPtr()));
- }
-
- void RequestSuspend() override {}
- void RequestRestart() override {}
- void RequestShutdown() override {}
-
- void NotifyUserActivity(power_manager::UserActivityType type) override {}
- void NotifyVideoActivity(bool is_fullscreen) override {}
- void SetPolicy(const power_manager::PowerManagementPolicy& policy) override {}
- void SetIsProjecting(bool is_projecting) override {}
- base::Closure GetSuspendReadinessCallback() override {
- num_pending_suspend_readiness_callbacks_++;
- return base::Bind(&PowerManagerClientStubImpl::HandleSuspendReadiness,
- weak_ptr_factory_.GetWeakPtr());
- }
- int GetNumPendingSuspendReadinessCallbacks() override {
- return num_pending_suspend_readiness_callbacks_;
- }
-
- private:
- void HandleSuspendReadiness() {
- num_pending_suspend_readiness_callbacks_--;
- }
-
- void UpdateStatus() {
- if (pause_count_ > 0) {
- pause_count_--;
- if (pause_count_ == 2)
- discharging_ = !discharging_;
- } else {
- if (discharging_)
- battery_percentage_ -= (battery_percentage_ <= 10 ? 1 : 10);
- else
- battery_percentage_ += (battery_percentage_ >= 10 ? 10 : 1);
- battery_percentage_ = std::min(std::max(battery_percentage_, 0), 100);
- // We pause at 0 and 100% so that it's easier to check those conditions.
- if (battery_percentage_ == 0 || battery_percentage_ == 100) {
- pause_count_ = 4;
- if (battery_percentage_ == 100)
- cycle_count_ = (cycle_count_ + 1) % 3;
- }
- }
-
- const int kSecondsToEmptyFullBattery = 3 * 60 * 60; // 3 hours.
- int64 remaining_battery_time =
- std::max(1, battery_percentage_ * kSecondsToEmptyFullBattery / 100);
-
- props_.Clear();
-
- switch (cycle_count_) {
- case 0:
- // Say that the system is charging with AC connected and
- // discharging without any charger connected.
- props_.set_external_power(discharging_ ?
- power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED :
- power_manager::PowerSupplyProperties_ExternalPower_AC);
- break;
- case 1:
- // Say that the system is both charging and discharging on USB
- // (i.e. a low-power charger).
- props_.set_external_power(
- power_manager::PowerSupplyProperties_ExternalPower_USB);
- break;
- case 2:
- // Say that the system is both charging and discharging on AC.
- props_.set_external_power(
- power_manager::PowerSupplyProperties_ExternalPower_AC);
- break;
- default:
- NOTREACHED() << "Unhandled cycle " << cycle_count_;
- }
-
- if (battery_percentage_ == 100 && !discharging_) {
- props_.set_battery_state(
- power_manager::PowerSupplyProperties_BatteryState_FULL);
- } else if (!discharging_) {
- props_.set_battery_state(
- power_manager::PowerSupplyProperties_BatteryState_CHARGING);
- props_.set_battery_time_to_full_sec(std::max(static_cast<int64>(1),
- kSecondsToEmptyFullBattery - remaining_battery_time));
- } else {
- props_.set_battery_state(
- power_manager::PowerSupplyProperties_BatteryState_DISCHARGING);
- props_.set_battery_time_to_empty_sec(remaining_battery_time);
- }
-
- props_.set_battery_percent(battery_percentage_);
- props_.set_is_calculating_battery_time(pause_count_ > 1);
-
- FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(props_));
- }
-
- void SetBrightness(double percent, bool user_initiated) {
- brightness_ = std::min(std::max(0.0, percent), 100.0);
- int brightness_level = static_cast<int>(brightness_);
- FOR_EACH_OBSERVER(Observer, observers_,
- BrightnessChanged(brightness_level, user_initiated));
- }
-
- void ParseCommandLineSwitch() {
- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
- if (!command_line || !command_line->HasSwitch(switches::kPowerStub))
- return;
- std::string option_str =
- command_line->GetSwitchValueASCII(switches::kPowerStub);
- base::StringPairs string_pairs;
- base::SplitStringIntoKeyValuePairs(option_str, '=', ',', &string_pairs);
- for (base::StringPairs::iterator iter = string_pairs.begin();
- iter != string_pairs.end(); ++iter) {
- ParseOption((*iter).first, (*iter).second);
- }
- }
-
- void ParseOption(const std::string& arg0, const std::string& arg1) {
- if (arg0 == "cycle" || arg0 == "interactive") {
- int seconds = 1;
- if (!arg1.empty())
- base::StringToInt(arg1, &seconds);
- power_cycle_delay_ = base::TimeDelta::FromSeconds(seconds);
- }
- }
-
- base::TimeDelta power_cycle_delay_; // Time over which to cycle power state
- bool discharging_;
- int battery_percentage_;
- double brightness_;
- int pause_count_;
- int cycle_count_;
- base::ObserverList<Observer> observers_;
- base::RepeatingTimer<PowerManagerClientStubImpl> update_timer_;
- power_manager::PowerSupplyProperties props_;
-
- // Number of callbacks returned by GetSuspendReadinessCallback() but not yet
- // invoked.
- int num_pending_suspend_readiness_callbacks_;
-
- // Note: This should remain the last member so it'll be destroyed and
- // invalidate its weak pointers before any other members are destroyed.
- base::WeakPtrFactory<PowerManagerClientStubImpl> weak_ptr_factory_;
-};
-
PowerManagerClient::PowerManagerClient() {
}
@@ -1001,7 +781,7 @@ PowerManagerClient* PowerManagerClient::Create(
if (type == REAL_DBUS_CLIENT_IMPLEMENTATION)
return new PowerManagerClientImpl();
DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type);
- return new PowerManagerClientStubImpl();
+ return new FakePowerManagerClient();
}
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698