| Index: content/browser/service_worker/service_worker_database.cc
|
| diff --git a/content/browser/service_worker/service_worker_database.cc b/content/browser/service_worker/service_worker_database.cc
|
| index e644d7fd90236be0619d3229dc76b6350dcc7295..e4ba933801d85c71c031495ba61e6453f9139c81 100644
|
| --- a/content/browser/service_worker/service_worker_database.cc
|
| +++ b/content/browser/service_worker/service_worker_database.cc
|
| @@ -733,6 +733,56 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::UpdateLastCheckTime(
|
| return WriteBatch(&batch);
|
| }
|
|
|
| +ServiceWorkerDatabase::Status
|
| +ServiceWorkerDatabase::UpdateNavigationPreloadEnabled(int64_t registration_id,
|
| + const GURL& origin,
|
| + bool enable) {
|
| + DCHECK(sequence_checker_.CalledOnValidSequence());
|
| + Status status = LazyOpen(false);
|
| + if (IsNewOrNonexistentDatabase(status))
|
| + return STATUS_ERROR_NOT_FOUND;
|
| + if (status != STATUS_OK)
|
| + return status;
|
| + if (!origin.is_valid())
|
| + return STATUS_ERROR_FAILED;
|
| +
|
| + RegistrationData registration;
|
| + status = ReadRegistrationData(registration_id, origin, ®istration);
|
| + if (status != STATUS_OK)
|
| + return status;
|
| +
|
| + registration.navigation_preload_state.enabled = enable;
|
| +
|
| + leveldb::WriteBatch batch;
|
| + WriteRegistrationDataInBatch(registration, &batch);
|
| + return WriteBatch(&batch);
|
| +}
|
| +
|
| +ServiceWorkerDatabase::Status
|
| +ServiceWorkerDatabase::UpdateNavigationPreloadHeader(int64_t registration_id,
|
| + const GURL& origin,
|
| + const std::string& value) {
|
| + DCHECK(sequence_checker_.CalledOnValidSequence());
|
| + Status status = LazyOpen(false);
|
| + if (IsNewOrNonexistentDatabase(status))
|
| + return STATUS_ERROR_NOT_FOUND;
|
| + if (status != STATUS_OK)
|
| + return status;
|
| + if (!origin.is_valid())
|
| + return STATUS_ERROR_FAILED;
|
| +
|
| + RegistrationData registration;
|
| + status = ReadRegistrationData(registration_id, origin, ®istration);
|
| + if (status != STATUS_OK)
|
| + return status;
|
| +
|
| + registration.navigation_preload_state.header = value;
|
| +
|
| + leveldb::WriteBatch batch;
|
| + WriteRegistrationDataInBatch(registration, &batch);
|
| + return WriteBatch(&batch);
|
| +}
|
| +
|
| ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteRegistration(
|
| int64_t registration_id,
|
| const GURL& origin,
|
| @@ -1233,6 +1283,13 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::ParseRegistrationData(
|
| }
|
| out->origin_trial_tokens = origin_trial_tokens;
|
| }
|
| + if (data.has_navigation_preload_state()) {
|
| + const ServiceWorkerNavigationPreloadState& state =
|
| + data.navigation_preload_state();
|
| + out->navigation_preload_state.enabled = state.enabled();
|
| + if (state.has_header())
|
| + out->navigation_preload_state.header = state.header();
|
| + }
|
|
|
| return ServiceWorkerDatabase::STATUS_OK;
|
| }
|
| @@ -1275,6 +1332,10 @@ void ServiceWorkerDatabase::WriteRegistrationDataInBatch(
|
| feature_out->add_tokens(token);
|
| }
|
| }
|
| + ServiceWorkerNavigationPreloadState* state =
|
| + data.mutable_navigation_preload_state();
|
| + state->set_enabled(registration.navigation_preload_state.enabled);
|
| + state->set_header(registration.navigation_preload_state.header);
|
|
|
| std::string value;
|
| bool success = data.SerializeToString(&value);
|
|
|