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

Side by Side Diff: services/device/battery/battery_status_service.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_status_service.h" 5 #include "services/device/battery/battery_status_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/single_thread_task_runner.h" 11 #include "base/single_thread_task_runner.h"
12 #include "base/threading/thread_task_runner_handle.h" 12 #include "base/threading/thread_task_runner_handle.h"
13 #include "device/battery/battery_monitor_impl.h" 13 #include "services/device/battery/battery_monitor_impl.h"
14 #include "device/battery/battery_status_manager.h" 14 #include "services/device/battery/battery_status_manager.h"
15 15
16 namespace device { 16 namespace device {
17 17
18 BatteryStatusService::BatteryStatusService() 18 BatteryStatusService::BatteryStatusService()
19 : main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), 19 : main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()),
20 update_callback_(base::Bind(&BatteryStatusService::NotifyConsumers, 20 update_callback_(base::Bind(&BatteryStatusService::NotifyConsumers,
21 base::Unretained(this))), 21 base::Unretained(this))),
22 status_updated_(false), 22 status_updated_(false),
23 is_shutdown_(false) { 23 is_shutdown_(false) {
24 callback_list_.set_removal_callback( 24 callback_list_.set_removal_callback(base::Bind(
25 base::Bind(&BatteryStatusService::ConsumersChanged, 25 &BatteryStatusService::ConsumersChanged, base::Unretained(this)));
26 base::Unretained(this)));
27 } 26 }
28 27
29 BatteryStatusService::~BatteryStatusService() { 28 BatteryStatusService::~BatteryStatusService() {}
30 }
31 29
32 BatteryStatusService* BatteryStatusService::GetInstance() { 30 BatteryStatusService* BatteryStatusService::GetInstance() {
33 return base::Singleton< 31 return base::Singleton<
34 BatteryStatusService, 32 BatteryStatusService,
35 base::LeakySingletonTraits<BatteryStatusService>>::get(); 33 base::LeakySingletonTraits<BatteryStatusService>>::get();
36 } 34 }
37 35
38 std::unique_ptr<BatteryStatusService::BatteryUpdateSubscription> 36 std::unique_ptr<BatteryStatusService::BatteryUpdateSubscription>
39 BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) { 37 BatteryStatusService::AddCallback(const BatteryUpdateCallback& callback) {
40 DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); 38 DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
(...skipping 23 matching lines...) Expand all
64 62
65 if (callback_list_.empty()) { 63 if (callback_list_.empty()) {
66 battery_fetcher_->StopListeningBatteryChange(); 64 battery_fetcher_->StopListeningBatteryChange();
67 status_updated_ = false; 65 status_updated_ = false;
68 } 66 }
69 } 67 }
70 68
71 void BatteryStatusService::NotifyConsumers(const mojom::BatteryStatus& status) { 69 void BatteryStatusService::NotifyConsumers(const mojom::BatteryStatus& status) {
72 DCHECK(!is_shutdown_); 70 DCHECK(!is_shutdown_);
73 71
74 main_thread_task_runner_->PostTask(FROM_HERE, base::Bind( 72 main_thread_task_runner_->PostTask(
75 &BatteryStatusService::NotifyConsumersOnMainThread, 73 FROM_HERE, base::Bind(&BatteryStatusService::NotifyConsumersOnMainThread,
76 base::Unretained(this), 74 base::Unretained(this), status));
77 status));
78 } 75 }
79 76
80 void BatteryStatusService::NotifyConsumersOnMainThread( 77 void BatteryStatusService::NotifyConsumersOnMainThread(
81 const mojom::BatteryStatus& status) { 78 const mojom::BatteryStatus& status) {
82 DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); 79 DCHECK(main_thread_task_runner_->BelongsToCurrentThread());
83 if (callback_list_.empty()) 80 if (callback_list_.empty())
84 return; 81 return;
85 82
86 status_ = status; 83 status_ = status;
87 status_updated_ = true; 84 status_updated_ = true;
(...skipping 15 matching lines...) Expand all
103 void BatteryStatusService::SetBatteryManagerForTesting( 100 void BatteryStatusService::SetBatteryManagerForTesting(
104 std::unique_ptr<BatteryStatusManager> test_battery_manager) { 101 std::unique_ptr<BatteryStatusManager> test_battery_manager) {
105 battery_fetcher_ = std::move(test_battery_manager); 102 battery_fetcher_ = std::move(test_battery_manager);
106 status_ = mojom::BatteryStatus(); 103 status_ = mojom::BatteryStatus();
107 status_updated_ = false; 104 status_updated_ = false;
108 is_shutdown_ = false; 105 is_shutdown_ = false;
109 main_thread_task_runner_ = base::ThreadTaskRunnerHandle::Get(); 106 main_thread_task_runner_ = base::ThreadTaskRunnerHandle::Get();
110 } 107 }
111 108
112 } // namespace device 109 } // namespace device
OLDNEW
« no previous file with comments | « services/device/battery/battery_status_service.h ('k') | services/device/battery/battery_status_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698