| Index: content/browser/background_sync/background_sync_manager.cc
|
| diff --git a/content/browser/background_sync/background_sync_manager.cc b/content/browser/background_sync/background_sync_manager.cc
|
| index 79f2c78460fdbc02b519de94b16159b2c892d1aa..8f8a38b1168e89f82ad979852de1a3a46280a5cb 100644
|
| --- a/content/browser/background_sync/background_sync_manager.cc
|
| +++ b/content/browser/background_sync/background_sync_manager.cc
|
| @@ -149,21 +149,6 @@ BackgroundSyncManager::~BackgroundSyncManager() {
|
| service_worker_context_->RemoveObserver(this);
|
| }
|
|
|
| -BackgroundSyncManager::RegistrationKey::RegistrationKey(
|
| - const BackgroundSyncRegistration& registration)
|
| - : RegistrationKey(registration.options()->tag) {}
|
| -
|
| -BackgroundSyncManager::RegistrationKey::RegistrationKey(
|
| - const BackgroundSyncRegistrationOptions& options)
|
| - : RegistrationKey(options.tag) {}
|
| -
|
| -BackgroundSyncManager::RegistrationKey::RegistrationKey(const std::string& tag)
|
| - : value_("o_" + tag) {
|
| - // Note that the "o_" prefix on the key is because at one time one-shots were
|
| - // prefixed with an "o_" and periodic with a "p_". Removing the "o_" requires
|
| - // migration.
|
| -}
|
| -
|
| void BackgroundSyncManager::Register(
|
| int64_t sw_registration_id,
|
| const BackgroundSyncRegistrationOptions& options,
|
| @@ -347,10 +332,8 @@ void BackgroundSyncManager::InitDidGetDataFromBackend(
|
| break;
|
| }
|
|
|
| - RegistrationKey registration_key(registration_proto.tag());
|
| -
|
| BackgroundSyncRegistration* registration =
|
| - ®istrations->registration_map[registration_key];
|
| + ®istrations->registration_map[registration_proto.tag()];
|
|
|
| BackgroundSyncRegistrationOptions* options = registration->options();
|
| options->tag = registration_proto.tag();
|
| @@ -452,7 +435,7 @@ void BackgroundSyncManager::RegisterImpl(
|
| sw_registration->pattern().GetOrigin()));
|
|
|
| BackgroundSyncRegistration* existing_registration =
|
| - LookupActiveRegistration(sw_registration_id, RegistrationKey(options));
|
| + LookupActiveRegistration(sw_registration_id, options.tag);
|
| if (existing_registration) {
|
| DCHECK(existing_registration->options()->Equals(options));
|
|
|
| @@ -554,7 +537,7 @@ void BackgroundSyncManager::DisableAndClearManagerClearedOne(
|
|
|
| BackgroundSyncRegistration* BackgroundSyncManager::LookupActiveRegistration(
|
| int64_t sw_registration_id,
|
| - const RegistrationKey& registration_key) {
|
| + const std::string& tag) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
|
|
| SWIdToRegistrationsMap::iterator it =
|
| @@ -566,8 +549,7 @@ BackgroundSyncRegistration* BackgroundSyncManager::LookupActiveRegistration(
|
| DCHECK_LE(BackgroundSyncRegistration::kInitialId, registrations.next_id);
|
| DCHECK(!registrations.origin.is_empty());
|
|
|
| - auto key_and_registration_iter =
|
| - registrations.registration_map.find(registration_key);
|
| + auto key_and_registration_iter = registrations.registration_map.find(tag);
|
| if (key_and_registration_iter == registrations.registration_map.end())
|
| return nullptr;
|
|
|
| @@ -651,16 +633,15 @@ void BackgroundSyncManager::RegisterDidStore(
|
| new BackgroundSyncRegistration(new_registration)))));
|
| }
|
|
|
| -void BackgroundSyncManager::RemoveActiveRegistration(
|
| - int64_t sw_registration_id,
|
| - const RegistrationKey& registration_key) {
|
| +void BackgroundSyncManager::RemoveActiveRegistration(int64_t sw_registration_id,
|
| + const std::string& tag) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - DCHECK(LookupActiveRegistration(sw_registration_id, registration_key));
|
| + DCHECK(LookupActiveRegistration(sw_registration_id, tag));
|
|
|
| BackgroundSyncRegistrations* registrations =
|
| &active_registrations_[sw_registration_id];
|
|
|
| - registrations->registration_map.erase(registration_key);
|
| + registrations->registration_map.erase(tag);
|
| }
|
|
|
| void BackgroundSyncManager::AddActiveRegistration(
|
| @@ -674,8 +655,8 @@ void BackgroundSyncManager::AddActiveRegistration(
|
| &active_registrations_[sw_registration_id];
|
| registrations->origin = origin;
|
|
|
| - RegistrationKey registration_key(sync_registration);
|
| - registrations->registration_map[registration_key] = sync_registration;
|
| + registrations->registration_map[sync_registration.options()->tag] =
|
| + sync_registration;
|
| }
|
|
|
| void BackgroundSyncManager::StoreDataInBackend(
|
| @@ -863,7 +844,7 @@ void BackgroundSyncManager::FireReadyEventsImpl(const base::Closure& callback) {
|
| }
|
|
|
| // Find the registrations that are ready to run.
|
| - std::vector<std::pair<int64_t, RegistrationKey>> sw_id_and_keys_to_fire;
|
| + std::vector<std::pair<int64_t, std::string>> sw_id_and_tags_to_fire;
|
|
|
| for (auto& sw_id_and_registrations : active_registrations_) {
|
| const int64_t service_worker_id = sw_id_and_registrations.first;
|
| @@ -871,7 +852,7 @@ void BackgroundSyncManager::FireReadyEventsImpl(const base::Closure& callback) {
|
| sw_id_and_registrations.second.registration_map) {
|
| BackgroundSyncRegistration* registration = &key_and_registration.second;
|
| if (IsRegistrationReadyToFire(*registration)) {
|
| - sw_id_and_keys_to_fire.push_back(
|
| + sw_id_and_tags_to_fire.push_back(
|
| std::make_pair(service_worker_id, key_and_registration.first));
|
| // The state change is not saved to persistent storage because
|
| // if the sync event is killed mid-sync then it should return to
|
| @@ -881,7 +862,7 @@ void BackgroundSyncManager::FireReadyEventsImpl(const base::Closure& callback) {
|
| }
|
| }
|
|
|
| - if (sw_id_and_keys_to_fire.empty()) {
|
| + if (sw_id_and_tags_to_fire.empty()) {
|
| RunInBackgroundIfNecessary();
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| base::Bind(callback));
|
| @@ -893,33 +874,33 @@ void BackgroundSyncManager::FireReadyEventsImpl(const base::Closure& callback) {
|
| // Fire the sync event of the ready registrations and run |callback| once
|
| // they're all done.
|
| base::Closure events_fired_barrier_closure = base::BarrierClosure(
|
| - sw_id_and_keys_to_fire.size(),
|
| + sw_id_and_tags_to_fire.size(),
|
| base::Bind(&BackgroundSyncManager::FireReadyEventsAllEventsFiring,
|
| weak_ptr_factory_.GetWeakPtr(), callback));
|
|
|
| // Record the total time taken after all events have run to completion.
|
| base::Closure events_completed_barrier_closure =
|
| - base::BarrierClosure(sw_id_and_keys_to_fire.size(),
|
| + base::BarrierClosure(sw_id_and_tags_to_fire.size(),
|
| base::Bind(&OnAllSyncEventsCompleted, start_time,
|
| - sw_id_and_keys_to_fire.size()));
|
| + sw_id_and_tags_to_fire.size()));
|
|
|
| - for (const auto& sw_id_and_key : sw_id_and_keys_to_fire) {
|
| - int64_t service_worker_id = sw_id_and_key.first;
|
| + for (const auto& sw_id_and_tag : sw_id_and_tags_to_fire) {
|
| + int64_t service_worker_id = sw_id_and_tag.first;
|
| const BackgroundSyncRegistration* registration =
|
| - LookupActiveRegistration(service_worker_id, sw_id_and_key.second);
|
| + LookupActiveRegistration(service_worker_id, sw_id_and_tag.second);
|
| DCHECK(registration);
|
|
|
| service_worker_context_->FindReadyRegistrationForId(
|
| service_worker_id, active_registrations_[service_worker_id].origin,
|
| base::Bind(&BackgroundSyncManager::FireReadyEventsDidFindRegistration,
|
| - weak_ptr_factory_.GetWeakPtr(), sw_id_and_key.second,
|
| + weak_ptr_factory_.GetWeakPtr(), sw_id_and_tag.second,
|
| registration->id(), events_fired_barrier_closure,
|
| events_completed_barrier_closure));
|
| }
|
| }
|
|
|
| void BackgroundSyncManager::FireReadyEventsDidFindRegistration(
|
| - const RegistrationKey& registration_key,
|
| + const std::string& tag,
|
| BackgroundSyncRegistration::RegistrationId registration_id,
|
| const base::Closure& event_fired_callback,
|
| const base::Closure& event_completed_callback,
|
| @@ -935,8 +916,8 @@ void BackgroundSyncManager::FireReadyEventsDidFindRegistration(
|
| return;
|
| }
|
|
|
| - BackgroundSyncRegistration* registration = LookupActiveRegistration(
|
| - service_worker_registration->id(), registration_key);
|
| + BackgroundSyncRegistration* registration =
|
| + LookupActiveRegistration(service_worker_registration->id(), tag);
|
| DCHECK(registration);
|
|
|
| num_firing_registrations_ += 1;
|
| @@ -955,7 +936,7 @@ void BackgroundSyncManager::FireReadyEventsDidFindRegistration(
|
| service_worker_registration->active_version(), last_chance,
|
| base::Bind(&BackgroundSyncManager::EventComplete,
|
| weak_ptr_factory_.GetWeakPtr(), service_worker_registration,
|
| - service_worker_registration->id(), registration_key,
|
| + service_worker_registration->id(), tag,
|
| event_completed_callback));
|
|
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| @@ -976,7 +957,7 @@ void BackgroundSyncManager::FireReadyEventsAllEventsFiring(
|
| void BackgroundSyncManager::EventComplete(
|
| const scoped_refptr<ServiceWorkerRegistration>& service_worker_registration,
|
| int64_t service_worker_id,
|
| - const RegistrationKey& registration_key,
|
| + const std::string& tag,
|
| const base::Closure& callback,
|
| ServiceWorkerStatusCode status_code) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| @@ -989,13 +970,12 @@ void BackgroundSyncManager::EventComplete(
|
|
|
| op_scheduler_.ScheduleOperation(base::Bind(
|
| &BackgroundSyncManager::EventCompleteImpl, weak_ptr_factory_.GetWeakPtr(),
|
| - service_worker_id, registration_key, status_code,
|
| - MakeClosureCompletion(callback)));
|
| + service_worker_id, tag, status_code, MakeClosureCompletion(callback)));
|
| }
|
|
|
| void BackgroundSyncManager::EventCompleteImpl(
|
| int64_t service_worker_id,
|
| - const RegistrationKey& registration_key,
|
| + const std::string& tag,
|
| ServiceWorkerStatusCode status_code,
|
| const base::Closure& callback) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| @@ -1009,7 +989,7 @@ void BackgroundSyncManager::EventCompleteImpl(
|
| num_firing_registrations_ -= 1;
|
|
|
| BackgroundSyncRegistration* registration =
|
| - LookupActiveRegistration(service_worker_id, registration_key);
|
| + LookupActiveRegistration(service_worker_id, tag);
|
| if (!registration) {
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
|
| base::Bind(callback));
|
| @@ -1051,12 +1031,12 @@ void BackgroundSyncManager::EventCompleteImpl(
|
| }
|
|
|
| if (registration_completed) {
|
| - RegistrationKey key(*registration);
|
| + const std::string& tag = registration->options()->tag;
|
| BackgroundSyncRegistration* active_registration =
|
| - LookupActiveRegistration(service_worker_id, key);
|
| + LookupActiveRegistration(service_worker_id, tag);
|
| if (active_registration &&
|
| active_registration->id() == registration->id()) {
|
| - RemoveActiveRegistration(service_worker_id, key);
|
| + RemoveActiveRegistration(service_worker_id, tag);
|
| }
|
| }
|
|
|
|
|