| 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_manager.h" | 5 #include "content/browser/background_sync/background_sync_manager.h" |
| 6 | 6 |
| 7 #include "base/barrier_closure.h" | 7 #include "base/barrier_closure.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "content/browser/background_sync/background_sync.pb.h" | 9 #include "content/browser/background_sync/background_sync.pb.h" |
| 10 #include "content/browser/service_worker/service_worker_context_wrapper.h" | 10 #include "content/browser/service_worker/service_worker_context_wrapper.h" |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 return; | 375 return; |
| 376 } | 376 } |
| 377 | 377 |
| 378 // TODO(jkarlin): Run the registration algorithm. | 378 // TODO(jkarlin): Run the registration algorithm. |
| 379 base::MessageLoop::current()->PostTask( | 379 base::MessageLoop::current()->PostTask( |
| 380 FROM_HERE, base::Bind(callback, ERROR_TYPE_OK, new_registration)); | 380 FROM_HERE, base::Bind(callback, ERROR_TYPE_OK, new_registration)); |
| 381 } | 381 } |
| 382 | 382 |
| 383 void BackgroundSyncManager::RemoveRegistrationFromMap( | 383 void BackgroundSyncManager::RemoveRegistrationFromMap( |
| 384 int64 sw_registration_id, | 384 int64 sw_registration_id, |
| 385 const std::string& sync_registration_name, | 385 const std::string& sync_registration_name) { |
| 386 BackgroundSyncRegistration* old_registration) { | |
| 387 DCHECK( | 386 DCHECK( |
| 388 LookupRegistration(sw_registration_id, sync_registration_name, nullptr)); | 387 LookupRegistration(sw_registration_id, sync_registration_name, nullptr)); |
| 389 | 388 |
| 390 BackgroundSyncRegistrations* registrations = | 389 BackgroundSyncRegistrations* registrations = |
| 391 &sw_to_registrations_map_[sw_registration_id]; | 390 &sw_to_registrations_map_[sw_registration_id]; |
| 392 | 391 |
| 393 const auto name_and_registration_iter = | 392 registrations->name_to_registration_map.erase(sync_registration_name); |
| 394 registrations->name_to_registration_map.find(sync_registration_name); | |
| 395 if (old_registration) | |
| 396 *old_registration = name_and_registration_iter->second; | |
| 397 | |
| 398 registrations->name_to_registration_map.erase(name_and_registration_iter); | |
| 399 } | 393 } |
| 400 | 394 |
| 401 void BackgroundSyncManager::AddRegistrationToMap( | 395 void BackgroundSyncManager::AddRegistrationToMap( |
| 402 int64 sw_registration_id, | 396 int64 sw_registration_id, |
| 403 const BackgroundSyncRegistration& sync_registration) { | 397 const BackgroundSyncRegistration& sync_registration) { |
| 404 DCHECK_NE(BackgroundSyncRegistration::kInvalidRegistrationId, | 398 DCHECK_NE(BackgroundSyncRegistration::kInvalidRegistrationId, |
| 405 sw_registration_id); | 399 sw_registration_id); |
| 406 | 400 |
| 407 BackgroundSyncRegistrations* registrations = | 401 BackgroundSyncRegistrations* registrations = |
| 408 &sw_to_registrations_map_[sw_registration_id]; | 402 &sw_to_registrations_map_[sw_registration_id]; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 444 | 438 |
| 445 BackgroundSyncRegistration existing_registration; | 439 BackgroundSyncRegistration existing_registration; |
| 446 if (!LookupRegistration(sw_registration_id, sync_registration_name, | 440 if (!LookupRegistration(sw_registration_id, sync_registration_name, |
| 447 &existing_registration) || | 441 &existing_registration) || |
| 448 existing_registration.id != sync_registration_id) { | 442 existing_registration.id != sync_registration_id) { |
| 449 base::MessageLoop::current()->PostTask( | 443 base::MessageLoop::current()->PostTask( |
| 450 FROM_HERE, base::Bind(callback, ERROR_TYPE_NOT_FOUND)); | 444 FROM_HERE, base::Bind(callback, ERROR_TYPE_NOT_FOUND)); |
| 451 return; | 445 return; |
| 452 } | 446 } |
| 453 | 447 |
| 454 BackgroundSyncRegistration old_sync_registration; | 448 RemoveRegistrationFromMap(sw_registration_id, sync_registration_name); |
| 455 RemoveRegistrationFromMap(sw_registration_id, sync_registration_name, | |
| 456 &old_sync_registration); | |
| 457 | 449 |
| 458 StoreRegistrations( | 450 StoreRegistrations( |
| 459 origin, sw_registration_id, | 451 origin, sw_registration_id, |
| 460 base::Bind(&BackgroundSyncManager::UnregisterDidStore, | 452 base::Bind(&BackgroundSyncManager::UnregisterDidStore, |
| 461 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, | 453 weak_ptr_factory_.GetWeakPtr(), sw_registration_id, callback)); |
| 462 old_sync_registration, callback)); | |
| 463 } | 454 } |
| 464 | 455 |
| 465 void BackgroundSyncManager::UnregisterDidStore( | 456 void BackgroundSyncManager::UnregisterDidStore( |
| 466 int64 sw_registration_id, | 457 int64 sw_registration_id, |
| 467 const BackgroundSyncRegistration& old_sync_registration, | |
| 468 const StatusCallback& callback, | 458 const StatusCallback& callback, |
| 469 ServiceWorkerStatusCode status) { | 459 ServiceWorkerStatusCode status) { |
| 470 if (status == SERVICE_WORKER_ERROR_NOT_FOUND) { | 460 if (status == SERVICE_WORKER_ERROR_NOT_FOUND) { |
| 471 // ServiceWorker was unregistered. | 461 // ServiceWorker was unregistered. |
| 472 sw_to_registrations_map_.erase(sw_registration_id); | 462 sw_to_registrations_map_.erase(sw_registration_id); |
| 473 base::MessageLoop::current()->PostTask( | 463 base::MessageLoop::current()->PostTask( |
| 474 FROM_HERE, base::Bind(callback, ERROR_TYPE_STORAGE)); | 464 FROM_HERE, base::Bind(callback, ERROR_TYPE_STORAGE)); |
| 475 return; | 465 return; |
| 476 } | 466 } |
| 477 | 467 |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 weak_ptr_factory_.GetWeakPtr(), callback); | 559 weak_ptr_factory_.GetWeakPtr(), callback); |
| 570 } | 560 } |
| 571 | 561 |
| 572 BackgroundSyncManager::StatusCallback | 562 BackgroundSyncManager::StatusCallback |
| 573 BackgroundSyncManager::MakeStatusCompletion(const StatusCallback& callback) { | 563 BackgroundSyncManager::MakeStatusCompletion(const StatusCallback& callback) { |
| 574 return base::Bind(&BackgroundSyncManager::PendingStatusCallback, | 564 return base::Bind(&BackgroundSyncManager::PendingStatusCallback, |
| 575 weak_ptr_factory_.GetWeakPtr(), callback); | 565 weak_ptr_factory_.GetWeakPtr(), callback); |
| 576 } | 566 } |
| 577 | 567 |
| 578 } // namespace content | 568 } // namespace content |
| OLD | NEW |