OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "device/battery/battery_status_manager_win.h" | 5 #include "device/battery/battery_status_manager_win.h" |
6 | 6 |
| 7 #include <memory> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/macros.h" | 10 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
11 #include "base/strings/string16.h" | 12 #include "base/strings/string16.h" |
12 #include "base/win/message_window.h" | 13 #include "base/win/message_window.h" |
13 #include "base/win/windows_version.h" | 14 #include "base/win/windows_version.h" |
14 #include "device/battery/battery_status_manager.h" | 15 #include "device/battery/battery_status_manager.h" |
15 | 16 |
16 namespace device { | 17 namespace device { |
17 | 18 |
18 namespace { | 19 namespace { |
19 | 20 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 LOG(ERROR) << "Failed to create message window: " << kWindowClassName; | 146 LOG(ERROR) << "Failed to create message window: " << kWindowClassName; |
146 window_.reset(); | 147 window_.reset(); |
147 return false; | 148 return false; |
148 } | 149 } |
149 return true; | 150 return true; |
150 } | 151 } |
151 | 152 |
152 HPOWERNOTIFY power_handle_; | 153 HPOWERNOTIFY power_handle_; |
153 HPOWERNOTIFY battery_change_handle_; | 154 HPOWERNOTIFY battery_change_handle_; |
154 BatteryCallback callback_; | 155 BatteryCallback callback_; |
155 scoped_ptr<base::win::MessageWindow> window_; | 156 std::unique_ptr<base::win::MessageWindow> window_; |
156 | 157 |
157 DISALLOW_COPY_AND_ASSIGN(BatteryStatusObserver); | 158 DISALLOW_COPY_AND_ASSIGN(BatteryStatusObserver); |
158 }; | 159 }; |
159 | 160 |
160 class BatteryStatusManagerWin : public BatteryStatusManager { | 161 class BatteryStatusManagerWin : public BatteryStatusManager { |
161 public: | 162 public: |
162 explicit BatteryStatusManagerWin(const BatteryCallback& callback) | 163 explicit BatteryStatusManagerWin(const BatteryCallback& callback) |
163 : battery_observer_(new BatteryStatusObserver(callback)) {} | 164 : battery_observer_(new BatteryStatusObserver(callback)) {} |
164 ~BatteryStatusManagerWin() override { battery_observer_->Stop(); } | 165 ~BatteryStatusManagerWin() override { battery_observer_->Stop(); } |
165 | 166 |
166 public: | 167 public: |
167 // BatteryStatusManager: | 168 // BatteryStatusManager: |
168 bool StartListeningBatteryChange() override { | 169 bool StartListeningBatteryChange() override { |
169 battery_observer_->Start(); | 170 battery_observer_->Start(); |
170 return true; | 171 return true; |
171 } | 172 } |
172 | 173 |
173 void StopListeningBatteryChange() override { battery_observer_->Stop(); } | 174 void StopListeningBatteryChange() override { battery_observer_->Stop(); } |
174 | 175 |
175 private: | 176 private: |
176 scoped_ptr<BatteryStatusObserver> battery_observer_; | 177 std::unique_ptr<BatteryStatusObserver> battery_observer_; |
177 | 178 |
178 DISALLOW_COPY_AND_ASSIGN(BatteryStatusManagerWin); | 179 DISALLOW_COPY_AND_ASSIGN(BatteryStatusManagerWin); |
179 }; | 180 }; |
180 | 181 |
181 } // namespace | 182 } // namespace |
182 | 183 |
183 BatteryStatus ComputeWebBatteryStatus(const SYSTEM_POWER_STATUS& win_status) { | 184 BatteryStatus ComputeWebBatteryStatus(const SYSTEM_POWER_STATUS& win_status) { |
184 BatteryStatus status; | 185 BatteryStatus status; |
185 status.charging = win_status.ACLineStatus != WIN_AC_LINE_STATUS_OFFLINE; | 186 status.charging = win_status.ACLineStatus != WIN_AC_LINE_STATUS_OFFLINE; |
186 | 187 |
(...skipping 12 matching lines...) Expand all Loading... |
199 } else { | 200 } else { |
200 // Set charging_time to +Infinity if not fully charged, otherwise leave the | 201 // Set charging_time to +Infinity if not fully charged, otherwise leave the |
201 // default value, which is 0. | 202 // default value, which is 0. |
202 if (status.level < 1) | 203 if (status.level < 1) |
203 status.charging_time = std::numeric_limits<double>::infinity(); | 204 status.charging_time = std::numeric_limits<double>::infinity(); |
204 } | 205 } |
205 return status; | 206 return status; |
206 } | 207 } |
207 | 208 |
208 // static | 209 // static |
209 scoped_ptr<BatteryStatusManager> BatteryStatusManager::Create( | 210 std::unique_ptr<BatteryStatusManager> BatteryStatusManager::Create( |
210 const BatteryStatusService::BatteryUpdateCallback& callback) { | 211 const BatteryStatusService::BatteryUpdateCallback& callback) { |
211 return scoped_ptr<BatteryStatusManager>( | 212 return std::unique_ptr<BatteryStatusManager>( |
212 new BatteryStatusManagerWin(callback)); | 213 new BatteryStatusManagerWin(callback)); |
213 } | 214 } |
214 | 215 |
215 } // namespace device | 216 } // namespace device |
OLD | NEW |