| Index: content/browser/service_worker/service_worker_storage.cc
|
| diff --git a/content/browser/service_worker/service_worker_storage.cc b/content/browser/service_worker/service_worker_storage.cc
|
| index b6e9e2f59bd2f7dd273462a0563746dddf289286..adfca9c0f12f0fcb4116e994676670d0530cc757 100644
|
| --- a/content/browser/service_worker/service_worker_storage.cc
|
| +++ b/content/browser/service_worker/service_worker_storage.cc
|
| @@ -81,6 +81,12 @@ ServiceWorkerStatusCode DatabaseStatusToStatusCode(
|
| }
|
| }
|
|
|
| +void DidUpdateNavigationPreloadState(
|
| + const ServiceWorkerStorage::StatusCallback& callback,
|
| + ServiceWorkerDatabase::Status status) {
|
| + callback.Run(DatabaseStatusToStatusCode(status));
|
| +}
|
| +
|
| } // namespace
|
|
|
| ServiceWorkerStorage::InitialData::InitialData()
|
| @@ -410,6 +416,7 @@ void ServiceWorkerStorage::StoreRegistration(
|
| data.foreign_fetch_origins = version->foreign_fetch_origins();
|
| if (version->origin_trial_tokens())
|
| data.origin_trial_tokens = *version->origin_trial_tokens();
|
| + data.navigation_preload_state = registration->navigation_preload_state();
|
|
|
| ResourceList resources;
|
| version->script_cache_map()->GetResources(&resources);
|
| @@ -483,6 +490,44 @@ void ServiceWorkerStorage::UpdateLastUpdateCheckTime(
|
| registration->last_update_check()));
|
| }
|
|
|
| +void ServiceWorkerStorage::UpdateNavigationPreloadEnabled(
|
| + int64_t registration_id,
|
| + const GURL& origin,
|
| + bool enable,
|
| + const StatusCallback& callback) {
|
| + DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_;
|
| + if (IsDisabled()) {
|
| + callback.Run(SERVICE_WORKER_ERROR_ABORT);
|
| + return;
|
| + }
|
| +
|
| + PostTaskAndReplyWithResult(
|
| + database_task_manager_->GetTaskRunner(), FROM_HERE,
|
| + base::Bind(&ServiceWorkerDatabase::UpdateNavigationPreloadEnabled,
|
| + base::Unretained(database_.get()), registration_id, origin,
|
| + enable),
|
| + base::Bind(&DidUpdateNavigationPreloadState, callback));
|
| +}
|
| +
|
| +void ServiceWorkerStorage::UpdateNavigationPreloadHeader(
|
| + int64_t registration_id,
|
| + const GURL& origin,
|
| + const std::string& value,
|
| + const StatusCallback& callback) {
|
| + DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_;
|
| + if (IsDisabled()) {
|
| + callback.Run(SERVICE_WORKER_ERROR_ABORT);
|
| + return;
|
| + }
|
| +
|
| + PostTaskAndReplyWithResult(
|
| + database_task_manager_->GetTaskRunner(), FROM_HERE,
|
| + base::Bind(&ServiceWorkerDatabase::UpdateNavigationPreloadHeader,
|
| + base::Unretained(database_.get()), registration_id, origin,
|
| + value),
|
| + base::Bind(&DidUpdateNavigationPreloadState, callback));
|
| +}
|
| +
|
| void ServiceWorkerStorage::DeleteRegistration(int64_t registration_id,
|
| const GURL& origin,
|
| const StatusCallback& callback) {
|
| @@ -1273,6 +1318,9 @@ ServiceWorkerStorage::GetOrCreateRegistration(
|
| else
|
| NOTREACHED();
|
|
|
| + registration->EnableNavigationPreload(data.navigation_preload_state.enabled);
|
| + registration->SetNavigationPreloadHeader(
|
| + data.navigation_preload_state.header);
|
| return registration;
|
| }
|
|
|
|
|