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

Unified Diff: content/browser/service_worker/service_worker_storage.cc

Issue 2521793004: service worker: Persist NavigationPreloadState (Closed)
Patch Set: expect_ name Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698