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

Unified Diff: content/browser/service_worker/service_worker_database.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_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, &registration);
+ 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, &registration);
+ 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);
« no previous file with comments | « content/browser/service_worker/service_worker_database.h ('k') | content/browser/service_worker/service_worker_database.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698