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

Side by Side Diff: content/browser/background_sync/background_sync_manager.cc

Issue 2954433002: BackgroundSync: Convert to base::BindOnce/OnceCallback/OnceClosure (Closed)
Patch Set: rename local variable Created 3 years, 5 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 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_manager.h" 5 #include "content/browser/background_sync/background_sync_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/barrier_closure.h" 9 #include "base/barrier_closure.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 25 matching lines...) Expand all
36 36
37 namespace content { 37 namespace content {
38 38
39 namespace { 39 namespace {
40 40
41 // The key used to index the background sync data in ServiceWorkerStorage. 41 // The key used to index the background sync data in ServiceWorkerStorage.
42 const char kBackgroundSyncUserDataKey[] = "BackgroundSyncUserData"; 42 const char kBackgroundSyncUserDataKey[] = "BackgroundSyncUserData";
43 43
44 void RecordFailureAndPostError( 44 void RecordFailureAndPostError(
45 BackgroundSyncStatus status, 45 BackgroundSyncStatus status,
46 const BackgroundSyncManager::StatusAndRegistrationCallback& callback) { 46 BackgroundSyncManager::StatusAndRegistrationCallback callback) {
47 BackgroundSyncMetrics::CountRegisterFailure(status); 47 BackgroundSyncMetrics::CountRegisterFailure(status);
48 48
49 base::ThreadTaskRunnerHandle::Get()->PostTask( 49 base::ThreadTaskRunnerHandle::Get()->PostTask(
50 FROM_HERE, base::Bind(callback, status, nullptr)); 50 FROM_HERE, base::BindOnce(std::move(callback), status, nullptr));
51 } 51 }
52 52
53 // Returns nullptr if the browser context cannot be accessed for any reason. 53 // Returns nullptr if the browser context cannot be accessed for any reason.
54 BrowserContext* GetBrowserContextOnUIThread( 54 BrowserContext* GetBrowserContextOnUIThread(
55 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) { 55 scoped_refptr<ServiceWorkerContextWrapper> service_worker_context) {
56 DCHECK_CURRENTLY_ON(BrowserThread::UI); 56 DCHECK_CURRENTLY_ON(BrowserThread::UI);
57 57
58 if (!service_worker_context) 58 if (!service_worker_context)
59 return nullptr; 59 return nullptr;
60 StoragePartitionImpl* storage_partition_impl = 60 StoragePartitionImpl* storage_partition_impl =
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 185
186 BackgroundSyncManager::~BackgroundSyncManager() { 186 BackgroundSyncManager::~BackgroundSyncManager() {
187 DCHECK_CURRENTLY_ON(BrowserThread::IO); 187 DCHECK_CURRENTLY_ON(BrowserThread::IO);
188 188
189 service_worker_context_->RemoveObserver(this); 189 service_worker_context_->RemoveObserver(this);
190 } 190 }
191 191
192 void BackgroundSyncManager::Register( 192 void BackgroundSyncManager::Register(
193 int64_t sw_registration_id, 193 int64_t sw_registration_id,
194 const BackgroundSyncRegistrationOptions& options, 194 const BackgroundSyncRegistrationOptions& options,
195 const StatusAndRegistrationCallback& callback) { 195 StatusAndRegistrationCallback callback) {
196 DCHECK_CURRENTLY_ON(BrowserThread::IO); 196 DCHECK_CURRENTLY_ON(BrowserThread::IO);
197 197
198 if (disabled_) { 198 if (disabled_) {
199 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_STORAGE_ERROR, callback); 199 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_STORAGE_ERROR,
200 std::move(callback));
200 return; 201 return;
201 } 202 }
202 203
203 op_scheduler_.ScheduleOperation( 204 op_scheduler_.ScheduleOperation(base::BindOnce(
204 base::Bind(&BackgroundSyncManager::RegisterCheckIfHasMainFrame, 205 &BackgroundSyncManager::RegisterCheckIfHasMainFrame,
205 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, options, 206 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, options,
206 op_scheduler_.WrapCallbackToRunNext(callback))); 207 op_scheduler_.WrapCallbackToRunNext(std::move(callback))));
207 } 208 }
208 209
209 void BackgroundSyncManager::GetRegistrations( 210 void BackgroundSyncManager::GetRegistrations(
210 int64_t sw_registration_id, 211 int64_t sw_registration_id,
211 const StatusAndRegistrationsCallback& callback) { 212 StatusAndRegistrationsCallback callback) {
212 DCHECK_CURRENTLY_ON(BrowserThread::IO); 213 DCHECK_CURRENTLY_ON(BrowserThread::IO);
213 214
214 if (disabled_) { 215 if (disabled_) {
215 base::ThreadTaskRunnerHandle::Get()->PostTask( 216 base::ThreadTaskRunnerHandle::Get()->PostTask(
216 FROM_HERE, 217 FROM_HERE,
217 base::Bind( 218 base::BindOnce(
218 callback, BACKGROUND_SYNC_STATUS_STORAGE_ERROR, 219 std::move(callback), BACKGROUND_SYNC_STATUS_STORAGE_ERROR,
219 base::Passed( 220 base::Passed(
220 std::vector<std::unique_ptr<BackgroundSyncRegistration>>()))); 221 std::vector<std::unique_ptr<BackgroundSyncRegistration>>())));
221 return; 222 return;
222 } 223 }
223 224
224 op_scheduler_.ScheduleOperation( 225 op_scheduler_.ScheduleOperation(
225 base::Bind(&BackgroundSyncManager::GetRegistrationsImpl, 226 base::BindOnce(&BackgroundSyncManager::GetRegistrationsImpl,
226 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, 227 weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
227 op_scheduler_.WrapCallbackToRunNext(callback))); 228 op_scheduler_.WrapCallbackToRunNext(std::move(callback))));
228 } 229 }
229 230
230 void BackgroundSyncManager::OnRegistrationDeleted(int64_t sw_registration_id, 231 void BackgroundSyncManager::OnRegistrationDeleted(int64_t sw_registration_id,
231 const GURL& pattern) { 232 const GURL& pattern) {
232 DCHECK_CURRENTLY_ON(BrowserThread::IO); 233 DCHECK_CURRENTLY_ON(BrowserThread::IO);
233 234
234 // Operations already in the queue will either fail when they write to storage 235 // Operations already in the queue will either fail when they write to storage
235 // or return stale results based on registrations loaded in memory. This is 236 // or return stale results based on registrations loaded in memory. This is
236 // inconsequential since the service worker is gone. 237 // inconsequential since the service worker is gone.
237 op_scheduler_.ScheduleOperation( 238 op_scheduler_.ScheduleOperation(
238 base::Bind(&BackgroundSyncManager::OnRegistrationDeletedImpl, 239 base::BindOnce(&BackgroundSyncManager::OnRegistrationDeletedImpl,
239 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, 240 weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
240 MakeEmptyCompletion())); 241 MakeEmptyCompletion()));
241 } 242 }
242 243
243 void BackgroundSyncManager::OnStorageWiped() { 244 void BackgroundSyncManager::OnStorageWiped() {
244 DCHECK_CURRENTLY_ON(BrowserThread::IO); 245 DCHECK_CURRENTLY_ON(BrowserThread::IO);
245 246
246 // Operations already in the queue will either fail when they write to storage 247 // Operations already in the queue will either fail when they write to storage
247 // or return stale results based on registrations loaded in memory. This is 248 // or return stale results based on registrations loaded in memory. This is
248 // inconsequential since the service workers are gone. 249 // inconsequential since the service workers are gone.
249 op_scheduler_.ScheduleOperation( 250 op_scheduler_.ScheduleOperation(
250 base::Bind(&BackgroundSyncManager::OnStorageWipedImpl, 251 base::BindOnce(&BackgroundSyncManager::OnStorageWipedImpl,
251 weak_ptr_factory_.GetWeakPtr(), MakeEmptyCompletion())); 252 weak_ptr_factory_.GetWeakPtr(), MakeEmptyCompletion()));
252 } 253 }
253 254
254 void BackgroundSyncManager::SetMaxSyncAttemptsForTesting(int max_attempts) { 255 void BackgroundSyncManager::SetMaxSyncAttemptsForTesting(int max_attempts) {
255 DCHECK_CURRENTLY_ON(BrowserThread::IO); 256 DCHECK_CURRENTLY_ON(BrowserThread::IO);
256 op_scheduler_.ScheduleOperation(base::Bind( 257 op_scheduler_.ScheduleOperation(base::BindOnce(
257 &BackgroundSyncManager::SetMaxSyncAttemptsImpl, 258 &BackgroundSyncManager::SetMaxSyncAttemptsImpl,
258 weak_ptr_factory_.GetWeakPtr(), max_attempts, MakeEmptyCompletion())); 259 weak_ptr_factory_.GetWeakPtr(), max_attempts, MakeEmptyCompletion()));
259 } 260 }
260 261
261 void BackgroundSyncManager::EmulateDispatchSyncEvent( 262 void BackgroundSyncManager::EmulateDispatchSyncEvent(
262 const std::string& tag, 263 const std::string& tag,
263 scoped_refptr<ServiceWorkerVersion> active_version, 264 scoped_refptr<ServiceWorkerVersion> active_version,
264 bool last_chance, 265 bool last_chance,
265 const ServiceWorkerVersion::StatusCallback& callback) { 266 const ServiceWorkerVersion::StatusCallback& callback) {
266 DCHECK_CURRENTLY_ON(BrowserThread::IO); 267 DCHECK_CURRENTLY_ON(BrowserThread::IO);
(...skipping 13 matching lines...) Expand all
280 disabled_(false), 281 disabled_(false),
281 num_firing_registrations_(0), 282 num_firing_registrations_(0),
282 clock_(new base::DefaultClock()), 283 clock_(new base::DefaultClock()),
283 weak_ptr_factory_(this) { 284 weak_ptr_factory_(this) {
284 DCHECK_CURRENTLY_ON(BrowserThread::IO); 285 DCHECK_CURRENTLY_ON(BrowserThread::IO);
285 286
286 service_worker_context_->AddObserver(this); 287 service_worker_context_->AddObserver(this);
287 288
288 #if defined(OS_ANDROID) 289 #if defined(OS_ANDROID)
289 network_observer_.reset(new BackgroundSyncNetworkObserverAndroid( 290 network_observer_.reset(new BackgroundSyncNetworkObserverAndroid(
290 base::Bind(&BackgroundSyncManager::OnNetworkChanged, 291 base::BindRepeating(&BackgroundSyncManager::OnNetworkChanged,
291 weak_ptr_factory_.GetWeakPtr()))); 292 weak_ptr_factory_.GetWeakPtr())));
292 #else 293 #else
293 network_observer_.reset(new BackgroundSyncNetworkObserver( 294 network_observer_.reset(new BackgroundSyncNetworkObserver(
294 base::Bind(&BackgroundSyncManager::OnNetworkChanged, 295 base::BindRepeating(&BackgroundSyncManager::OnNetworkChanged,
295 weak_ptr_factory_.GetWeakPtr()))); 296 weak_ptr_factory_.GetWeakPtr())));
296 #endif 297 #endif
297 } 298 }
298 299
299 void BackgroundSyncManager::Init() { 300 void BackgroundSyncManager::Init() {
300 DCHECK_CURRENTLY_ON(BrowserThread::IO); 301 DCHECK_CURRENTLY_ON(BrowserThread::IO);
301 DCHECK(!op_scheduler_.ScheduledOperations()); 302 DCHECK(!op_scheduler_.ScheduledOperations());
302 DCHECK(!disabled_); 303 DCHECK(!disabled_);
303 304
304 op_scheduler_.ScheduleOperation(base::Bind(&BackgroundSyncManager::InitImpl, 305 op_scheduler_.ScheduleOperation(
305 weak_ptr_factory_.GetWeakPtr(), 306 base::BindOnce(&BackgroundSyncManager::InitImpl,
306 MakeEmptyCompletion())); 307 weak_ptr_factory_.GetWeakPtr(), MakeEmptyCompletion()));
307 } 308 }
308 309
309 void BackgroundSyncManager::InitImpl(const base::Closure& callback) { 310 void BackgroundSyncManager::InitImpl(base::OnceClosure callback) {
310 DCHECK_CURRENTLY_ON(BrowserThread::IO); 311 DCHECK_CURRENTLY_ON(BrowserThread::IO);
311 312
312 if (disabled_) { 313 if (disabled_) {
313 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 314 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
315 std::move(callback));
314 return; 316 return;
315 } 317 }
316 318
317 BrowserThread::PostTaskAndReplyWithResult( 319 BrowserThread::PostTaskAndReplyWithResult(
318 BrowserThread::UI, FROM_HERE, 320 BrowserThread::UI, FROM_HERE,
319 base::Bind(&GetControllerParameters, service_worker_context_, 321 base::BindOnce(&GetControllerParameters, service_worker_context_,
320 base::Passed( 322 base::Passed(base::MakeUnique<BackgroundSyncParameters>(
321 base::MakeUnique<BackgroundSyncParameters>(*parameters_))), 323 *parameters_))),
322 base::Bind(&BackgroundSyncManager::InitDidGetControllerParameters, 324 base::BindOnce(&BackgroundSyncManager::InitDidGetControllerParameters,
323 weak_ptr_factory_.GetWeakPtr(), callback)); 325 weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
324 } 326 }
325 327
326 void BackgroundSyncManager::InitDidGetControllerParameters( 328 void BackgroundSyncManager::InitDidGetControllerParameters(
327 const base::Closure& callback, 329 base::OnceClosure callback,
328 std::unique_ptr<BackgroundSyncParameters> updated_parameters) { 330 std::unique_ptr<BackgroundSyncParameters> updated_parameters) {
329 DCHECK_CURRENTLY_ON(BrowserThread::IO); 331 DCHECK_CURRENTLY_ON(BrowserThread::IO);
330 332
331 parameters_ = std::move(updated_parameters); 333 parameters_ = std::move(updated_parameters);
332 if (parameters_->disable) { 334 if (parameters_->disable) {
333 disabled_ = true; 335 disabled_ = true;
334 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 336 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
337 std::move(callback));
335 return; 338 return;
336 } 339 }
337 340
338 GetDataFromBackend( 341 GetDataFromBackend(kBackgroundSyncUserDataKey,
339 kBackgroundSyncUserDataKey, 342 base::AdaptCallbackForRepeating(base::BindOnce(
340 base::Bind(&BackgroundSyncManager::InitDidGetDataFromBackend, 343 &BackgroundSyncManager::InitDidGetDataFromBackend,
341 weak_ptr_factory_.GetWeakPtr(), callback)); 344 weak_ptr_factory_.GetWeakPtr(), std::move(callback))));
342 } 345 }
343 346
344 void BackgroundSyncManager::InitDidGetDataFromBackend( 347 void BackgroundSyncManager::InitDidGetDataFromBackend(
345 const base::Closure& callback, 348 base::OnceClosure callback,
346 const std::vector<std::pair<int64_t, std::string>>& user_data, 349 const std::vector<std::pair<int64_t, std::string>>& user_data,
347 ServiceWorkerStatusCode status) { 350 ServiceWorkerStatusCode status) {
348 DCHECK_CURRENTLY_ON(BrowserThread::IO); 351 DCHECK_CURRENTLY_ON(BrowserThread::IO);
349 352
350 if (status != SERVICE_WORKER_OK && status != SERVICE_WORKER_ERROR_NOT_FOUND) { 353 if (status != SERVICE_WORKER_OK && status != SERVICE_WORKER_ERROR_NOT_FOUND) {
351 LOG(ERROR) << "BackgroundSync failed to init due to backend failure."; 354 LOG(ERROR) << "BackgroundSync failed to init due to backend failure.";
352 DisableAndClearManager(callback); 355 DisableAndClearManager(std::move(callback));
353 return; 356 return;
354 } 357 }
355 358
356 bool corruption_detected = false; 359 bool corruption_detected = false;
357 for (const std::pair<int64_t, std::string>& data : user_data) { 360 for (const std::pair<int64_t, std::string>& data : user_data) {
358 BackgroundSyncRegistrationsProto registrations_proto; 361 BackgroundSyncRegistrationsProto registrations_proto;
359 if (registrations_proto.ParseFromString(data.second)) { 362 if (registrations_proto.ParseFromString(data.second)) {
360 BackgroundSyncRegistrations* registrations = 363 BackgroundSyncRegistrations* registrations =
361 &active_registrations_[data.first]; 364 &active_registrations_[data.first];
362 registrations->next_id = registrations_proto.next_registration_id(); 365 registrations->next_id = registrations_proto.next_registration_id();
(...skipping 22 matching lines...) Expand all
385 base::Time::FromInternalValue(registration_proto.delay_until())); 388 base::Time::FromInternalValue(registration_proto.delay_until()));
386 } 389 }
387 } 390 }
388 391
389 if (corruption_detected) 392 if (corruption_detected)
390 break; 393 break;
391 } 394 }
392 395
393 if (corruption_detected) { 396 if (corruption_detected) {
394 LOG(ERROR) << "Corruption detected in background sync backend"; 397 LOG(ERROR) << "Corruption detected in background sync backend";
395 DisableAndClearManager(callback); 398 DisableAndClearManager(std::move(callback));
396 return; 399 return;
397 } 400 }
398 401
399 FireReadyEvents(); 402 FireReadyEvents();
400 403
401 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 404 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(callback));
402 } 405 }
403 406
404 void BackgroundSyncManager::RegisterCheckIfHasMainFrame( 407 void BackgroundSyncManager::RegisterCheckIfHasMainFrame(
405 int64_t sw_registration_id, 408 int64_t sw_registration_id,
406 const BackgroundSyncRegistrationOptions& options, 409 const BackgroundSyncRegistrationOptions& options,
407 const StatusAndRegistrationCallback& callback) { 410 StatusAndRegistrationCallback callback) {
408 DCHECK_CURRENTLY_ON(BrowserThread::IO); 411 DCHECK_CURRENTLY_ON(BrowserThread::IO);
409 412
410 ServiceWorkerRegistration* sw_registration = 413 ServiceWorkerRegistration* sw_registration =
411 service_worker_context_->GetLiveRegistration(sw_registration_id); 414 service_worker_context_->GetLiveRegistration(sw_registration_id);
412 if (!sw_registration || !sw_registration->active_version()) { 415 if (!sw_registration || !sw_registration->active_version()) {
413 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, 416 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER,
414 callback); 417 std::move(callback));
415 return; 418 return;
416 } 419 }
417 420
418 HasMainFrameProviderHost( 421 HasMainFrameProviderHost(
419 sw_registration->pattern().GetOrigin(), 422 sw_registration->pattern().GetOrigin(),
420 base::Bind(&BackgroundSyncManager::RegisterDidCheckIfMainFrame, 423 base::BindOnce(&BackgroundSyncManager::RegisterDidCheckIfMainFrame,
421 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, options, 424 weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
422 callback)); 425 options, std::move(callback)));
423 } 426 }
424 427
425 void BackgroundSyncManager::RegisterDidCheckIfMainFrame( 428 void BackgroundSyncManager::RegisterDidCheckIfMainFrame(
426 int64_t sw_registration_id, 429 int64_t sw_registration_id,
427 const BackgroundSyncRegistrationOptions& options, 430 const BackgroundSyncRegistrationOptions& options,
428 const StatusAndRegistrationCallback& callback, 431 StatusAndRegistrationCallback callback,
429 bool has_main_frame_client) { 432 bool has_main_frame_client) {
430 DCHECK_CURRENTLY_ON(BrowserThread::IO); 433 DCHECK_CURRENTLY_ON(BrowserThread::IO);
431 434
432 if (!has_main_frame_client) { 435 if (!has_main_frame_client) {
433 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NOT_ALLOWED, callback); 436 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NOT_ALLOWED,
437 std::move(callback));
434 return; 438 return;
435 } 439 }
436 RegisterImpl(sw_registration_id, options, callback); 440 RegisterImpl(sw_registration_id, options, std::move(callback));
437 } 441 }
438 442
439 void BackgroundSyncManager::RegisterImpl( 443 void BackgroundSyncManager::RegisterImpl(
440 int64_t sw_registration_id, 444 int64_t sw_registration_id,
441 const BackgroundSyncRegistrationOptions& options, 445 const BackgroundSyncRegistrationOptions& options,
442 const StatusAndRegistrationCallback& callback) { 446 StatusAndRegistrationCallback callback) {
443 DCHECK_CURRENTLY_ON(BrowserThread::IO); 447 DCHECK_CURRENTLY_ON(BrowserThread::IO);
444 448
445 if (disabled_) { 449 if (disabled_) {
446 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_STORAGE_ERROR, callback); 450 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_STORAGE_ERROR,
451 std::move(callback));
447 return; 452 return;
448 } 453 }
449 454
450 if (options.tag.length() > kMaxTagLength) { 455 if (options.tag.length() > kMaxTagLength) {
451 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NOT_ALLOWED, callback); 456 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NOT_ALLOWED,
457 std::move(callback));
452 return; 458 return;
453 } 459 }
454 460
455 ServiceWorkerRegistration* sw_registration = 461 ServiceWorkerRegistration* sw_registration =
456 service_worker_context_->GetLiveRegistration(sw_registration_id); 462 service_worker_context_->GetLiveRegistration(sw_registration_id);
457 if (!sw_registration || !sw_registration->active_version()) { 463 if (!sw_registration || !sw_registration->active_version()) {
458 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, 464 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER,
459 callback); 465 std::move(callback));
460 return; 466 return;
461 } 467 }
462 468
463 BrowserThread::PostTaskAndReplyWithResult( 469 BrowserThread::PostTaskAndReplyWithResult(
464 BrowserThread::UI, FROM_HERE, 470 BrowserThread::UI, FROM_HERE,
465 base::Bind(&GetBackgroundSyncPermissionOnUIThread, 471 base::BindOnce(&GetBackgroundSyncPermissionOnUIThread,
466 service_worker_context_, 472 service_worker_context_,
467 sw_registration->pattern().GetOrigin()), 473 sw_registration->pattern().GetOrigin()),
468 base::Bind(&BackgroundSyncManager::RegisterDidAskForPermission, 474 base::BindOnce(&BackgroundSyncManager::RegisterDidAskForPermission,
469 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, options, 475 weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
470 callback)); 476 options, std::move(callback)));
471 } 477 }
472 478
473 void BackgroundSyncManager::RegisterDidAskForPermission( 479 void BackgroundSyncManager::RegisterDidAskForPermission(
474 int64_t sw_registration_id, 480 int64_t sw_registration_id,
475 const BackgroundSyncRegistrationOptions& options, 481 const BackgroundSyncRegistrationOptions& options,
476 const StatusAndRegistrationCallback& callback, 482 StatusAndRegistrationCallback callback,
477 blink::mojom::PermissionStatus permission_status) { 483 blink::mojom::PermissionStatus permission_status) {
478 DCHECK_CURRENTLY_ON(BrowserThread::IO); 484 DCHECK_CURRENTLY_ON(BrowserThread::IO);
479 485
480 if (permission_status == blink::mojom::PermissionStatus::DENIED) { 486 if (permission_status == blink::mojom::PermissionStatus::DENIED) {
481 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_PERMISSION_DENIED, 487 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_PERMISSION_DENIED,
482 callback); 488 std::move(callback));
483 return; 489 return;
484 } 490 }
485 DCHECK(permission_status == blink::mojom::PermissionStatus::GRANTED); 491 DCHECK(permission_status == blink::mojom::PermissionStatus::GRANTED);
486 492
487 ServiceWorkerRegistration* sw_registration = 493 ServiceWorkerRegistration* sw_registration =
488 service_worker_context_->GetLiveRegistration(sw_registration_id); 494 service_worker_context_->GetLiveRegistration(sw_registration_id);
489 if (!sw_registration || !sw_registration->active_version()) { 495 if (!sw_registration || !sw_registration->active_version()) {
490 // The service worker was shut down in the interim. 496 // The service worker was shut down in the interim.
491 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER, 497 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_NO_SERVICE_WORKER,
492 callback); 498 std::move(callback));
493 return; 499 return;
494 } 500 }
495 501
496 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 502 BrowserThread::PostTask(
497 base::Bind(&NotifyBackgroundSyncRegisteredOnUIThread, 503 BrowserThread::UI, FROM_HERE,
498 service_worker_context_, 504 base::BindOnce(&NotifyBackgroundSyncRegisteredOnUIThread,
499 sw_registration->pattern().GetOrigin())); 505 service_worker_context_,
506 sw_registration->pattern().GetOrigin()));
500 507
501 BackgroundSyncRegistration* existing_registration = 508 BackgroundSyncRegistration* existing_registration =
502 LookupActiveRegistration(sw_registration_id, options.tag); 509 LookupActiveRegistration(sw_registration_id, options.tag);
503 if (existing_registration) { 510 if (existing_registration) {
504 DCHECK(existing_registration->options()->Equals(options)); 511 DCHECK(existing_registration->options()->Equals(options));
505 512
506 BackgroundSyncMetrics::RegistrationCouldFire registration_could_fire = 513 BackgroundSyncMetrics::RegistrationCouldFire registration_could_fire =
507 AreOptionConditionsMet(options) 514 AreOptionConditionsMet(options)
508 ? BackgroundSyncMetrics::REGISTRATION_COULD_FIRE 515 ? BackgroundSyncMetrics::REGISTRATION_COULD_FIRE
509 : BackgroundSyncMetrics::REGISTRATION_COULD_NOT_FIRE; 516 : BackgroundSyncMetrics::REGISTRATION_COULD_NOT_FIRE;
510 BackgroundSyncMetrics::CountRegisterSuccess( 517 BackgroundSyncMetrics::CountRegisterSuccess(
511 registration_could_fire, 518 registration_could_fire,
512 BackgroundSyncMetrics::REGISTRATION_IS_DUPLICATE); 519 BackgroundSyncMetrics::REGISTRATION_IS_DUPLICATE);
513 520
514 if (existing_registration->IsFiring()) { 521 if (existing_registration->IsFiring()) {
515 existing_registration->set_sync_state( 522 existing_registration->set_sync_state(
516 blink::mojom::BackgroundSyncState::REREGISTERED_WHILE_FIRING); 523 blink::mojom::BackgroundSyncState::REREGISTERED_WHILE_FIRING);
517 } 524 }
518 525
519 base::ThreadTaskRunnerHandle::Get()->PostTask( 526 base::ThreadTaskRunnerHandle::Get()->PostTask(
520 FROM_HERE, 527 FROM_HERE,
521 base::Bind(callback, BACKGROUND_SYNC_STATUS_OK, 528 base::BindOnce(
522 base::Passed(base::MakeUnique<BackgroundSyncRegistration>( 529 std::move(callback), BACKGROUND_SYNC_STATUS_OK,
523 *existing_registration)))); 530 base::Passed(base::MakeUnique<BackgroundSyncRegistration>(
531 *existing_registration))));
524 return; 532 return;
525 } 533 }
526 534
527 BackgroundSyncRegistration new_registration; 535 BackgroundSyncRegistration new_registration;
528 536
529 *new_registration.options() = options; 537 *new_registration.options() = options;
530 538
531 BackgroundSyncRegistrations* registrations = 539 BackgroundSyncRegistrations* registrations =
532 &active_registrations_[sw_registration_id]; 540 &active_registrations_[sw_registration_id];
533 new_registration.set_id(registrations->next_id++); 541 new_registration.set_id(registrations->next_id++);
534 542
535 AddActiveRegistration(sw_registration_id, 543 AddActiveRegistration(sw_registration_id,
536 sw_registration->pattern().GetOrigin(), 544 sw_registration->pattern().GetOrigin(),
537 new_registration); 545 new_registration);
538 546
539 StoreRegistrations( 547 StoreRegistrations(sw_registration_id,
540 sw_registration_id, 548 base::AdaptCallbackForRepeating(base::BindOnce(
541 base::Bind(&BackgroundSyncManager::RegisterDidStore, 549 &BackgroundSyncManager::RegisterDidStore,
542 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, 550 weak_ptr_factory_.GetWeakPtr(), sw_registration_id,
543 new_registration, callback)); 551 new_registration, std::move(callback))));
544 } 552 }
545 553
546 void BackgroundSyncManager::DisableAndClearManager( 554 void BackgroundSyncManager::DisableAndClearManager(base::OnceClosure callback) {
547 const base::Closure& callback) {
548 DCHECK_CURRENTLY_ON(BrowserThread::IO); 555 DCHECK_CURRENTLY_ON(BrowserThread::IO);
549 556
550 if (disabled_) { 557 if (disabled_) {
551 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 558 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
559 std::move(callback));
552 return; 560 return;
553 } 561 }
554 562
555 disabled_ = true; 563 disabled_ = true;
556 564
557 active_registrations_.clear(); 565 active_registrations_.clear();
558 566
559 // Delete all backend entries. The memory representation of registered syncs 567 // Delete all backend entries. The memory representation of registered syncs
560 // may be out of sync with storage (e.g., due to corruption detection on 568 // may be out of sync with storage (e.g., due to corruption detection on
561 // loading from storage), so reload the registrations from storage again. 569 // loading from storage), so reload the registrations from storage again.
562 GetDataFromBackend( 570 GetDataFromBackend(
563 kBackgroundSyncUserDataKey, 571 kBackgroundSyncUserDataKey,
564 base::Bind(&BackgroundSyncManager::DisableAndClearDidGetRegistrations, 572 base::AdaptCallbackForRepeating(base::BindOnce(
565 weak_ptr_factory_.GetWeakPtr(), callback)); 573 &BackgroundSyncManager::DisableAndClearDidGetRegistrations,
574 weak_ptr_factory_.GetWeakPtr(), std::move(callback))));
566 } 575 }
567 576
568 void BackgroundSyncManager::DisableAndClearDidGetRegistrations( 577 void BackgroundSyncManager::DisableAndClearDidGetRegistrations(
569 const base::Closure& callback, 578 base::OnceClosure callback,
570 const std::vector<std::pair<int64_t, std::string>>& user_data, 579 const std::vector<std::pair<int64_t, std::string>>& user_data,
571 ServiceWorkerStatusCode status) { 580 ServiceWorkerStatusCode status) {
572 DCHECK_CURRENTLY_ON(BrowserThread::IO); 581 DCHECK_CURRENTLY_ON(BrowserThread::IO);
573 582
574 if (status != SERVICE_WORKER_OK || user_data.empty()) { 583 if (status != SERVICE_WORKER_OK || user_data.empty()) {
575 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 584 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
585 std::move(callback));
576 return; 586 return;
577 } 587 }
578 588
579 base::Closure barrier_closure = 589 base::RepeatingClosure barrier_closure =
580 base::BarrierClosure(user_data.size(), callback); 590 base::BarrierClosure(user_data.size(), std::move(callback));
581 591
582 for (const auto& sw_id_and_regs : user_data) { 592 for (const auto& sw_id_and_regs : user_data) {
583 service_worker_context_->ClearRegistrationUserData( 593 service_worker_context_->ClearRegistrationUserData(
584 sw_id_and_regs.first, {kBackgroundSyncUserDataKey}, 594 sw_id_and_regs.first, {kBackgroundSyncUserDataKey},
585 base::Bind(&BackgroundSyncManager::DisableAndClearManagerClearedOne, 595 base::AdaptCallbackForRepeating(base::BindOnce(
586 weak_ptr_factory_.GetWeakPtr(), barrier_closure)); 596 &BackgroundSyncManager::DisableAndClearManagerClearedOne,
597 weak_ptr_factory_.GetWeakPtr(), barrier_closure)));
587 } 598 }
588 } 599 }
589 600
590 void BackgroundSyncManager::DisableAndClearManagerClearedOne( 601 void BackgroundSyncManager::DisableAndClearManagerClearedOne(
591 const base::Closure& barrier_closure, 602 base::OnceClosure barrier_closure,
592 ServiceWorkerStatusCode status) { 603 ServiceWorkerStatusCode status) {
593 DCHECK_CURRENTLY_ON(BrowserThread::IO); 604 DCHECK_CURRENTLY_ON(BrowserThread::IO);
594 605
595 // The status doesn't matter at this point, there is nothing else to be done. 606 // The status doesn't matter at this point, there is nothing else to be done.
596 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, barrier_closure); 607 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
608 std::move(barrier_closure));
597 } 609 }
598 610
599 BackgroundSyncRegistration* BackgroundSyncManager::LookupActiveRegistration( 611 BackgroundSyncRegistration* BackgroundSyncManager::LookupActiveRegistration(
600 int64_t sw_registration_id, 612 int64_t sw_registration_id,
601 const std::string& tag) { 613 const std::string& tag) {
602 DCHECK_CURRENTLY_ON(BrowserThread::IO); 614 DCHECK_CURRENTLY_ON(BrowserThread::IO);
603 615
604 SWIdToRegistrationsMap::iterator it = 616 SWIdToRegistrationsMap::iterator it =
605 active_registrations_.find(sw_registration_id); 617 active_registrations_.find(sw_registration_id);
606 if (it == active_registrations_.end()) 618 if (it == active_registrations_.end())
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 bool success = registrations_proto.SerializeToString(&serialized); 658 bool success = registrations_proto.SerializeToString(&serialized);
647 DCHECK(success); 659 DCHECK(success);
648 660
649 StoreDataInBackend(sw_registration_id, registrations.origin, 661 StoreDataInBackend(sw_registration_id, registrations.origin,
650 kBackgroundSyncUserDataKey, serialized, callback); 662 kBackgroundSyncUserDataKey, serialized, callback);
651 } 663 }
652 664
653 void BackgroundSyncManager::RegisterDidStore( 665 void BackgroundSyncManager::RegisterDidStore(
654 int64_t sw_registration_id, 666 int64_t sw_registration_id,
655 const BackgroundSyncRegistration& new_registration, 667 const BackgroundSyncRegistration& new_registration,
656 const StatusAndRegistrationCallback& callback, 668 StatusAndRegistrationCallback callback,
657 ServiceWorkerStatusCode status) { 669 ServiceWorkerStatusCode status) {
658 DCHECK_CURRENTLY_ON(BrowserThread::IO); 670 DCHECK_CURRENTLY_ON(BrowserThread::IO);
659 671
660 if (status == SERVICE_WORKER_ERROR_NOT_FOUND) { 672 if (status == SERVICE_WORKER_ERROR_NOT_FOUND) {
661 // The service worker registration is gone. 673 // The service worker registration is gone.
662 active_registrations_.erase(sw_registration_id); 674 active_registrations_.erase(sw_registration_id);
663 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_STORAGE_ERROR, callback); 675 RecordFailureAndPostError(BACKGROUND_SYNC_STATUS_STORAGE_ERROR,
676 std::move(callback));
664 return; 677 return;
665 } 678 }
666 679
667 if (status != SERVICE_WORKER_OK) { 680 if (status != SERVICE_WORKER_OK) {
668 LOG(ERROR) << "BackgroundSync failed to store registration due to backend " 681 LOG(ERROR) << "BackgroundSync failed to store registration due to backend "
669 "failure."; 682 "failure.";
670 BackgroundSyncMetrics::CountRegisterFailure( 683 BackgroundSyncMetrics::CountRegisterFailure(
671 BACKGROUND_SYNC_STATUS_STORAGE_ERROR); 684 BACKGROUND_SYNC_STATUS_STORAGE_ERROR);
672 DisableAndClearManager( 685 DisableAndClearManager(base::BindOnce(
673 base::Bind(callback, BACKGROUND_SYNC_STATUS_STORAGE_ERROR, nullptr)); 686 std::move(callback), BACKGROUND_SYNC_STATUS_STORAGE_ERROR, nullptr));
674 return; 687 return;
675 } 688 }
676 689
677 BackgroundSyncMetrics::RegistrationCouldFire registration_could_fire = 690 BackgroundSyncMetrics::RegistrationCouldFire registration_could_fire =
678 AreOptionConditionsMet(*new_registration.options()) 691 AreOptionConditionsMet(*new_registration.options())
679 ? BackgroundSyncMetrics::REGISTRATION_COULD_FIRE 692 ? BackgroundSyncMetrics::REGISTRATION_COULD_FIRE
680 : BackgroundSyncMetrics::REGISTRATION_COULD_NOT_FIRE; 693 : BackgroundSyncMetrics::REGISTRATION_COULD_NOT_FIRE;
681 BackgroundSyncMetrics::CountRegisterSuccess( 694 BackgroundSyncMetrics::CountRegisterSuccess(
682 registration_could_fire, 695 registration_could_fire,
683 BackgroundSyncMetrics::REGISTRATION_IS_NOT_DUPLICATE); 696 BackgroundSyncMetrics::REGISTRATION_IS_NOT_DUPLICATE);
684 697
685 FireReadyEvents(); 698 FireReadyEvents();
686 699
687 base::ThreadTaskRunnerHandle::Get()->PostTask( 700 base::ThreadTaskRunnerHandle::Get()->PostTask(
688 FROM_HERE, 701 FROM_HERE,
689 base::Bind(callback, BACKGROUND_SYNC_STATUS_OK, 702 base::BindOnce(std::move(callback), BACKGROUND_SYNC_STATUS_OK,
690 base::Passed(base::MakeUnique<BackgroundSyncRegistration>( 703 base::Passed(base::MakeUnique<BackgroundSyncRegistration>(
691 new_registration)))); 704 new_registration))));
692 } 705 }
693 706
694 void BackgroundSyncManager::RemoveActiveRegistration(int64_t sw_registration_id, 707 void BackgroundSyncManager::RemoveActiveRegistration(int64_t sw_registration_id,
695 const std::string& tag) { 708 const std::string& tag) {
696 DCHECK_CURRENTLY_ON(BrowserThread::IO); 709 DCHECK_CURRENTLY_ON(BrowserThread::IO);
697 DCHECK(LookupActiveRegistration(sw_registration_id, tag)); 710 DCHECK(LookupActiveRegistration(sw_registration_id, tag));
698 711
699 BackgroundSyncRegistrations* registrations = 712 BackgroundSyncRegistrations* registrations =
700 &active_registrations_[sw_registration_id]; 713 &active_registrations_[sw_registration_id];
701 714
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
743 const std::string& tag, 756 const std::string& tag,
744 scoped_refptr<ServiceWorkerVersion> active_version, 757 scoped_refptr<ServiceWorkerVersion> active_version,
745 blink::mojom::BackgroundSyncEventLastChance last_chance, 758 blink::mojom::BackgroundSyncEventLastChance last_chance,
746 const ServiceWorkerVersion::StatusCallback& callback) { 759 const ServiceWorkerVersion::StatusCallback& callback) {
747 DCHECK_CURRENTLY_ON(BrowserThread::IO); 760 DCHECK_CURRENTLY_ON(BrowserThread::IO);
748 DCHECK(active_version); 761 DCHECK(active_version);
749 762
750 if (active_version->running_status() != EmbeddedWorkerStatus::RUNNING) { 763 if (active_version->running_status() != EmbeddedWorkerStatus::RUNNING) {
751 active_version->RunAfterStartWorker( 764 active_version->RunAfterStartWorker(
752 ServiceWorkerMetrics::EventType::SYNC, 765 ServiceWorkerMetrics::EventType::SYNC,
753 base::Bind(&BackgroundSyncManager::DispatchSyncEvent, 766 base::AdaptCallbackForRepeating(
754 weak_ptr_factory_.GetWeakPtr(), tag, active_version, 767 base::BindOnce(&BackgroundSyncManager::DispatchSyncEvent,
755 last_chance, callback), 768 weak_ptr_factory_.GetWeakPtr(), tag, active_version,
769 last_chance, callback)),
756 callback); 770 callback);
757 return; 771 return;
758 } 772 }
759 773
760 int request_id = active_version->StartRequestWithCustomTimeout( 774 int request_id = active_version->StartRequestWithCustomTimeout(
761 ServiceWorkerMetrics::EventType::SYNC, callback, 775 ServiceWorkerMetrics::EventType::SYNC, callback,
762 parameters_->max_sync_event_duration, 776 parameters_->max_sync_event_duration,
763 ServiceWorkerVersion::CONTINUE_ON_TIMEOUT); 777 ServiceWorkerVersion::CONTINUE_ON_TIMEOUT);
764 778
765 active_version->event_dispatcher()->DispatchSyncEvent( 779 active_version->event_dispatcher()->DispatchSyncEvent(
766 tag, last_chance, 780 tag, last_chance,
767 base::Bind(&OnSyncEventFinished, std::move(active_version), request_id, 781 base::BindOnce(&OnSyncEventFinished, std::move(active_version),
768 callback)); 782 request_id, callback));
769 } 783 }
770 784
771 void BackgroundSyncManager::ScheduleDelayedTask(const base::Closure& callback, 785 void BackgroundSyncManager::ScheduleDelayedTask(base::OnceClosure callback,
772 base::TimeDelta delay) { 786 base::TimeDelta delay) {
773 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(FROM_HERE, callback, 787 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
774 delay); 788 FROM_HERE, std::move(callback), delay);
775 } 789 }
776 790
777 void BackgroundSyncManager::HasMainFrameProviderHost( 791 void BackgroundSyncManager::HasMainFrameProviderHost(const GURL& origin,
778 const GURL& origin, 792 BoolCallback callback) {
779 const BoolCallback& callback) { 793 service_worker_context_->HasMainFrameProviderHost(
780 service_worker_context_->HasMainFrameProviderHost(origin, callback); 794 origin, base::AdaptCallbackForRepeating(std::move(callback)));
781 } 795 }
782 796
783 void BackgroundSyncManager::GetRegistrationsImpl( 797 void BackgroundSyncManager::GetRegistrationsImpl(
784 int64_t sw_registration_id, 798 int64_t sw_registration_id,
785 const StatusAndRegistrationsCallback& callback) { 799 StatusAndRegistrationsCallback callback) {
786 DCHECK_CURRENTLY_ON(BrowserThread::IO); 800 DCHECK_CURRENTLY_ON(BrowserThread::IO);
787 801
788 std::vector<std::unique_ptr<BackgroundSyncRegistration>> out_registrations; 802 std::vector<std::unique_ptr<BackgroundSyncRegistration>> out_registrations;
789 803
790 if (disabled_) { 804 if (disabled_) {
791 base::ThreadTaskRunnerHandle::Get()->PostTask( 805 base::ThreadTaskRunnerHandle::Get()->PostTask(
792 FROM_HERE, base::Bind(callback, BACKGROUND_SYNC_STATUS_STORAGE_ERROR, 806 FROM_HERE, base::BindOnce(std::move(callback),
793 base::Passed(&out_registrations))); 807 BACKGROUND_SYNC_STATUS_STORAGE_ERROR,
808 base::Passed(&out_registrations)));
794 return; 809 return;
795 } 810 }
796 811
797 SWIdToRegistrationsMap::iterator it = 812 SWIdToRegistrationsMap::iterator it =
798 active_registrations_.find(sw_registration_id); 813 active_registrations_.find(sw_registration_id);
799 814
800 if (it != active_registrations_.end()) { 815 if (it != active_registrations_.end()) {
801 const BackgroundSyncRegistrations& registrations = it->second; 816 const BackgroundSyncRegistrations& registrations = it->second;
802 for (const auto& tag_and_registration : registrations.registration_map) { 817 for (const auto& tag_and_registration : registrations.registration_map) {
803 const BackgroundSyncRegistration& registration = 818 const BackgroundSyncRegistration& registration =
804 tag_and_registration.second; 819 tag_and_registration.second;
805 out_registrations.push_back( 820 out_registrations.push_back(
806 base::MakeUnique<BackgroundSyncRegistration>(registration)); 821 base::MakeUnique<BackgroundSyncRegistration>(registration));
807 } 822 }
808 } 823 }
809 824
810 base::ThreadTaskRunnerHandle::Get()->PostTask( 825 base::ThreadTaskRunnerHandle::Get()->PostTask(
811 FROM_HERE, base::Bind(callback, BACKGROUND_SYNC_STATUS_OK, 826 FROM_HERE, base::BindOnce(std::move(callback), BACKGROUND_SYNC_STATUS_OK,
812 base::Passed(&out_registrations))); 827 base::Passed(&out_registrations)));
813 } 828 }
814 829
815 bool BackgroundSyncManager::AreOptionConditionsMet( 830 bool BackgroundSyncManager::AreOptionConditionsMet(
816 const BackgroundSyncRegistrationOptions& options) { 831 const BackgroundSyncRegistrationOptions& options) {
817 DCHECK_CURRENTLY_ON(BrowserThread::IO); 832 DCHECK_CURRENTLY_ON(BrowserThread::IO);
818 return network_observer_->NetworkSufficient(options.network_state); 833 return network_observer_->NetworkSufficient(options.network_state);
819 } 834 }
820 835
821 bool BackgroundSyncManager::IsRegistrationReadyToFire( 836 bool BackgroundSyncManager::IsRegistrationReadyToFire(
822 const BackgroundSyncRegistration& registration) { 837 const BackgroundSyncRegistration& registration) {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
866 delayed_sync_task_.Reset(base::Bind(&BackgroundSyncManager::FireReadyEvents, 881 delayed_sync_task_.Reset(base::Bind(&BackgroundSyncManager::FireReadyEvents,
867 weak_ptr_factory_.GetWeakPtr())); 882 weak_ptr_factory_.GetWeakPtr()));
868 ScheduleDelayedTask(delayed_sync_task_.callback(), soonest_wakeup_delta); 883 ScheduleDelayedTask(delayed_sync_task_.callback(), soonest_wakeup_delta);
869 } 884 }
870 885
871 // In case the browser closes (or to prevent it from closing), call 886 // In case the browser closes (or to prevent it from closing), call
872 // RunInBackground to either wake up the browser at the wakeup delta or to 887 // RunInBackground to either wake up the browser at the wakeup delta or to
873 // keep the browser running. 888 // keep the browser running.
874 BrowserThread::PostTask( 889 BrowserThread::PostTask(
875 BrowserThread::UI, FROM_HERE, 890 BrowserThread::UI, FROM_HERE,
876 base::Bind(RunInBackgroundOnUIThread, service_worker_context_, 891 base::BindOnce(
877 !soonest_wakeup_delta.is_max() /* should run in background */, 892 RunInBackgroundOnUIThread, service_worker_context_,
878 soonest_wakeup_delta.InMilliseconds())); 893 !soonest_wakeup_delta.is_max() /* should run in background */,
894 soonest_wakeup_delta.InMilliseconds()));
879 } 895 }
880 896
881 void BackgroundSyncManager::FireReadyEvents() { 897 void BackgroundSyncManager::FireReadyEvents() {
882 DCHECK_CURRENTLY_ON(BrowserThread::IO); 898 DCHECK_CURRENTLY_ON(BrowserThread::IO);
883 899
884 if (disabled_) 900 if (disabled_)
885 return; 901 return;
886 902
887 op_scheduler_.ScheduleOperation( 903 op_scheduler_.ScheduleOperation(
888 base::Bind(&BackgroundSyncManager::FireReadyEventsImpl, 904 base::BindOnce(&BackgroundSyncManager::FireReadyEventsImpl,
889 weak_ptr_factory_.GetWeakPtr(), MakeEmptyCompletion())); 905 weak_ptr_factory_.GetWeakPtr(), MakeEmptyCompletion()));
890 } 906 }
891 907
892 void BackgroundSyncManager::FireReadyEventsImpl(const base::Closure& callback) { 908 void BackgroundSyncManager::FireReadyEventsImpl(base::OnceClosure callback) {
893 DCHECK_CURRENTLY_ON(BrowserThread::IO); 909 DCHECK_CURRENTLY_ON(BrowserThread::IO);
894 910
895 if (disabled_) { 911 if (disabled_) {
896 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 912 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
913 std::move(callback));
897 return; 914 return;
898 } 915 }
899 916
900 // Find the registrations that are ready to run. 917 // Find the registrations that are ready to run.
901 std::vector<std::pair<int64_t, std::string>> sw_id_and_tags_to_fire; 918 std::vector<std::pair<int64_t, std::string>> sw_id_and_tags_to_fire;
902 919
903 for (auto& sw_id_and_registrations : active_registrations_) { 920 for (auto& sw_id_and_registrations : active_registrations_) {
904 const int64_t service_worker_id = sw_id_and_registrations.first; 921 const int64_t service_worker_id = sw_id_and_registrations.first;
905 for (auto& key_and_registration : 922 for (auto& key_and_registration :
906 sw_id_and_registrations.second.registration_map) { 923 sw_id_and_registrations.second.registration_map) {
907 BackgroundSyncRegistration* registration = &key_and_registration.second; 924 BackgroundSyncRegistration* registration = &key_and_registration.second;
908 if (IsRegistrationReadyToFire(*registration)) { 925 if (IsRegistrationReadyToFire(*registration)) {
909 sw_id_and_tags_to_fire.push_back( 926 sw_id_and_tags_to_fire.push_back(
910 std::make_pair(service_worker_id, key_and_registration.first)); 927 std::make_pair(service_worker_id, key_and_registration.first));
911 // The state change is not saved to persistent storage because 928 // The state change is not saved to persistent storage because
912 // if the sync event is killed mid-sync then it should return to 929 // if the sync event is killed mid-sync then it should return to
913 // SYNC_STATE_PENDING. 930 // SYNC_STATE_PENDING.
914 registration->set_sync_state(blink::mojom::BackgroundSyncState::FIRING); 931 registration->set_sync_state(blink::mojom::BackgroundSyncState::FIRING);
915 } 932 }
916 } 933 }
917 } 934 }
918 935
919 if (sw_id_and_tags_to_fire.empty()) { 936 if (sw_id_and_tags_to_fire.empty()) {
920 RunInBackgroundIfNecessary(); 937 RunInBackgroundIfNecessary();
921 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 938 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
939 std::move(callback));
922 return; 940 return;
923 } 941 }
924 942
925 base::TimeTicks start_time = base::TimeTicks::Now(); 943 base::TimeTicks start_time = base::TimeTicks::Now();
926 944
927 // Fire the sync event of the ready registrations and run |callback| once 945 // Fire the sync event of the ready registrations and run |callback| once
928 // they're all done. 946 // they're all done.
929 base::Closure events_fired_barrier_closure = base::BarrierClosure( 947 base::RepeatingClosure events_fired_barrier_closure = base::BarrierClosure(
930 sw_id_and_tags_to_fire.size(), 948 sw_id_and_tags_to_fire.size(),
931 base::Bind(&BackgroundSyncManager::FireReadyEventsAllEventsFiring, 949 base::BindOnce(&BackgroundSyncManager::FireReadyEventsAllEventsFiring,
932 weak_ptr_factory_.GetWeakPtr(), callback)); 950 weak_ptr_factory_.GetWeakPtr(), std::move(callback)));
933 951
934 // Record the total time taken after all events have run to completion. 952 // Record the total time taken after all events have run to completion.
935 base::Closure events_completed_barrier_closure = 953 base::RepeatingClosure events_completed_barrier_closure =
936 base::BarrierClosure(sw_id_and_tags_to_fire.size(), 954 base::BarrierClosure(sw_id_and_tags_to_fire.size(),
937 base::Bind(&OnAllSyncEventsCompleted, start_time, 955 base::BindOnce(&OnAllSyncEventsCompleted, start_time,
938 sw_id_and_tags_to_fire.size())); 956 sw_id_and_tags_to_fire.size()));
939 957
940 for (const auto& sw_id_and_tag : sw_id_and_tags_to_fire) { 958 for (const auto& sw_id_and_tag : sw_id_and_tags_to_fire) {
941 int64_t service_worker_id = sw_id_and_tag.first; 959 int64_t service_worker_id = sw_id_and_tag.first;
942 const BackgroundSyncRegistration* registration = 960 const BackgroundSyncRegistration* registration =
943 LookupActiveRegistration(service_worker_id, sw_id_and_tag.second); 961 LookupActiveRegistration(service_worker_id, sw_id_and_tag.second);
944 DCHECK(registration); 962 DCHECK(registration);
945 963
946 service_worker_context_->FindReadyRegistrationForId( 964 service_worker_context_->FindReadyRegistrationForId(
947 service_worker_id, active_registrations_[service_worker_id].origin, 965 service_worker_id, active_registrations_[service_worker_id].origin,
948 base::Bind(&BackgroundSyncManager::FireReadyEventsDidFindRegistration, 966 base::AdaptCallbackForRepeating(base::BindOnce(
949 weak_ptr_factory_.GetWeakPtr(), sw_id_and_tag.second, 967 &BackgroundSyncManager::FireReadyEventsDidFindRegistration,
950 registration->id(), events_fired_barrier_closure, 968 weak_ptr_factory_.GetWeakPtr(), sw_id_and_tag.second,
951 events_completed_barrier_closure)); 969 registration->id(), events_fired_barrier_closure,
970 events_completed_barrier_closure)));
952 } 971 }
953 } 972 }
954 973
955 void BackgroundSyncManager::FireReadyEventsDidFindRegistration( 974 void BackgroundSyncManager::FireReadyEventsDidFindRegistration(
956 const std::string& tag, 975 const std::string& tag,
957 BackgroundSyncRegistration::RegistrationId registration_id, 976 BackgroundSyncRegistration::RegistrationId registration_id,
958 const base::Closure& event_fired_callback, 977 base::OnceClosure event_fired_callback,
959 const base::Closure& event_completed_callback, 978 base::OnceClosure event_completed_callback,
960 ServiceWorkerStatusCode service_worker_status, 979 ServiceWorkerStatusCode service_worker_status,
961 scoped_refptr<ServiceWorkerRegistration> service_worker_registration) { 980 scoped_refptr<ServiceWorkerRegistration> service_worker_registration) {
962 DCHECK_CURRENTLY_ON(BrowserThread::IO); 981 DCHECK_CURRENTLY_ON(BrowserThread::IO);
963 if (service_worker_status != SERVICE_WORKER_OK) { 982 if (service_worker_status != SERVICE_WORKER_OK) {
964 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 983 base::ThreadTaskRunnerHandle::Get()->PostTask(
965 event_fired_callback); 984 FROM_HERE, std::move(event_fired_callback));
966 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 985 base::ThreadTaskRunnerHandle::Get()->PostTask(
967 event_completed_callback); 986 FROM_HERE, std::move(event_completed_callback));
968 return; 987 return;
969 } 988 }
970 989
971 BackgroundSyncRegistration* registration = 990 BackgroundSyncRegistration* registration =
972 LookupActiveRegistration(service_worker_registration->id(), tag); 991 LookupActiveRegistration(service_worker_registration->id(), tag);
973 DCHECK(registration); 992 DCHECK(registration);
974 993
975 num_firing_registrations_ += 1; 994 num_firing_registrations_ += 1;
976 995
977 blink::mojom::BackgroundSyncEventLastChance last_chance = 996 blink::mojom::BackgroundSyncEventLastChance last_chance =
978 registration->num_attempts() == parameters_->max_sync_attempts - 1 997 registration->num_attempts() == parameters_->max_sync_attempts - 1
979 ? blink::mojom::BackgroundSyncEventLastChance::IS_LAST_CHANCE 998 ? blink::mojom::BackgroundSyncEventLastChance::IS_LAST_CHANCE
980 : blink::mojom::BackgroundSyncEventLastChance::IS_NOT_LAST_CHANCE; 999 : blink::mojom::BackgroundSyncEventLastChance::IS_NOT_LAST_CHANCE;
981 1000
982 HasMainFrameProviderHost( 1001 HasMainFrameProviderHost(
983 service_worker_registration->pattern().GetOrigin(), 1002 service_worker_registration->pattern().GetOrigin(),
984 base::Bind(&BackgroundSyncMetrics::RecordEventStarted)); 1003 base::BindOnce(&BackgroundSyncMetrics::RecordEventStarted));
985 1004
986 DispatchSyncEvent( 1005 DispatchSyncEvent(
987 registration->options()->tag, 1006 registration->options()->tag,
988 service_worker_registration->active_version(), last_chance, 1007 service_worker_registration->active_version(), last_chance,
989 base::Bind(&BackgroundSyncManager::EventComplete, 1008 base::AdaptCallbackForRepeating(base::BindOnce(
990 weak_ptr_factory_.GetWeakPtr(), service_worker_registration, 1009 &BackgroundSyncManager::EventComplete, weak_ptr_factory_.GetWeakPtr(),
991 service_worker_registration->id(), tag, 1010 service_worker_registration, service_worker_registration->id(), tag,
992 event_completed_callback)); 1011 std::move(event_completed_callback))));
993 1012
994 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 1013 base::ThreadTaskRunnerHandle::Get()->PostTask(
995 event_fired_callback); 1014 FROM_HERE, std::move(event_fired_callback));
996 } 1015 }
997 1016
998 void BackgroundSyncManager::FireReadyEventsAllEventsFiring( 1017 void BackgroundSyncManager::FireReadyEventsAllEventsFiring(
999 const base::Closure& callback) { 1018 base::OnceClosure callback) {
1000 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1019 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1001 1020
1002 RunInBackgroundIfNecessary(); 1021 RunInBackgroundIfNecessary();
1003 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1022 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(callback));
1004 } 1023 }
1005 1024
1006 // |service_worker_registration| is just to keep the registration alive 1025 // |service_worker_registration| is just to keep the registration alive
1007 // while the event is firing. 1026 // while the event is firing.
1008 void BackgroundSyncManager::EventComplete( 1027 void BackgroundSyncManager::EventComplete(
1009 scoped_refptr<ServiceWorkerRegistration> service_worker_registration, 1028 scoped_refptr<ServiceWorkerRegistration> service_worker_registration,
1010 int64_t service_worker_id, 1029 int64_t service_worker_id,
1011 const std::string& tag, 1030 const std::string& tag,
1012 const base::Closure& callback, 1031 base::OnceClosure callback,
1013 ServiceWorkerStatusCode status_code) { 1032 ServiceWorkerStatusCode status_code) {
1014 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1033 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1015 1034
1016 if (disabled_) { 1035 if (disabled_) {
1017 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1036 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
1037 std::move(callback));
1018 return; 1038 return;
1019 } 1039 }
1020 1040
1021 op_scheduler_.ScheduleOperation( 1041 op_scheduler_.ScheduleOperation(base::BindOnce(
1022 base::Bind(&BackgroundSyncManager::EventCompleteImpl, 1042 &BackgroundSyncManager::EventCompleteImpl, weak_ptr_factory_.GetWeakPtr(),
1023 weak_ptr_factory_.GetWeakPtr(), service_worker_id, tag, 1043 service_worker_id, tag, status_code,
1024 status_code, op_scheduler_.WrapCallbackToRunNext(callback))); 1044 op_scheduler_.WrapCallbackToRunNext(std::move(callback))));
1025 } 1045 }
1026 1046
1027 void BackgroundSyncManager::EventCompleteImpl( 1047 void BackgroundSyncManager::EventCompleteImpl(
1028 int64_t service_worker_id, 1048 int64_t service_worker_id,
1029 const std::string& tag, 1049 const std::string& tag,
1030 ServiceWorkerStatusCode status_code, 1050 ServiceWorkerStatusCode status_code,
1031 const base::Closure& callback) { 1051 base::OnceClosure callback) {
1032 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1052 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1033 1053
1034 if (disabled_) { 1054 if (disabled_) {
1035 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1055 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
1056 std::move(callback));
1036 return; 1057 return;
1037 } 1058 }
1038 1059
1039 num_firing_registrations_ -= 1; 1060 num_firing_registrations_ -= 1;
1040 1061
1041 BackgroundSyncRegistration* registration = 1062 BackgroundSyncRegistration* registration =
1042 LookupActiveRegistration(service_worker_id, tag); 1063 LookupActiveRegistration(service_worker_id, tag);
1043 if (!registration) { 1064 if (!registration) {
1044 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1065 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
1066 std::move(callback));
1045 return; 1067 return;
1046 } 1068 }
1047 1069
1048 DCHECK_NE(blink::mojom::BackgroundSyncState::PENDING, 1070 DCHECK_NE(blink::mojom::BackgroundSyncState::PENDING,
1049 registration->sync_state()); 1071 registration->sync_state());
1050 1072
1051 registration->set_num_attempts(registration->num_attempts() + 1); 1073 registration->set_num_attempts(registration->num_attempts() + 1);
1052 1074
1053 // The event ran to completion, we should count it, no matter what happens 1075 // The event ran to completion, we should count it, no matter what happens
1054 // from here. 1076 // from here.
1055 ServiceWorkerRegistration* sw_registration = 1077 ServiceWorkerRegistration* sw_registration =
1056 service_worker_context_->GetLiveRegistration(service_worker_id); 1078 service_worker_context_->GetLiveRegistration(service_worker_id);
1057 if (sw_registration) { 1079 if (sw_registration) {
1058 HasMainFrameProviderHost( 1080 HasMainFrameProviderHost(
1059 sw_registration->pattern().GetOrigin(), 1081 sw_registration->pattern().GetOrigin(),
1060 base::Bind(&BackgroundSyncMetrics::RecordEventResult, 1082 base::BindOnce(&BackgroundSyncMetrics::RecordEventResult,
1061 status_code == SERVICE_WORKER_OK)); 1083 status_code == SERVICE_WORKER_OK));
1062 } 1084 }
1063 1085
1064 bool registration_completed = true; 1086 bool registration_completed = true;
1065 bool can_retry = 1087 bool can_retry =
1066 registration->num_attempts() < parameters_->max_sync_attempts; 1088 registration->num_attempts() < parameters_->max_sync_attempts;
1067 1089
1068 if (registration->sync_state() == 1090 if (registration->sync_state() ==
1069 blink::mojom::BackgroundSyncState::REREGISTERED_WHILE_FIRING) { 1091 blink::mojom::BackgroundSyncState::REREGISTERED_WHILE_FIRING) {
1070 registration->set_sync_state(blink::mojom::BackgroundSyncState::PENDING); 1092 registration->set_sync_state(blink::mojom::BackgroundSyncState::PENDING);
1071 registration->set_num_attempts(0); 1093 registration->set_num_attempts(0);
(...skipping 11 matching lines...) Expand all
1083 if (registration_completed) { 1105 if (registration_completed) {
1084 const std::string& tag = registration->options()->tag; 1106 const std::string& tag = registration->options()->tag;
1085 BackgroundSyncRegistration* active_registration = 1107 BackgroundSyncRegistration* active_registration =
1086 LookupActiveRegistration(service_worker_id, tag); 1108 LookupActiveRegistration(service_worker_id, tag);
1087 if (active_registration && 1109 if (active_registration &&
1088 active_registration->id() == registration->id()) { 1110 active_registration->id() == registration->id()) {
1089 RemoveActiveRegistration(service_worker_id, tag); 1111 RemoveActiveRegistration(service_worker_id, tag);
1090 } 1112 }
1091 } 1113 }
1092 1114
1093 StoreRegistrations( 1115 StoreRegistrations(service_worker_id,
1094 service_worker_id, 1116 base::AdaptCallbackForRepeating(base::BindOnce(
1095 base::Bind(&BackgroundSyncManager::EventCompleteDidStore, 1117 &BackgroundSyncManager::EventCompleteDidStore,
1096 weak_ptr_factory_.GetWeakPtr(), service_worker_id, callback)); 1118 weak_ptr_factory_.GetWeakPtr(), service_worker_id,
1119 std::move(callback))));
1097 } 1120 }
1098 1121
1099 void BackgroundSyncManager::EventCompleteDidStore( 1122 void BackgroundSyncManager::EventCompleteDidStore(
1100 int64_t service_worker_id, 1123 int64_t service_worker_id,
1101 const base::Closure& callback, 1124 base::OnceClosure callback,
1102 ServiceWorkerStatusCode status_code) { 1125 ServiceWorkerStatusCode status_code) {
1103 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1126 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1104 1127
1105 if (status_code == SERVICE_WORKER_ERROR_NOT_FOUND) { 1128 if (status_code == SERVICE_WORKER_ERROR_NOT_FOUND) {
1106 // The registration is gone. 1129 // The registration is gone.
1107 active_registrations_.erase(service_worker_id); 1130 active_registrations_.erase(service_worker_id);
1108 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1131 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
1132 std::move(callback));
1109 return; 1133 return;
1110 } 1134 }
1111 1135
1112 if (status_code != SERVICE_WORKER_OK) { 1136 if (status_code != SERVICE_WORKER_OK) {
1113 LOG(ERROR) << "BackgroundSync failed to store registration due to backend " 1137 LOG(ERROR) << "BackgroundSync failed to store registration due to backend "
1114 "failure."; 1138 "failure.";
1115 DisableAndClearManager(callback); 1139 DisableAndClearManager(std::move(callback));
1116 return; 1140 return;
1117 } 1141 }
1118 1142
1119 // Fire any ready events and call RunInBackground if anything is waiting. 1143 // Fire any ready events and call RunInBackground if anything is waiting.
1120 FireReadyEvents(); 1144 FireReadyEvents();
1121 1145
1122 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1146 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(callback));
1123 } 1147 }
1124 1148
1125 // static 1149 // static
1126 void BackgroundSyncManager::OnAllSyncEventsCompleted( 1150 void BackgroundSyncManager::OnAllSyncEventsCompleted(
1127 const base::TimeTicks& start_time, 1151 const base::TimeTicks& start_time,
1128 int number_of_batched_sync_events) { 1152 int number_of_batched_sync_events) {
1129 // Record the combined time taken by all sync events. 1153 // Record the combined time taken by all sync events.
1130 BackgroundSyncMetrics::RecordBatchSyncEventComplete( 1154 BackgroundSyncMetrics::RecordBatchSyncEventComplete(
1131 base::TimeTicks::Now() - start_time, number_of_batched_sync_events); 1155 base::TimeTicks::Now() - start_time, number_of_batched_sync_events);
1132 } 1156 }
1133 1157
1134 void BackgroundSyncManager::OnRegistrationDeletedImpl( 1158 void BackgroundSyncManager::OnRegistrationDeletedImpl(
1135 int64_t sw_registration_id, 1159 int64_t sw_registration_id,
1136 const base::Closure& callback) { 1160 base::OnceClosure callback) {
1137 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1161 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1138 1162
1139 // The backend (ServiceWorkerStorage) will delete the data, so just delete the 1163 // The backend (ServiceWorkerStorage) will delete the data, so just delete the
1140 // memory representation here. 1164 // memory representation here.
1141 active_registrations_.erase(sw_registration_id); 1165 active_registrations_.erase(sw_registration_id);
1142 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1166 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(callback));
1143 } 1167 }
1144 1168
1145 void BackgroundSyncManager::OnStorageWipedImpl(const base::Closure& callback) { 1169 void BackgroundSyncManager::OnStorageWipedImpl(base::OnceClosure callback) {
1146 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1170 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1147 1171
1148 active_registrations_.clear(); 1172 active_registrations_.clear();
1149 disabled_ = false; 1173 disabled_ = false;
1150 InitImpl(callback); 1174 InitImpl(std::move(callback));
1151 } 1175 }
1152 1176
1153 void BackgroundSyncManager::OnNetworkChanged() { 1177 void BackgroundSyncManager::OnNetworkChanged() {
1154 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1178 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1155 1179
1156 FireReadyEvents(); 1180 FireReadyEvents();
1157 } 1181 }
1158 1182
1159 void BackgroundSyncManager::SetMaxSyncAttemptsImpl( 1183 void BackgroundSyncManager::SetMaxSyncAttemptsImpl(int max_attempts,
1160 int max_attempts, 1184 base::OnceClosure callback) {
1161 const base::Closure& callback) {
1162 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1185 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1163 1186
1164 parameters_->max_sync_attempts = max_attempts; 1187 parameters_->max_sync_attempts = max_attempts;
1165 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, callback); 1188 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, std::move(callback));
1166 } 1189 }
1167 1190
1168 base::Closure BackgroundSyncManager::MakeEmptyCompletion() { 1191 base::OnceClosure BackgroundSyncManager::MakeEmptyCompletion() {
1169 DCHECK_CURRENTLY_ON(BrowserThread::IO); 1192 DCHECK_CURRENTLY_ON(BrowserThread::IO);
1170 return op_scheduler_.WrapCallbackToRunNext(base::Bind(&base::DoNothing)); 1193 return op_scheduler_.WrapCallbackToRunNext(base::BindOnce(&base::DoNothing));
1171 } 1194 }
1172 1195
1173 } // namespace content 1196 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698