OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/background_sync/background_sync_service_impl.h" | 5 #include "content/browser/background_sync/background_sync_service_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 mojo::GetProxy(&service_ptr_); | 184 mojo::GetProxy(&service_ptr_); |
185 // Create a new BackgroundSyncServiceImpl bound to the dummy channel | 185 // Create a new BackgroundSyncServiceImpl bound to the dummy channel |
186 background_sync_context_->CreateService(std::move(service_request)); | 186 background_sync_context_->CreateService(std::move(service_request)); |
187 base::RunLoop().RunUntilIdle(); | 187 base::RunLoop().RunUntilIdle(); |
188 | 188 |
189 service_impl_ = *background_sync_context_->services_.begin(); | 189 service_impl_ = *background_sync_context_->services_.begin(); |
190 ASSERT_TRUE(service_impl_); | 190 ASSERT_TRUE(service_impl_); |
191 } | 191 } |
192 | 192 |
193 // Helpers for testing BackgroundSyncServiceImpl methods | 193 // Helpers for testing BackgroundSyncServiceImpl methods |
194 void RegisterOneShot( | 194 void Register(SyncRegistrationPtr sync, |
195 SyncRegistrationPtr sync, | 195 const BackgroundSyncService::RegisterCallback& callback) { |
196 const BackgroundSyncService::RegisterCallback& callback) { | |
197 service_impl_->Register(std::move(sync), sw_registration_id_, | 196 service_impl_->Register(std::move(sync), sw_registration_id_, |
198 false /* requested_from_service_worker */, | 197 false /* requested_from_service_worker */, |
199 callback); | 198 callback); |
200 base::RunLoop().RunUntilIdle(); | 199 base::RunLoop().RunUntilIdle(); |
201 } | 200 } |
202 | 201 |
203 void UnregisterOneShot( | 202 void Unregister(int32_t handle_id, |
204 int32_t handle_id, | 203 const BackgroundSyncService::UnregisterCallback& callback) { |
205 const BackgroundSyncService::UnregisterCallback& callback) { | |
206 service_impl_->Unregister( | 204 service_impl_->Unregister( |
207 handle_id, sw_registration_id_, callback); | 205 handle_id, sw_registration_id_, callback); |
208 base::RunLoop().RunUntilIdle(); | 206 base::RunLoop().RunUntilIdle(); |
209 } | 207 } |
210 | 208 |
211 void GetRegistrationOneShot( | 209 void GetRegistration( |
212 const mojo::String& tag, | 210 const mojo::String& tag, |
213 const BackgroundSyncService::RegisterCallback& callback) { | 211 const BackgroundSyncService::RegisterCallback& callback) { |
214 service_impl_->GetRegistration(tag, sw_registration_id_, callback); | 212 service_impl_->GetRegistration(tag, sw_registration_id_, callback); |
215 base::RunLoop().RunUntilIdle(); | 213 base::RunLoop().RunUntilIdle(); |
216 } | 214 } |
217 | 215 |
218 void GetRegistrationsOneShot( | 216 void GetRegistrations( |
219 const BackgroundSyncService::GetRegistrationsCallback& callback) { | 217 const BackgroundSyncService::GetRegistrationsCallback& callback) { |
220 service_impl_->GetRegistrations(sw_registration_id_, callback); | 218 service_impl_->GetRegistrations(sw_registration_id_, callback); |
221 base::RunLoop().RunUntilIdle(); | 219 base::RunLoop().RunUntilIdle(); |
222 } | 220 } |
223 | 221 |
224 void NotifyWhenDone( | 222 void NotifyWhenDone( |
225 int32_t handle_id, | 223 int32_t handle_id, |
226 const BackgroundSyncService::NotifyWhenFinishedCallback& callback) { | 224 const BackgroundSyncService::NotifyWhenFinishedCallback& callback) { |
227 service_impl_->NotifyWhenFinished(handle_id, callback); | 225 service_impl_->NotifyWhenFinished(handle_id, callback); |
228 base::RunLoop().RunUntilIdle(); | 226 base::RunLoop().RunUntilIdle(); |
(...skipping 11 matching lines...) Expand all Loading... |
240 service_impl_; // Owned by background_sync_context_ | 238 service_impl_; // Owned by background_sync_context_ |
241 SyncRegistrationPtr default_sync_registration_; | 239 SyncRegistrationPtr default_sync_registration_; |
242 }; | 240 }; |
243 | 241 |
244 // Tests | 242 // Tests |
245 | 243 |
246 TEST_F(BackgroundSyncServiceImplTest, Register) { | 244 TEST_F(BackgroundSyncServiceImplTest, Register) { |
247 bool called = false; | 245 bool called = false; |
248 BackgroundSyncError error; | 246 BackgroundSyncError error; |
249 SyncRegistrationPtr reg; | 247 SyncRegistrationPtr reg; |
250 RegisterOneShot( | 248 Register(default_sync_registration_.Clone(), |
251 default_sync_registration_.Clone(), | 249 base::Bind(&ErrorAndRegistrationCallback, &called, &error, ®)); |
252 base::Bind(&ErrorAndRegistrationCallback, &called, &error, ®)); | |
253 EXPECT_TRUE(called); | 250 EXPECT_TRUE(called); |
254 EXPECT_EQ(BackgroundSyncError::NONE, error); | 251 EXPECT_EQ(BackgroundSyncError::NONE, error); |
255 EXPECT_EQ("", reg->tag); | 252 EXPECT_EQ("", reg->tag); |
256 } | 253 } |
257 | 254 |
258 TEST_F(BackgroundSyncServiceImplTest, Unregister) { | 255 TEST_F(BackgroundSyncServiceImplTest, Unregister) { |
259 bool unregister_called = false; | 256 bool unregister_called = false; |
260 BackgroundSyncError unregister_error; | 257 BackgroundSyncError unregister_error; |
261 SyncRegistrationPtr reg; | 258 SyncRegistrationPtr reg; |
262 UnregisterOneShot( | 259 Unregister(default_sync_registration_->handle_id, |
263 default_sync_registration_->handle_id, | 260 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
264 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); | |
265 EXPECT_TRUE(unregister_called); | 261 EXPECT_TRUE(unregister_called); |
266 EXPECT_EQ(BackgroundSyncError::NOT_ALLOWED, unregister_error); | 262 EXPECT_EQ(BackgroundSyncError::NOT_ALLOWED, unregister_error); |
267 } | 263 } |
268 | 264 |
269 TEST_F(BackgroundSyncServiceImplTest, UnregisterWithRegisteredSync) { | 265 TEST_F(BackgroundSyncServiceImplTest, UnregisterWithRegisteredSync) { |
270 bool register_called = false; | 266 bool register_called = false; |
271 bool unregister_called = false; | 267 bool unregister_called = false; |
272 BackgroundSyncError register_error; | 268 BackgroundSyncError register_error; |
273 BackgroundSyncError unregister_error; | 269 BackgroundSyncError unregister_error; |
274 SyncRegistrationPtr reg; | 270 SyncRegistrationPtr reg; |
275 RegisterOneShot(default_sync_registration_.Clone(), | 271 Register(default_sync_registration_.Clone(), |
276 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, | 272 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
277 ®ister_error, ®)); | 273 ®ister_error, ®)); |
278 EXPECT_TRUE(register_called); | 274 EXPECT_TRUE(register_called); |
279 EXPECT_EQ(BackgroundSyncError::NONE, register_error); | 275 EXPECT_EQ(BackgroundSyncError::NONE, register_error); |
280 UnregisterOneShot( | 276 Unregister(reg->handle_id, |
281 reg->handle_id, | 277 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
282 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); | |
283 EXPECT_TRUE(unregister_called); | 278 EXPECT_TRUE(unregister_called); |
284 EXPECT_EQ(BackgroundSyncError::NONE, unregister_error); | 279 EXPECT_EQ(BackgroundSyncError::NONE, unregister_error); |
285 } | 280 } |
286 | 281 |
287 TEST_F(BackgroundSyncServiceImplTest, GetRegistration) { | 282 TEST_F(BackgroundSyncServiceImplTest, GetRegistration) { |
288 bool called = false; | 283 bool called = false; |
289 BackgroundSyncError error; | 284 BackgroundSyncError error; |
290 SyncRegistrationPtr reg; | 285 SyncRegistrationPtr reg; |
291 GetRegistrationOneShot( | 286 GetRegistration( |
292 "", base::Bind(&ErrorAndRegistrationCallback, &called, &error, ®)); | 287 "", base::Bind(&ErrorAndRegistrationCallback, &called, &error, ®)); |
293 EXPECT_TRUE(called); | 288 EXPECT_TRUE(called); |
294 EXPECT_EQ(BackgroundSyncError::NOT_FOUND, error); | 289 EXPECT_EQ(BackgroundSyncError::NOT_FOUND, error); |
295 } | 290 } |
296 | 291 |
297 TEST_F(BackgroundSyncServiceImplTest, GetRegistrationWithRegisteredSync) { | 292 TEST_F(BackgroundSyncServiceImplTest, GetRegistrationWithRegisteredSync) { |
298 bool register_called = false; | 293 bool register_called = false; |
299 bool getregistration_called = false; | 294 bool getregistration_called = false; |
300 BackgroundSyncError register_error; | 295 BackgroundSyncError register_error; |
301 BackgroundSyncError getregistration_error; | 296 BackgroundSyncError getregistration_error; |
302 SyncRegistrationPtr register_reg; | 297 SyncRegistrationPtr register_reg; |
303 SyncRegistrationPtr getregistration_reg; | 298 SyncRegistrationPtr getregistration_reg; |
304 RegisterOneShot(default_sync_registration_.Clone(), | 299 Register(default_sync_registration_.Clone(), |
305 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, | 300 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
306 ®ister_error, ®ister_reg)); | 301 ®ister_error, ®ister_reg)); |
307 EXPECT_TRUE(register_called); | 302 EXPECT_TRUE(register_called); |
308 EXPECT_EQ(BackgroundSyncError::NONE, register_error); | 303 EXPECT_EQ(BackgroundSyncError::NONE, register_error); |
309 GetRegistrationOneShot( | 304 GetRegistration( |
310 register_reg->tag, | 305 register_reg->tag, |
311 base::Bind(&ErrorAndRegistrationCallback, &getregistration_called, | 306 base::Bind(&ErrorAndRegistrationCallback, &getregistration_called, |
312 &getregistration_error, &getregistration_reg)); | 307 &getregistration_error, &getregistration_reg)); |
313 EXPECT_TRUE(getregistration_called); | 308 EXPECT_TRUE(getregistration_called); |
314 EXPECT_EQ(BackgroundSyncError::NONE, getregistration_error); | 309 EXPECT_EQ(BackgroundSyncError::NONE, getregistration_error); |
315 } | 310 } |
316 | 311 |
317 TEST_F(BackgroundSyncServiceImplTest, GetRegistrations) { | 312 TEST_F(BackgroundSyncServiceImplTest, GetRegistrations) { |
318 bool called = false; | 313 bool called = false; |
319 BackgroundSyncError error; | 314 BackgroundSyncError error; |
320 unsigned long array_size = 0UL; | 315 unsigned long array_size = 0UL; |
321 GetRegistrationsOneShot(base::Bind(&ErrorAndRegistrationListCallback, &called, | 316 GetRegistrations(base::Bind(&ErrorAndRegistrationListCallback, &called, |
322 &error, &array_size)); | 317 &error, &array_size)); |
323 EXPECT_TRUE(called); | 318 EXPECT_TRUE(called); |
324 EXPECT_EQ(BackgroundSyncError::NONE, error); | 319 EXPECT_EQ(BackgroundSyncError::NONE, error); |
325 EXPECT_EQ(0UL, array_size); | 320 EXPECT_EQ(0UL, array_size); |
326 } | 321 } |
327 | 322 |
328 TEST_F(BackgroundSyncServiceImplTest, GetRegistrationsWithRegisteredSync) { | 323 TEST_F(BackgroundSyncServiceImplTest, GetRegistrationsWithRegisteredSync) { |
329 bool register_called = false; | 324 bool register_called = false; |
330 bool getregistrations_called = false; | 325 bool getregistrations_called = false; |
331 BackgroundSyncError register_error; | 326 BackgroundSyncError register_error; |
332 BackgroundSyncError getregistrations_error; | 327 BackgroundSyncError getregistrations_error; |
333 SyncRegistrationPtr register_reg; | 328 SyncRegistrationPtr register_reg; |
334 unsigned long array_size = 0UL; | 329 unsigned long array_size = 0UL; |
335 RegisterOneShot(default_sync_registration_.Clone(), | 330 Register(default_sync_registration_.Clone(), |
336 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, | 331 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
337 ®ister_error, ®ister_reg)); | 332 ®ister_error, ®ister_reg)); |
338 EXPECT_TRUE(register_called); | 333 EXPECT_TRUE(register_called); |
339 EXPECT_EQ(BackgroundSyncError::NONE, register_error); | 334 EXPECT_EQ(BackgroundSyncError::NONE, register_error); |
340 GetRegistrationsOneShot(base::Bind(&ErrorAndRegistrationListCallback, | 335 GetRegistrations(base::Bind(&ErrorAndRegistrationListCallback, |
341 &getregistrations_called, | 336 &getregistrations_called, &getregistrations_error, |
342 &getregistrations_error, &array_size)); | 337 &array_size)); |
343 EXPECT_TRUE(getregistrations_called); | 338 EXPECT_TRUE(getregistrations_called); |
344 EXPECT_EQ(BackgroundSyncError::NONE, getregistrations_error); | 339 EXPECT_EQ(BackgroundSyncError::NONE, getregistrations_error); |
345 EXPECT_EQ(1UL, array_size); | 340 EXPECT_EQ(1UL, array_size); |
346 } | 341 } |
347 | 342 |
348 TEST_F(BackgroundSyncServiceImplTest, NotifyWhenFinished) { | 343 TEST_F(BackgroundSyncServiceImplTest, NotifyWhenFinished) { |
349 // Register a sync event. | 344 // Register a sync event. |
350 bool register_called = false; | 345 bool register_called = false; |
351 BackgroundSyncError register_error; | 346 BackgroundSyncError register_error; |
352 SyncRegistrationPtr reg; | 347 SyncRegistrationPtr reg; |
353 RegisterOneShot(default_sync_registration_.Clone(), | 348 Register(default_sync_registration_.Clone(), |
354 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, | 349 base::Bind(&ErrorAndRegistrationCallback, ®ister_called, |
355 ®ister_error, ®)); | 350 ®ister_error, ®)); |
356 EXPECT_TRUE(register_called); | 351 EXPECT_TRUE(register_called); |
357 EXPECT_EQ(BackgroundSyncError::NONE, register_error); | 352 EXPECT_EQ(BackgroundSyncError::NONE, register_error); |
358 | 353 |
359 // Unregister it. | 354 // Unregister it. |
360 bool unregister_called = false; | 355 bool unregister_called = false; |
361 BackgroundSyncError unregister_error; | 356 BackgroundSyncError unregister_error; |
362 UnregisterOneShot( | 357 Unregister(reg->handle_id, |
363 reg->handle_id, | 358 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); |
364 base::Bind(&ErrorCallback, &unregister_called, &unregister_error)); | |
365 EXPECT_TRUE(unregister_called); | 359 EXPECT_TRUE(unregister_called); |
366 EXPECT_EQ(BackgroundSyncError::NONE, unregister_error); | 360 EXPECT_EQ(BackgroundSyncError::NONE, unregister_error); |
367 | 361 |
368 // Call NotifyWhenDone and verify that it calls back with unregistered. | 362 // Call NotifyWhenDone and verify that it calls back with unregistered. |
369 bool notify_done_called = false; | 363 bool notify_done_called = false; |
370 BackgroundSyncError notify_done_error = BackgroundSyncError::NONE; | 364 BackgroundSyncError notify_done_error = BackgroundSyncError::NONE; |
371 BackgroundSyncState notify_done_sync_state = BackgroundSyncState::SUCCESS; | 365 BackgroundSyncState notify_done_sync_state = BackgroundSyncState::SUCCESS; |
372 | 366 |
373 NotifyWhenDone(reg->handle_id, | 367 NotifyWhenDone(reg->handle_id, |
374 base::Bind(&ErrorAndStateCallback, ¬ify_done_called, | 368 base::Bind(&ErrorAndStateCallback, ¬ify_done_called, |
375 ¬ify_done_error, ¬ify_done_sync_state)); | 369 ¬ify_done_error, ¬ify_done_sync_state)); |
376 EXPECT_TRUE(notify_done_called); | 370 EXPECT_TRUE(notify_done_called); |
377 EXPECT_EQ(BackgroundSyncError::NONE, notify_done_error); | 371 EXPECT_EQ(BackgroundSyncError::NONE, notify_done_error); |
378 EXPECT_EQ(BackgroundSyncState::UNREGISTERED, notify_done_sync_state); | 372 EXPECT_EQ(BackgroundSyncState::UNREGISTERED, notify_done_sync_state); |
379 } | 373 } |
380 | 374 |
381 } // namespace content | 375 } // namespace content |
OLD | NEW |