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

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

Issue 1693303002: ServiceWorker: Make ServiceWorkerStorage more self-defensive (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 months 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.h
diff --git a/content/browser/service_worker/service_worker_storage.h b/content/browser/service_worker/service_worker_storage.h
index 92042def1207360e7b039873f1a1f4c4b0b1c70b..bf07934059a0c7afbc53adac12390bef389a570a 100644
--- a/content/browser/service_worker/service_worker_storage.h
+++ b/content/browser/service_worker/service_worker_storage.h
@@ -48,7 +48,9 @@ struct ServiceWorkerRegistrationInfo;
// This class provides an interface to store and retrieve ServiceWorker
// registration data. The lifetime is equal to ServiceWorkerContextCore that is
-// an owner of this class.
+// an owner of this class. When a storage operation fails, this is marked as
+// disabled and all subsequent requests are aborted until the context core is
+// restarted.
class CONTENT_EXPORT ServiceWorkerStorage
: NON_EXPORTED_BASE(public ServiceWorkerVersion::Listener) {
public:
@@ -58,10 +60,14 @@ class CONTENT_EXPORT ServiceWorkerStorage
const scoped_refptr<ServiceWorkerRegistration>&
registration)> FindRegistrationCallback;
typedef base::Callback<void(
+ ServiceWorkerStatusCode status,
const std::vector<scoped_refptr<ServiceWorkerRegistration>>&
- registrations)> GetRegistrationsCallback;
- typedef base::Callback<void(const std::vector<ServiceWorkerRegistrationInfo>&
- registrations)> GetRegistrationsInfosCallback;
+ registrations)>
+ GetRegistrationsCallback;
+ typedef base::Callback<void(
+ ServiceWorkerStatusCode status,
+ const std::vector<ServiceWorkerRegistrationInfo>& registrations)>
+ GetRegistrationsInfosCallback;
typedef base::Callback<
void(const std::string& data, ServiceWorkerStatusCode status)>
GetUserDataCallback;
@@ -142,6 +148,8 @@ class CONTENT_EXPORT ServiceWorkerStorage
const GURL& origin,
const StatusCallback& callback);
+ // Creates a resource accessor. Never returns nullptr but an accessor may be
+ // associated with the disabled disk cache if the storage is disabled.
scoped_ptr<ServiceWorkerResponseReader> CreateResponseReader(
int64_t resource_id);
scoped_ptr<ServiceWorkerResponseWriter> CreateResponseWriter(
@@ -211,7 +219,6 @@ class CONTENT_EXPORT ServiceWorkerStorage
ServiceWorkerRegistration* registration);
void Disable();
- bool IsDisabled() const;
// |resources| must already be on the purgeable list.
void PurgeResources(const ResourceList& resources);
@@ -481,6 +488,7 @@ class CONTENT_EXPORT ServiceWorkerStorage
ServiceWorkerDatabase* database,
const std::set<GURL>& origins);
+ bool IsDisabled() const;
void ScheduleDeleteAndStartOver();
void DidDeleteDatabase(
const StatusCallback& callback,

Powered by Google App Engine
This is Rietveld 408576698