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

Side by Side Diff: services/device/battery/battery_monitor_impl.cc

Issue 2818673003: [DeviceService] Expose battery monitoring solely via the Device Service (Closed)
Patch Set: Java file format change Created 3 years, 7 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 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_monitor_impl.h" 5 #include "services/device/battery/battery_monitor_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "mojo/public/cpp/bindings/strong_binding.h" 12 #include "mojo/public/cpp/bindings/strong_binding.h"
13 13
14 namespace device { 14 namespace device {
15 15
16 // static 16 // static
17 void BatteryMonitorImpl::Create(mojom::BatteryMonitorRequest request) { 17 void BatteryMonitorImpl::Create(mojom::BatteryMonitorRequest request) {
18 auto* impl = new BatteryMonitorImpl; 18 auto* impl = new BatteryMonitorImpl;
19 auto binding = 19 auto binding =
20 mojo::MakeStrongBinding(base::WrapUnique(impl), std::move(request)); 20 mojo::MakeStrongBinding(base::WrapUnique(impl), std::move(request));
21 impl->binding_ = binding; 21 impl->binding_ = binding;
22 } 22 }
23 23
24 BatteryMonitorImpl::BatteryMonitorImpl() : status_to_report_(false) { 24 BatteryMonitorImpl::BatteryMonitorImpl() : status_to_report_(false) {
25 // NOTE: DidChange may be called before AddCallback returns. This is done to 25 // NOTE: DidChange may be called before AddCallback returns. This is done to
26 // report current status. 26 // report current status.
27 subscription_ = BatteryStatusService::GetInstance()->AddCallback( 27 subscription_ = BatteryStatusService::GetInstance()->AddCallback(
28 base::Bind(&BatteryMonitorImpl::DidChange, base::Unretained(this))); 28 base::Bind(&BatteryMonitorImpl::DidChange, base::Unretained(this)));
29 } 29 }
30 30
31 BatteryMonitorImpl::~BatteryMonitorImpl() { 31 BatteryMonitorImpl::~BatteryMonitorImpl() {}
32 }
33 32
34 void BatteryMonitorImpl::QueryNextStatus( 33 void BatteryMonitorImpl::QueryNextStatus(
35 const QueryNextStatusCallback& callback) { 34 const QueryNextStatusCallback& callback) {
36 if (!callback_.is_null()) { 35 if (!callback_.is_null()) {
37 DVLOG(1) << "Overlapped call to QueryNextStatus!"; 36 DVLOG(1) << "Overlapped call to QueryNextStatus!";
38 binding_->Close(); 37 binding_->Close();
39 return; 38 return;
40 } 39 }
41 callback_ = callback; 40 callback_ = callback;
42 41
43 if (status_to_report_) 42 if (status_to_report_)
44 ReportStatus(); 43 ReportStatus();
45 } 44 }
46 45
47 void BatteryMonitorImpl::RegisterSubscription() { 46 void BatteryMonitorImpl::RegisterSubscription() {}
48 }
49 47
50 void BatteryMonitorImpl::DidChange(const mojom::BatteryStatus& battery_status) { 48 void BatteryMonitorImpl::DidChange(const mojom::BatteryStatus& battery_status) {
51 status_ = battery_status; 49 status_ = battery_status;
52 status_to_report_ = true; 50 status_to_report_ = true;
53 51
54 if (!callback_.is_null()) 52 if (!callback_.is_null())
55 ReportStatus(); 53 ReportStatus();
56 } 54 }
57 55
58 void BatteryMonitorImpl::ReportStatus() { 56 void BatteryMonitorImpl::ReportStatus() {
59 callback_.Run(status_.Clone()); 57 callback_.Run(status_.Clone());
60 callback_.Reset(); 58 callback_.Reset();
61 59
62 status_to_report_ = false; 60 status_to_report_ = false;
63 } 61 }
64 62
65 } // namespace device 63 } // namespace device
OLDNEW
« no previous file with comments | « services/device/battery/battery_monitor_impl.h ('k') | services/device/battery/battery_monitor_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698