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 93480c4bc580532577ab94bd083126aa1734da00..178c8be124b8beb9462d4251457785a7ed3c5d22 100644 |
--- a/content/browser/service_worker/service_worker_database.cc |
+++ b/content/browser/service_worker/service_worker_database.cc |
@@ -276,11 +276,11 @@ const char* ServiceWorkerDatabase::StatusToString( |
ServiceWorkerDatabase::RegistrationData::RegistrationData() |
: registration_id(kInvalidServiceWorkerRegistrationId), |
+ update_via_cache(blink::WebServiceWorkerUpdateViaCache::kImports), |
version_id(kInvalidServiceWorkerVersionId), |
is_active(false), |
has_fetch_handler(false), |
- resources_total_size_bytes(0) { |
-} |
+ resources_total_size_bytes(0) {} |
ServiceWorkerDatabase::RegistrationData::RegistrationData( |
const RegistrationData& other) = default; |
@@ -1399,6 +1399,17 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::ParseRegistrationData( |
for (uint32_t feature : data.used_features()) |
out->used_features.insert(feature); |
+ if (data.has_update_via_cache()) { |
+ auto value = data.update_via_cache(); |
+ if (!ServiceWorkerRegistrationData_ServiceWorkerUpdateViaCacheType_IsValid( |
+ value)) { |
+ DLOG(ERROR) << "Update via cache mode '" << value << "' is not valid."; |
+ return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED; |
+ } |
+ out->update_via_cache = |
+ static_cast<blink::WebServiceWorkerUpdateViaCache>(value); |
+ } |
+ |
return ServiceWorkerDatabase::STATUS_OK; |
} |
@@ -1448,6 +1459,11 @@ void ServiceWorkerDatabase::WriteRegistrationDataInBatch( |
for (uint32_t feature : registration.used_features) |
data.add_used_features(feature); |
+ data.set_update_via_cache( |
+ static_cast< |
+ ServiceWorkerRegistrationData_ServiceWorkerUpdateViaCacheType>( |
+ registration.update_via_cache)); |
+ |
std::string value; |
bool success = data.SerializeToString(&value); |
DCHECK(success); |