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

Side by Side Diff: services/device/wake_lock/wake_lock_service_impl_unittest.cc

Issue 2883903002: Add service unittest for WakeLockServiceImpl. (Closed)
Patch Set: 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
(Empty)
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/run_loop.h"
6 #include "device/wake_lock/public/interfaces/wake_lock_context.mojom.h"
7 #include "device/wake_lock/public/interfaces/wake_lock_provider.mojom.h"
8 #include "device/wake_lock/public/interfaces/wake_lock_service.mojom.h"
9 #include "mojo/public/cpp/bindings/interface_ptr.h"
10 #include "services/device/device_service_test_base.h"
11 #include "services/device/public/interfaces/constants.mojom.h"
12
13 namespace device {
14
15 namespace {
16
17 void OnHasWakeLock(bool* out, base::Closure quit_closure, bool has_wakelock) {
blundell 2017/05/16 13:37:55 nit: I would just make this a method of WakeLockSe
ke.he 2017/05/17 07:19:54 Done.
18 *out = has_wakelock;
19 quit_closure.Run();
20 }
21
22 class WakeLockServiceImplTest : public DeviceServiceTestBase {
23 public:
24 WakeLockServiceImplTest() = default;
25 ~WakeLockServiceImplTest() override = default;
26
27 protected:
28 void SetUp() override {
29 DeviceServiceTestBase::SetUp();
30 connector()->BindInterface(mojom::kServiceName, &wake_lock_provider_);
31
32 wake_lock_provider_->GetWakeLockWithoutContext(
33 device::mojom::WakeLockType::PreventAppSuspension,
34 device::mojom::WakeLockReason::ReasonOther, "WakeLockServiceImplTest",
35 mojo::MakeRequest(&wake_lock_));
36 }
37
38 bool HasWakeLock() {
39 bool has_wakelock = false;
40
41 base::RunLoop run_loop;
42 wake_lock_->HasWakeLockForTests(
43 base::Bind(&OnHasWakeLock, &has_wakelock, run_loop.QuitClosure()));
44 run_loop.Run();
45
46 return has_wakelock;
47 }
48
49 mojom::WakeLockProviderPtr wake_lock_provider_;
50 mojom::WakeLockServicePtr wake_lock_;
51
52 DISALLOW_COPY_AND_ASSIGN(WakeLockServiceImplTest);
53 };
54
55 TEST_F(WakeLockServiceImplTest, RequestThenCancel) {
56 EXPECT_FALSE(HasWakeLock());
57
58 wake_lock_->RequestWakeLock();
59 EXPECT_TRUE(HasWakeLock());
60
61 wake_lock_->CancelWakeLock();
62 EXPECT_FALSE(HasWakeLock());
63 }
64
65 TEST_F(WakeLockServiceImplTest, CancelThenRequest) {
66 EXPECT_FALSE(HasWakeLock());
67
68 wake_lock_->CancelWakeLock();
69 EXPECT_FALSE(HasWakeLock());
70
71 wake_lock_->RequestWakeLock();
72 EXPECT_TRUE(HasWakeLock());
73
74 wake_lock_->CancelWakeLock();
75 EXPECT_FALSE(HasWakeLock());
76 }
77
78 TEST_F(WakeLockServiceImplTest, MultipleRequests) {
79 EXPECT_FALSE(HasWakeLock());
80
81 wake_lock_->RequestWakeLock();
82 wake_lock_->RequestWakeLock();
83 wake_lock_->RequestWakeLock();
84 EXPECT_TRUE(HasWakeLock());
85
86 wake_lock_->CancelWakeLock();
87 EXPECT_FALSE(HasWakeLock());
88 }
89
90 TEST_F(WakeLockServiceImplTest, OnWakeLockProviderConnectionError) {
91 EXPECT_FALSE(HasWakeLock());
92
93 wake_lock_->RequestWakeLock();
94 EXPECT_TRUE(HasWakeLock());
95
96 wake_lock_provider_.reset();
97 base::RunLoop().RunUntilIdle();
98
99 EXPECT_TRUE(HasWakeLock());
100 wake_lock_->CancelWakeLock();
101 EXPECT_FALSE(HasWakeLock());
102 }
103
104 TEST_F(WakeLockServiceImplTest, MultipleClients) {
105 EXPECT_FALSE(HasWakeLock());
106
107 mojom::WakeLockServicePtr wake_lock_1;
108 mojom::WakeLockServicePtr wake_lock_2;
109 mojom::WakeLockServicePtr wake_lock_3;
110 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1));
111 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2));
112 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3));
113
114 EXPECT_FALSE(HasWakeLock());
115
116 wake_lock_1->RequestWakeLock();
117 wake_lock_2->RequestWakeLock();
118 wake_lock_3->RequestWakeLock();
119 EXPECT_TRUE(HasWakeLock());
120
121 wake_lock_1->CancelWakeLock();
122 wake_lock_2->CancelWakeLock();
123 EXPECT_TRUE(HasWakeLock());
124
125 wake_lock_3->CancelWakeLock();
126 EXPECT_FALSE(HasWakeLock());
127 }
128
129 TEST_F(WakeLockServiceImplTest, OnWakeLockConnectionError) {
130 EXPECT_FALSE(HasWakeLock());
131
132 mojom::WakeLockServicePtr wake_lock_1;
133 mojom::WakeLockServicePtr wake_lock_2;
134 mojom::WakeLockServicePtr wake_lock_3;
135 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1));
136 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2));
137 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3));
138
139 EXPECT_FALSE(HasWakeLock());
140
141 wake_lock_1->RequestWakeLock();
142 wake_lock_2->RequestWakeLock();
143 wake_lock_3->RequestWakeLock();
144 EXPECT_TRUE(HasWakeLock());
145
146 wake_lock_1.reset();
147 base::RunLoop().RunUntilIdle();
148 EXPECT_TRUE(HasWakeLock());
149
150 wake_lock_2.reset();
151 wake_lock_3.reset();
152 base::RunLoop().RunUntilIdle();
153 EXPECT_FALSE(HasWakeLock());
154 }
155
156 TEST_F(WakeLockServiceImplTest, MixedTest) {
blundell 2017/05/16 13:37:55 nit: All of these tests could use 1 line of docume
ke.he 2017/05/17 07:19:54 Done.
157 EXPECT_FALSE(HasWakeLock());
158
159 mojom::WakeLockServicePtr wake_lock_1;
160 mojom::WakeLockServicePtr wake_lock_2;
161 mojom::WakeLockServicePtr wake_lock_3;
162 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1));
163 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2));
164 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3));
165
166 EXPECT_FALSE(HasWakeLock());
167
168 wake_lock_1->RequestWakeLock();
blundell 2017/05/16 13:37:55 This could use a line of documentation on what the
ke.he 2017/05/17 07:19:54 Done.
169 wake_lock_1->CancelWakeLock();
170 wake_lock_2->RequestWakeLock();
171 wake_lock_1->RequestWakeLock();
172 wake_lock_1->RequestWakeLock();
173 wake_lock_3->CancelWakeLock();
174 wake_lock_3->CancelWakeLock();
175 wake_lock_2->CancelWakeLock();
176 wake_lock_3->RequestWakeLock();
177 wake_lock_2.reset();
178 EXPECT_TRUE(HasWakeLock());
179
180 wake_lock_1.reset();
181 base::RunLoop().RunUntilIdle();
182 EXPECT_TRUE(HasWakeLock());
183
184 wake_lock_3->CancelWakeLock();
185 EXPECT_FALSE(HasWakeLock());
186 }
187
188 } // namespace
189
190 } // namespace device
OLDNEW
« device/power_save_blocker/power_save_blocker_x11.cc ('K') | « services/device/wake_lock/OWNERS ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698