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

Side by Side Diff: device/battery/battery_status_service_unittest.cc

Issue 457933002: Replace Chrome IPC with Mojo IPC for querying BatteryStatus service Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « device/battery/battery_status_service.cc ('k') | device/device_tests.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "content/browser/battery_status/battery_status_service.h" 5 #include "base/bind.h"
6 #include "base/message_loop/message_loop.h"
7 #include "base/run_loop.h"
8 #include "device/battery/battery_status_manager.h"
9 #include "device/battery/battery_status_service.h"
10 #include "testing/gtest/include/gtest/gtest.h"
6 11
7 #include "base/bind.h" 12 namespace device {
8 #include "base/run_loop.h"
9 #include "content/browser/battery_status/battery_status_manager.h"
10 #include "content/public/test/test_browser_thread_bundle.h"
11
12 namespace content {
13 13
14 namespace { 14 namespace {
15 15
16 class FakeBatteryManager : public BatteryStatusManager { 16 class FakeBatteryManager : public BatteryStatusManager {
17 public: 17 public:
18 explicit FakeBatteryManager( 18 explicit FakeBatteryManager(
19 const BatteryStatusService::BatteryUpdateCallback& callback) 19 const BatteryStatusService::BatteryUpdateCallback& callback)
20 : callback_(callback), start_invoked_count_(0), stop_invoked_count_(0) {} 20 : callback_(callback), start_invoked_count_(0), stop_invoked_count_(0) {}
21 virtual ~FakeBatteryManager() { } 21 virtual ~FakeBatteryManager() { }
22 22
23 // Methods from Battery Status Manager 23 // Methods from Battery Status Manager
24 virtual bool StartListeningBatteryChange() OVERRIDE { 24 virtual bool StartListeningBatteryChange() OVERRIDE {
25 start_invoked_count_++; 25 start_invoked_count_++;
26 return true; 26 return true;
27 } 27 }
28 28
29 virtual void StopListeningBatteryChange() OVERRIDE { 29 virtual void StopListeningBatteryChange() OVERRIDE {
30 stop_invoked_count_++; 30 stop_invoked_count_++;
31 } 31 }
32 32
33 void InvokeUpdateCallback(const blink::WebBatteryStatus& status) { 33 void InvokeUpdateCallback(const BatteryStatus& status) {
34 callback_.Run(status); 34 callback_.Run(status);
35 } 35 }
36 36
37 int start_invoked_count() const { return start_invoked_count_; } 37 int start_invoked_count() const { return start_invoked_count_; }
38 int stop_invoked_count() const { return stop_invoked_count_; } 38 int stop_invoked_count() const { return stop_invoked_count_; }
39 39
40 private: 40 private:
41 BatteryStatusService::BatteryUpdateCallback callback_; 41 BatteryStatusService::BatteryUpdateCallback callback_;
42 int start_invoked_count_; 42 int start_invoked_count_;
43 int stop_invoked_count_; 43 int stop_invoked_count_;
44 44
45 DISALLOW_COPY_AND_ASSIGN(FakeBatteryManager); 45 DISALLOW_COPY_AND_ASSIGN(FakeBatteryManager);
46 }; 46 };
47 47
48 class BatteryStatusServiceTest : public testing::Test { 48 class BatteryStatusServiceTest : public testing::Test {
49 public: 49 public:
50 BatteryStatusServiceTest() 50 BatteryStatusServiceTest()
51 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), 51 : battery_service_(NULL),
52 battery_service_(0), 52 battery_manager_(NULL),
53 battery_manager_(0),
54 callback1_invoked_count_(0), 53 callback1_invoked_count_(0),
55 callback2_invoked_count_(0) { 54 callback2_invoked_count_(0) {
56 } 55 }
57 virtual ~BatteryStatusServiceTest() { } 56 virtual ~BatteryStatusServiceTest() { }
58 57
59 protected: 58 protected:
60 typedef BatteryStatusService::BatteryUpdateSubscription BatterySubscription; 59 typedef BatteryStatusService::BatteryUpdateSubscription BatterySubscription;
61 60
62 virtual void SetUp() OVERRIDE { 61 virtual void SetUp() OVERRIDE {
63 callback1_ = base::Bind(&BatteryStatusServiceTest::Callback1, 62 callback1_ = base::Bind(&BatteryStatusServiceTest::Callback1,
64 base::Unretained(this)); 63 base::Unretained(this));
65 callback2_ = base::Bind(&BatteryStatusServiceTest::Callback2, 64 callback2_ = base::Bind(&BatteryStatusServiceTest::Callback2,
66 base::Unretained(this)); 65 base::Unretained(this));
67 battery_service_ = BatteryStatusService::GetInstance(); 66 battery_service_ = BatteryStatusService::GetInstance();
68 battery_manager_ = new FakeBatteryManager( 67
69 battery_service_->GetUpdateCallbackForTesting()); 68 // We keep a raw pointer to the FakeBatteryManager, which we expect to
70 battery_service_->SetBatteryManagerForTesting(battery_manager_); 69 // remain valid for the lifetime of the BatteryStatusService.
70 scoped_ptr<FakeBatteryManager> battery_manager(new FakeBatteryManager(
71 battery_service_->GetUpdateCallbackForTesting()));
72 battery_manager_ = battery_manager.get();
73
74 battery_service_->SetBatteryManagerForTesting(
75 battery_manager.PassAs<BatteryStatusManager>());
71 } 76 }
72 77
73 virtual void TearDown() OVERRIDE { 78 virtual void TearDown() OVERRIDE {
74 base::RunLoop().RunUntilIdle(); 79 base::RunLoop().RunUntilIdle();
75 battery_service_->SetBatteryManagerForTesting(0); 80 battery_service_->SetBatteryManagerForTesting(
81 scoped_ptr<BatteryStatusManager>());
76 } 82 }
77 83
78 FakeBatteryManager* battery_manager() { 84 FakeBatteryManager* battery_manager() {
79 return battery_manager_; 85 return battery_manager_;
80 } 86 }
81 87
82 scoped_ptr<BatterySubscription> AddCallback( 88 scoped_ptr<BatterySubscription> AddCallback(
83 const BatteryStatusService::BatteryUpdateCallback& callback) { 89 const BatteryStatusService::BatteryUpdateCallback& callback) {
84 return battery_service_->AddCallback(callback); 90 return battery_service_->AddCallback(callback);
85 } 91 }
86 92
87 int callback1_invoked_count() const { 93 int callback1_invoked_count() const {
88 return callback1_invoked_count_; 94 return callback1_invoked_count_;
89 } 95 }
90 96
91 int callback2_invoked_count() const { 97 int callback2_invoked_count() const {
92 return callback2_invoked_count_; 98 return callback2_invoked_count_;
93 } 99 }
94 100
95 const blink::WebBatteryStatus& battery_status() const { 101 const BatteryStatus& battery_status() const {
96 return battery_status_; 102 return battery_status_;
97 } 103 }
98 104
99 const BatteryStatusService::BatteryUpdateCallback& callback1() const { 105 const BatteryStatusService::BatteryUpdateCallback& callback1() const {
100 return callback1_; 106 return callback1_;
101 } 107 }
102 108
103 const BatteryStatusService::BatteryUpdateCallback& callback2() const { 109 const BatteryStatusService::BatteryUpdateCallback& callback2() const {
104 return callback2_; 110 return callback2_;
105 } 111 }
106 112
107 private: 113 private:
108 void Callback1(const blink::WebBatteryStatus& status) { 114 void Callback1(const BatteryStatus& status) {
109 callback1_invoked_count_++; 115 callback1_invoked_count_++;
110 battery_status_ = status; 116 battery_status_ = status;
111 } 117 }
112 118
113 void Callback2(const blink::WebBatteryStatus& status) { 119 void Callback2(const BatteryStatus& status) {
114 callback2_invoked_count_++; 120 callback2_invoked_count_++;
115 battery_status_ = status; 121 battery_status_ = status;
116 } 122 }
117 123
118 content::TestBrowserThreadBundle thread_bundle_; 124 base::MessageLoop message_loop_;
119 BatteryStatusService* battery_service_; 125 BatteryStatusService* battery_service_;
120 FakeBatteryManager* battery_manager_; 126 FakeBatteryManager* battery_manager_;
121 BatteryStatusService::BatteryUpdateCallback callback1_; 127 BatteryStatusService::BatteryUpdateCallback callback1_;
122 BatteryStatusService::BatteryUpdateCallback callback2_; 128 BatteryStatusService::BatteryUpdateCallback callback2_;
123 int callback1_invoked_count_; 129 int callback1_invoked_count_;
124 int callback2_invoked_count_; 130 int callback2_invoked_count_;
125 blink::WebBatteryStatus battery_status_; 131 BatteryStatus battery_status_;
126 132
127 DISALLOW_COPY_AND_ASSIGN(BatteryStatusServiceTest); 133 DISALLOW_COPY_AND_ASSIGN(BatteryStatusServiceTest);
128 }; 134 };
129 135
130 TEST_F(BatteryStatusServiceTest, AddFirstCallback) { 136 TEST_F(BatteryStatusServiceTest, AddFirstCallback) {
131 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1()); 137 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
132 EXPECT_EQ(1, battery_manager()->start_invoked_count()); 138 EXPECT_EQ(1, battery_manager()->start_invoked_count());
133 EXPECT_EQ(0, battery_manager()->stop_invoked_count()); 139 EXPECT_EQ(0, battery_manager()->stop_invoked_count());
134 subscription1.reset(); 140 subscription1.reset();
135 EXPECT_EQ(1, battery_manager()->start_invoked_count()); 141 EXPECT_EQ(1, battery_manager()->start_invoked_count());
136 EXPECT_EQ(1, battery_manager()->stop_invoked_count()); 142 EXPECT_EQ(1, battery_manager()->stop_invoked_count());
137 } 143 }
138 144
139 TEST_F(BatteryStatusServiceTest, AddCallbackAfterUpdate) { 145 TEST_F(BatteryStatusServiceTest, AddCallbackAfterUpdate) {
140 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1()); 146 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
141 blink::WebBatteryStatus status; 147 BatteryStatus status;
142 battery_manager()->InvokeUpdateCallback(status); 148 battery_manager()->InvokeUpdateCallback(status);
143 base::RunLoop().RunUntilIdle(); 149 base::RunLoop().RunUntilIdle();
144 EXPECT_EQ(1, callback1_invoked_count()); 150 EXPECT_EQ(1, callback1_invoked_count());
145 EXPECT_EQ(0, callback2_invoked_count()); 151 EXPECT_EQ(0, callback2_invoked_count());
146 152
147 scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2()); 153 scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2());
148 EXPECT_EQ(1, callback1_invoked_count()); 154 EXPECT_EQ(1, callback1_invoked_count());
149 EXPECT_EQ(1, callback2_invoked_count()); 155 EXPECT_EQ(1, callback2_invoked_count());
150 } 156 }
151 157
152 TEST_F(BatteryStatusServiceTest, TwoCallbacksUpdate) { 158 TEST_F(BatteryStatusServiceTest, TwoCallbacksUpdate) {
153 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1()); 159 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
154 scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2()); 160 scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2());
155 161
156 blink::WebBatteryStatus status; 162 BatteryStatus status;
157 status.charging = true; 163 status.charging = true;
158 status.chargingTime = 100; 164 status.charging_time = 100;
159 status.dischargingTime = 200; 165 status.discharging_time = 200;
160 status.level = 0.5; 166 status.level = 0.5;
161 battery_manager()->InvokeUpdateCallback(status); 167 battery_manager()->InvokeUpdateCallback(status);
162 base::RunLoop().RunUntilIdle(); 168 base::RunLoop().RunUntilIdle();
163 169
164 EXPECT_EQ(1, callback1_invoked_count()); 170 EXPECT_EQ(1, callback1_invoked_count());
165 EXPECT_EQ(1, callback2_invoked_count()); 171 EXPECT_EQ(1, callback2_invoked_count());
166 EXPECT_EQ(status.charging, battery_status().charging); 172 EXPECT_EQ(status.charging, battery_status().charging);
167 EXPECT_EQ(status.chargingTime, battery_status().chargingTime); 173 EXPECT_EQ(status.charging_time, battery_status().charging_time);
168 EXPECT_EQ(status.dischargingTime, battery_status().dischargingTime); 174 EXPECT_EQ(status.discharging_time, battery_status().discharging_time);
169 EXPECT_EQ(status.level, battery_status().level); 175 EXPECT_EQ(status.level, battery_status().level);
170 } 176 }
171 177
172 TEST_F(BatteryStatusServiceTest, RemoveOneCallback) { 178 TEST_F(BatteryStatusServiceTest, RemoveOneCallback) {
173 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1()); 179 scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
174 scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2()); 180 scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2());
175 181
176 blink::WebBatteryStatus status; 182 BatteryStatus status;
177 battery_manager()->InvokeUpdateCallback(status); 183 battery_manager()->InvokeUpdateCallback(status);
178 base::RunLoop().RunUntilIdle(); 184 base::RunLoop().RunUntilIdle();
179 EXPECT_EQ(1, callback1_invoked_count()); 185 EXPECT_EQ(1, callback1_invoked_count());
180 EXPECT_EQ(1, callback2_invoked_count()); 186 EXPECT_EQ(1, callback2_invoked_count());
181 187
182 subscription1.reset(); 188 subscription1.reset();
183 battery_manager()->InvokeUpdateCallback(status); 189 battery_manager()->InvokeUpdateCallback(status);
184 base::RunLoop().RunUntilIdle(); 190 base::RunLoop().RunUntilIdle();
185 EXPECT_EQ(1, callback1_invoked_count()); 191 EXPECT_EQ(1, callback1_invoked_count());
186 EXPECT_EQ(2, callback2_invoked_count()); 192 EXPECT_EQ(2, callback2_invoked_count());
187 } 193 }
188 194
189 } // namespace 195 } // namespace
190 196
191 } // namespace content 197 } // namespace device
OLDNEW
« no previous file with comments | « device/battery/battery_status_service.cc ('k') | device/device_tests.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698