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 c4c3a8b952bb88d0a631fb9c470487d26651a35e..5d3911c64b663cd6a692e813bc894b9d8d4e31ac 100644 |
--- a/content/browser/service_worker/service_worker_database.cc |
+++ b/content/browser/service_worker/service_worker_database.cc |
@@ -1193,6 +1193,15 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::ParseRegistrationData( |
} |
out->foreign_fetch_scopes.push_back(sub_scope_url); |
} |
+ for (int i = 0; i < data.foreign_fetch_origin_size(); ++i) { |
+ GURL origin_url(data.foreign_fetch_origin(i)); |
+ if (!origin_url.is_valid()) { |
+ DLOG(ERROR) << "Foreign fetch origin '" << data.foreign_fetch_origin(i) |
+ << "' is not valid."; |
+ return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED; |
+ } |
+ out->foreign_fetch_origins.push_back(origin_url); |
+ } |
return ServiceWorkerDatabase::STATUS_OK; |
} |
@@ -1224,6 +1233,8 @@ void ServiceWorkerDatabase::WriteRegistrationDataInBatch( |
<< "'."; |
data.add_foreign_fetch_scope(url.spec()); |
} |
+ for (const GURL& url : registration.foreign_fetch_origins) |
+ data.add_foreign_fetch_origin(url.spec()); |
std::string value; |
bool success = data.SerializeToString(&value); |