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

Side by Side Diff: chromeos/dbus/fake_power_manager_client.cc

Issue 1206733002: ChromeOs Power Emulation Impl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved impl to exsiting FakePowerManagerClient class 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/fake_power_manager_client.h" 5 #include "chromeos/dbus/fake_power_manager_client.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "components/device_event_log/device_event_log.h"
10 11
11 namespace chromeos { 12 namespace chromeos {
12 13
13 FakePowerManagerClient::FakePowerManagerClient() 14 FakePowerManagerClient::FakePowerManagerClient()
14 : num_request_restart_calls_(0), 15 : is_charging_(false),
16 is_calculating_(false),
17 battery_percentage_(50),
18 power_source_(0),
19 num_request_restart_calls_(0),
15 num_request_shutdown_calls_(0), 20 num_request_shutdown_calls_(0),
16 num_set_policy_calls_(0), 21 num_set_policy_calls_(0),
17 num_set_is_projecting_calls_(0), 22 num_set_is_projecting_calls_(0),
18 num_pending_suspend_readiness_callbacks_(0), 23 num_pending_suspend_readiness_callbacks_(0),
19 is_projecting_(false) { 24 is_projecting_(false),
25 weak_ptr_factory_(this) {
20 } 26 }
21 27
22 FakePowerManagerClient::~FakePowerManagerClient() { 28 FakePowerManagerClient::~FakePowerManagerClient() {
23 } 29 }
24 30
25 void FakePowerManagerClient::Init(dbus::Bus* bus) { 31 void FakePowerManagerClient::Init(dbus::Bus* bus) {
32 UpdatePowerStatus();
26 } 33 }
27 34
28 void FakePowerManagerClient::AddObserver(Observer* observer) { 35 void FakePowerManagerClient::AddObserver(Observer* observer) {
29 observers_.AddObserver(observer); 36 observers_.AddObserver(observer);
30 } 37 }
31 38
32 void FakePowerManagerClient::RemoveObserver(Observer* observer) { 39 void FakePowerManagerClient::RemoveObserver(Observer* observer) {
33 observers_.RemoveObserver(observer); 40 observers_.RemoveObserver(observer);
34 } 41 }
35 42
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 FOR_EACH_OBSERVER(Observer, observers_, DarkSuspendImminent()); 129 FOR_EACH_OBSERVER(Observer, observers_, DarkSuspendImminent());
123 } 130 }
124 131
125 void FakePowerManagerClient::SendPowerButtonEvent( 132 void FakePowerManagerClient::SendPowerButtonEvent(
126 bool down, 133 bool down,
127 const base::TimeTicks& timestamp) { 134 const base::TimeTicks& timestamp) {
128 FOR_EACH_OBSERVER(Observer, observers_, 135 FOR_EACH_OBSERVER(Observer, observers_,
129 PowerButtonEventReceived(down, timestamp)); 136 PowerButtonEventReceived(down, timestamp));
130 } 137 }
131 138
139 void FakePowerManagerClient::UpdateBatteryPercentage(int percentage) {
140 battery_percentage_ = percentage;
141 UpdatePowerStatus();
142 }
143
144 void FakePowerManagerClient::UpdateBatteryFullTimeToEmpty(int time_in_hours) {
145 hours_to_empty_full_battery = time_in_hours * 60 * 60;
146 UpdatePowerStatus();
147 }
148
149 void FakePowerManagerClient::UpdateExternalPower(int power_source) {
150 power_source_ = power_source;
151 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(props_));
152 }
153
154 void FakePowerManagerClient::UpdateIsBatteryCharging(bool is_charging) {
155 is_charging_ = is_charging;
156 UpdatePowerStatus();
157 }
158
159 void FakePowerManagerClient::UpdateIsCalculatingBatteryTime(
160 bool is_calculating) {
161 is_calculating_ = is_calculating;
162 UpdatePowerStatus();
163 }
164
165 void FakePowerManagerClient::UpdatePowerStatus() {
166 int64 remaining_battery_time =
167 std::max(1, battery_percentage_ * hours_to_empty_full_battery / 100);
168
169 props_.Clear();
170
171 switch (power_source_) {
172 case 0:
173 // Say that the system is charging with AC connected or
174 // discharging without any charger connected.
175 props_.set_external_power(
176 !is_charging_
177 ? power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED
178 : power_manager::PowerSupplyProperties_ExternalPower_AC);
179 break;
180 case 1:
181 // Say that the system is both charging and discharging on USB
182 // (i.e. a low-power charger).
183 props_.set_external_power(
184 power_manager::PowerSupplyProperties_ExternalPower_USB);
185 break;
186 case 2:
187 // Say that the system is both charging and discharging on AC.
188 props_.set_external_power(
189 power_manager::PowerSupplyProperties_ExternalPower_AC);
190 break;
191 default:
192 NOTREACHED() << "Unhandled power source " << power_source_;
193 }
194
195 if (battery_percentage_ == 100 && is_charging_) {
196 props_.set_battery_state(
197 power_manager::PowerSupplyProperties_BatteryState_FULL);
198 } else if (is_charging_) {
199 props_.set_battery_state(
200 power_manager::PowerSupplyProperties_BatteryState_CHARGING);
201 props_.set_battery_time_to_full_sec(
202 std::max(static_cast<int64>(1),
203 hours_to_empty_full_battery - remaining_battery_time));
204 } else {
205 props_.set_battery_state(
206 power_manager::PowerSupplyProperties_BatteryState_DISCHARGING);
207 props_.set_battery_time_to_empty_sec(remaining_battery_time);
208 }
209
210 props_.set_is_calculating_battery_time(is_calculating_);
211 props_.set_battery_percent(battery_percentage_);
212
213 FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(props_));
214 }
215
132 void FakePowerManagerClient::HandleSuspendReadiness() { 216 void FakePowerManagerClient::HandleSuspendReadiness() {
133 CHECK(num_pending_suspend_readiness_callbacks_ > 0); 217 CHECK(num_pending_suspend_readiness_callbacks_ > 0);
134 218
135 --num_pending_suspend_readiness_callbacks_; 219 --num_pending_suspend_readiness_callbacks_;
136 } 220 }
137 221
138 } // namespace chromeos 222 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698