| 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..e45dabbcd736c7ec5a51ffe3959385d5cba9b182 100644
|
| --- a/content/browser/service_worker/service_worker_database.cc
|
| +++ b/content/browser/service_worker/service_worker_database.cc
|
| @@ -25,6 +25,7 @@
|
| #include "third_party/leveldatabase/src/include/leveldb/db.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/env.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
|
| +#include "url/origin.h"
|
|
|
| // LevelDB database schema
|
| // =======================
|
| @@ -1193,6 +1194,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) {
|
| + url::Origin parsed_origin(GURL(data.foreign_fetch_origin(i)));
|
| + if (parsed_origin.unique()) {
|
| + DLOG(ERROR) << "Foreign fetch origin '" << data.foreign_fetch_origin(i)
|
| + << "' is not valid.";
|
| + return ServiceWorkerDatabase::STATUS_ERROR_CORRUPTED;
|
| + }
|
| + out->foreign_fetch_origins.push_back(parsed_origin);
|
| + }
|
|
|
| return ServiceWorkerDatabase::STATUS_OK;
|
| }
|
| @@ -1224,6 +1234,8 @@ void ServiceWorkerDatabase::WriteRegistrationDataInBatch(
|
| << "'.";
|
| data.add_foreign_fetch_scope(url.spec());
|
| }
|
| + for (const url::Origin& origin : registration.foreign_fetch_origins)
|
| + data.add_foreign_fetch_origin(origin.Serialize());
|
|
|
| std::string value;
|
| bool success = data.SerializeToString(&value);
|
|
|