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

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

Issue 2921823002: Rationalize WakeLock naming conventions (Closed)
Patch Set: rebase Created 3 years, 6 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "base/run_loop.h" 5 #include "base/run_loop.h"
6 #include "device/wake_lock/public/interfaces/wake_lock.mojom.h"
6 #include "device/wake_lock/public/interfaces/wake_lock_context.mojom.h" 7 #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_provider.mojom.h"
8 #include "device/wake_lock/public/interfaces/wake_lock_service.mojom.h"
9 #include "device/wake_lock/wake_lock_provider.h" 9 #include "device/wake_lock/wake_lock_provider.h"
10 #include "mojo/public/cpp/bindings/interface_ptr.h" 10 #include "mojo/public/cpp/bindings/interface_ptr.h"
11 #include "services/device/device_service_test_base.h" 11 #include "services/device/device_service_test_base.h"
12 #include "services/device/public/interfaces/constants.mojom.h" 12 #include "services/device/public/interfaces/constants.mojom.h"
13 13
14 namespace device { 14 namespace device {
15 15
16 namespace { 16 namespace {
17 17
18 class WakeLockServiceImplTest : public DeviceServiceTestBase { 18 class WakeLockTest : public DeviceServiceTestBase {
19 public: 19 public:
20 WakeLockServiceImplTest() = default; 20 WakeLockTest() = default;
21 ~WakeLockServiceImplTest() override = default; 21 ~WakeLockTest() override = default;
22 22
23 protected: 23 protected:
24 void SetUp() override { 24 void SetUp() override {
25 DeviceServiceTestBase::SetUp(); 25 DeviceServiceTestBase::SetUp();
26 connector()->BindInterface(mojom::kServiceName, &wake_lock_provider_); 26 connector()->BindInterface(mojom::kServiceName, &wake_lock_provider_);
27 27
28 WakeLockProvider::is_in_service_unittest_ = true; 28 WakeLockProvider::is_in_unittest_ = true;
29 wake_lock_provider_->GetWakeLockWithoutContext( 29 wake_lock_provider_->GetWakeLockWithoutContext(
30 device::mojom::WakeLockType::PreventAppSuspension, 30 device::mojom::WakeLockType::PreventAppSuspension,
31 device::mojom::WakeLockReason::ReasonOther, "WakeLockServiceImplTest", 31 device::mojom::WakeLockReason::ReasonOther, "WakeLockTest",
32 mojo::MakeRequest(&wake_lock_)); 32 mojo::MakeRequest(&wake_lock_));
33 } 33 }
34 34
35 void OnHasWakeLock(base::Closure quit_closure, bool has_wakelock) { 35 void OnHasWakeLock(base::Closure quit_closure, bool has_wakelock) {
36 has_wakelock_ = has_wakelock; 36 has_wakelock_ = has_wakelock;
37 quit_closure.Run(); 37 quit_closure.Run();
38 } 38 }
39 39
40 bool HasWakeLock() { 40 bool HasWakeLock() {
41 has_wakelock_ = false; 41 has_wakelock_ = false;
42 42
43 base::RunLoop run_loop; 43 base::RunLoop run_loop;
44 wake_lock_->HasWakeLockForTests( 44 wake_lock_->HasWakeLockForTests(base::Bind(&WakeLockTest::OnHasWakeLock,
45 base::Bind(&WakeLockServiceImplTest::OnHasWakeLock, 45 base::Unretained(this),
46 base::Unretained(this), run_loop.QuitClosure())); 46 run_loop.QuitClosure()));
47 run_loop.Run(); 47 run_loop.Run();
48 48
49 return has_wakelock_; 49 return has_wakelock_;
50 } 50 }
51 51
52 bool has_wakelock_; 52 bool has_wakelock_;
53 53
54 mojom::WakeLockProviderPtr wake_lock_provider_; 54 mojom::WakeLockProviderPtr wake_lock_provider_;
55 mojom::WakeLockServicePtr wake_lock_; 55 mojom::WakeLockPtr wake_lock_;
56 56
57 DISALLOW_COPY_AND_ASSIGN(WakeLockServiceImplTest); 57 DISALLOW_COPY_AND_ASSIGN(WakeLockTest);
58 }; 58 };
59 59
60 // Request a wake lock, then cancel. 60 // Request a wake lock, then cancel.
61 TEST_F(WakeLockServiceImplTest, RequestThenCancel) { 61 TEST_F(WakeLockTest, RequestThenCancel) {
62 EXPECT_FALSE(HasWakeLock()); 62 EXPECT_FALSE(HasWakeLock());
63 63
64 wake_lock_->RequestWakeLock(); 64 wake_lock_->RequestWakeLock();
65 EXPECT_TRUE(HasWakeLock()); 65 EXPECT_TRUE(HasWakeLock());
66 66
67 wake_lock_->CancelWakeLock(); 67 wake_lock_->CancelWakeLock();
68 EXPECT_FALSE(HasWakeLock()); 68 EXPECT_FALSE(HasWakeLock());
69 } 69 }
70 70
71 // Cancel a wake lock first, which should have no effect. 71 // Cancel a wake lock first, which should have no effect.
72 TEST_F(WakeLockServiceImplTest, CancelThenRequest) { 72 TEST_F(WakeLockTest, CancelThenRequest) {
73 EXPECT_FALSE(HasWakeLock()); 73 EXPECT_FALSE(HasWakeLock());
74 74
75 wake_lock_->CancelWakeLock(); 75 wake_lock_->CancelWakeLock();
76 EXPECT_FALSE(HasWakeLock()); 76 EXPECT_FALSE(HasWakeLock());
77 77
78 wake_lock_->RequestWakeLock(); 78 wake_lock_->RequestWakeLock();
79 EXPECT_TRUE(HasWakeLock()); 79 EXPECT_TRUE(HasWakeLock());
80 80
81 wake_lock_->CancelWakeLock(); 81 wake_lock_->CancelWakeLock();
82 EXPECT_FALSE(HasWakeLock()); 82 EXPECT_FALSE(HasWakeLock());
83 } 83 }
84 84
85 // Send multiple requests, which should be coalesced as one request. 85 // Send multiple requests, which should be coalesced as one request.
86 TEST_F(WakeLockServiceImplTest, MultipleRequests) { 86 TEST_F(WakeLockTest, MultipleRequests) {
87 EXPECT_FALSE(HasWakeLock()); 87 EXPECT_FALSE(HasWakeLock());
88 88
89 wake_lock_->RequestWakeLock(); 89 wake_lock_->RequestWakeLock();
90 wake_lock_->RequestWakeLock(); 90 wake_lock_->RequestWakeLock();
91 wake_lock_->RequestWakeLock(); 91 wake_lock_->RequestWakeLock();
92 EXPECT_TRUE(HasWakeLock()); 92 EXPECT_TRUE(HasWakeLock());
93 93
94 wake_lock_->CancelWakeLock(); 94 wake_lock_->CancelWakeLock();
95 EXPECT_FALSE(HasWakeLock()); 95 EXPECT_FALSE(HasWakeLock());
96 } 96 }
97 97
98 // WakeLockProvider connection broken doesn't affect WakeLockService. 98 // WakeLockProvider connection broken doesn't affect WakeLock.
99 TEST_F(WakeLockServiceImplTest, OnWakeLockProviderConnectionError) { 99 TEST_F(WakeLockTest, OnWakeLockProviderConnectionError) {
100 EXPECT_FALSE(HasWakeLock()); 100 EXPECT_FALSE(HasWakeLock());
101 101
102 wake_lock_->RequestWakeLock(); 102 wake_lock_->RequestWakeLock();
103 EXPECT_TRUE(HasWakeLock()); 103 EXPECT_TRUE(HasWakeLock());
104 104
105 wake_lock_provider_.reset(); 105 wake_lock_provider_.reset();
106 base::RunLoop().RunUntilIdle(); 106 base::RunLoop().RunUntilIdle();
107 107
108 EXPECT_TRUE(HasWakeLock()); 108 EXPECT_TRUE(HasWakeLock());
109 wake_lock_->CancelWakeLock(); 109 wake_lock_->CancelWakeLock();
110 EXPECT_FALSE(HasWakeLock()); 110 EXPECT_FALSE(HasWakeLock());
111 } 111 }
112 112
113 // One WakeLockService instance can serve multiple clients at same time. 113 // One WakeLock instance can serve multiple clients at same time.
114 TEST_F(WakeLockServiceImplTest, MultipleClients) { 114 TEST_F(WakeLockTest, MultipleClients) {
115 EXPECT_FALSE(HasWakeLock()); 115 EXPECT_FALSE(HasWakeLock());
116 116
117 mojom::WakeLockServicePtr wake_lock_1; 117 mojom::WakeLockPtr wake_lock_1;
118 mojom::WakeLockServicePtr wake_lock_2; 118 mojom::WakeLockPtr wake_lock_2;
119 mojom::WakeLockServicePtr wake_lock_3; 119 mojom::WakeLockPtr wake_lock_3;
120 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1)); 120 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1));
121 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2)); 121 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2));
122 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3)); 122 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3));
123 123
124 EXPECT_FALSE(HasWakeLock()); 124 EXPECT_FALSE(HasWakeLock());
125 125
126 wake_lock_1->RequestWakeLock(); 126 wake_lock_1->RequestWakeLock();
127 wake_lock_2->RequestWakeLock(); 127 wake_lock_2->RequestWakeLock();
128 wake_lock_3->RequestWakeLock(); 128 wake_lock_3->RequestWakeLock();
129 EXPECT_TRUE(HasWakeLock()); 129 EXPECT_TRUE(HasWakeLock());
130 130
131 wake_lock_1->CancelWakeLock(); 131 wake_lock_1->CancelWakeLock();
132 wake_lock_2->CancelWakeLock(); 132 wake_lock_2->CancelWakeLock();
133 EXPECT_TRUE(HasWakeLock()); 133 EXPECT_TRUE(HasWakeLock());
134 134
135 wake_lock_3->CancelWakeLock(); 135 wake_lock_3->CancelWakeLock();
136 EXPECT_FALSE(HasWakeLock()); 136 EXPECT_FALSE(HasWakeLock());
137 } 137 }
138 138
139 // WakeLockService should update the wake lock status correctly when 139 // WakeLock should update the wake lock status correctly when
140 // connection error happens. 140 // connection error happens.
141 TEST_F(WakeLockServiceImplTest, OnWakeLockConnectionError) { 141 TEST_F(WakeLockTest, OnWakeLockConnectionError) {
142 EXPECT_FALSE(HasWakeLock()); 142 EXPECT_FALSE(HasWakeLock());
143 143
144 mojom::WakeLockServicePtr wake_lock_1; 144 mojom::WakeLockPtr wake_lock_1;
145 mojom::WakeLockServicePtr wake_lock_2; 145 mojom::WakeLockPtr wake_lock_2;
146 mojom::WakeLockServicePtr wake_lock_3; 146 mojom::WakeLockPtr wake_lock_3;
147 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1)); 147 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1));
148 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2)); 148 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2));
149 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3)); 149 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3));
150 150
151 EXPECT_FALSE(HasWakeLock()); 151 EXPECT_FALSE(HasWakeLock());
152 152
153 wake_lock_1->RequestWakeLock(); 153 wake_lock_1->RequestWakeLock();
154 wake_lock_2->RequestWakeLock(); 154 wake_lock_2->RequestWakeLock();
155 wake_lock_3->RequestWakeLock(); 155 wake_lock_3->RequestWakeLock();
156 EXPECT_TRUE(HasWakeLock()); 156 EXPECT_TRUE(HasWakeLock());
157 157
158 wake_lock_1.reset(); 158 wake_lock_1.reset();
159 base::RunLoop().RunUntilIdle(); 159 base::RunLoop().RunUntilIdle();
160 EXPECT_TRUE(HasWakeLock()); 160 EXPECT_TRUE(HasWakeLock());
161 161
162 wake_lock_2.reset(); 162 wake_lock_2.reset();
163 wake_lock_3.reset(); 163 wake_lock_3.reset();
164 base::RunLoop().RunUntilIdle(); 164 base::RunLoop().RunUntilIdle();
165 EXPECT_FALSE(HasWakeLock()); 165 EXPECT_FALSE(HasWakeLock());
166 } 166 }
167 167
168 // Test mixed operations. 168 // Test mixed operations.
169 TEST_F(WakeLockServiceImplTest, MixedTest) { 169 TEST_F(WakeLockTest, MixedTest) {
170 EXPECT_FALSE(HasWakeLock()); 170 EXPECT_FALSE(HasWakeLock());
171 171
172 mojom::WakeLockServicePtr wake_lock_1; 172 mojom::WakeLockPtr wake_lock_1;
173 mojom::WakeLockServicePtr wake_lock_2; 173 mojom::WakeLockPtr wake_lock_2;
174 mojom::WakeLockServicePtr wake_lock_3; 174 mojom::WakeLockPtr wake_lock_3;
175 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1)); 175 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_1));
176 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2)); 176 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_2));
177 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3)); 177 wake_lock_->AddClient(mojo::MakeRequest(&wake_lock_3));
178 178
179 EXPECT_FALSE(HasWakeLock()); 179 EXPECT_FALSE(HasWakeLock());
180 180
181 // Execute a series of calls that should result in |wake_lock_1| and 181 // Execute a series of calls that should result in |wake_lock_1| and
182 // |wake_lock_3| having outstanding wake lock requests. 182 // |wake_lock_3| having outstanding wake lock requests.
183 wake_lock_1->RequestWakeLock(); 183 wake_lock_1->RequestWakeLock();
184 wake_lock_1->CancelWakeLock(); 184 wake_lock_1->CancelWakeLock();
(...skipping 11 matching lines...) Expand all
196 base::RunLoop().RunUntilIdle(); 196 base::RunLoop().RunUntilIdle();
197 EXPECT_TRUE(HasWakeLock()); 197 EXPECT_TRUE(HasWakeLock());
198 198
199 wake_lock_3->CancelWakeLock(); 199 wake_lock_3->CancelWakeLock();
200 EXPECT_FALSE(HasWakeLock()); 200 EXPECT_FALSE(HasWakeLock());
201 } 201 }
202 202
203 } // namespace 203 } // namespace
204 204
205 } // namespace device 205 } // namespace device
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698