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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_
6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <deque> 10 #include <deque>
(...skipping 30 matching lines...) Expand all
41 class ServiceWorkerContextCore; 41 class ServiceWorkerContextCore;
42 class ServiceWorkerDiskCache; 42 class ServiceWorkerDiskCache;
43 class ServiceWorkerRegistration; 43 class ServiceWorkerRegistration;
44 class ServiceWorkerResponseMetadataWriter; 44 class ServiceWorkerResponseMetadataWriter;
45 class ServiceWorkerResponseReader; 45 class ServiceWorkerResponseReader;
46 class ServiceWorkerResponseWriter; 46 class ServiceWorkerResponseWriter;
47 struct ServiceWorkerRegistrationInfo; 47 struct ServiceWorkerRegistrationInfo;
48 48
49 // This class provides an interface to store and retrieve ServiceWorker 49 // This class provides an interface to store and retrieve ServiceWorker
50 // registration data. The lifetime is equal to ServiceWorkerContextCore that is 50 // registration data. The lifetime is equal to ServiceWorkerContextCore that is
51 // an owner of this class. 51 // an owner of this class. When a storage operation fails, this is marked as
52 // disabled and all subsequent requests are aborted until the context core is
53 // restarted.
52 class CONTENT_EXPORT ServiceWorkerStorage 54 class CONTENT_EXPORT ServiceWorkerStorage
53 : NON_EXPORTED_BASE(public ServiceWorkerVersion::Listener) { 55 : NON_EXPORTED_BASE(public ServiceWorkerVersion::Listener) {
54 public: 56 public:
55 typedef std::vector<ServiceWorkerDatabase::ResourceRecord> ResourceList; 57 typedef std::vector<ServiceWorkerDatabase::ResourceRecord> ResourceList;
56 typedef base::Callback<void(ServiceWorkerStatusCode status)> StatusCallback; 58 typedef base::Callback<void(ServiceWorkerStatusCode status)> StatusCallback;
57 typedef base::Callback<void(ServiceWorkerStatusCode status, 59 typedef base::Callback<void(ServiceWorkerStatusCode status,
58 const scoped_refptr<ServiceWorkerRegistration>& 60 const scoped_refptr<ServiceWorkerRegistration>&
59 registration)> FindRegistrationCallback; 61 registration)> FindRegistrationCallback;
60 typedef base::Callback<void( 62 typedef base::Callback<void(
63 ServiceWorkerStatusCode status,
61 const std::vector<scoped_refptr<ServiceWorkerRegistration>>& 64 const std::vector<scoped_refptr<ServiceWorkerRegistration>>&
62 registrations)> GetRegistrationsCallback; 65 registrations)>
63 typedef base::Callback<void(const std::vector<ServiceWorkerRegistrationInfo>& 66 GetRegistrationsCallback;
64 registrations)> GetRegistrationsInfosCallback; 67 typedef base::Callback<void(
68 ServiceWorkerStatusCode status,
69 const std::vector<ServiceWorkerRegistrationInfo>& registrations)>
70 GetRegistrationsInfosCallback;
65 typedef base::Callback< 71 typedef base::Callback<
66 void(const std::string& data, ServiceWorkerStatusCode status)> 72 void(const std::string& data, ServiceWorkerStatusCode status)>
67 GetUserDataCallback; 73 GetUserDataCallback;
68 typedef base::Callback<void( 74 typedef base::Callback<void(
69 const std::vector<std::pair<int64_t, std::string>>& user_data, 75 const std::vector<std::pair<int64_t, std::string>>& user_data,
70 ServiceWorkerStatusCode status)> GetUserDataForAllRegistrationsCallback; 76 ServiceWorkerStatusCode status)> GetUserDataForAllRegistrationsCallback;
71 77
72 ~ServiceWorkerStorage() override; 78 ~ServiceWorkerStorage() override;
73 79
74 static scoped_ptr<ServiceWorkerStorage> Create( 80 static scoped_ptr<ServiceWorkerStorage> Create(
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // registration->last_update_check(). 141 // registration->last_update_check().
136 void UpdateLastUpdateCheckTime(ServiceWorkerRegistration* registration); 142 void UpdateLastUpdateCheckTime(ServiceWorkerRegistration* registration);
137 143
138 // Deletes the registration data for |registration_id|. If the registration's 144 // Deletes the registration data for |registration_id|. If the registration's
139 // version is live, its script resources will remain available. 145 // version is live, its script resources will remain available.
140 // PurgeResources should be called when it's OK to delete them. 146 // PurgeResources should be called when it's OK to delete them.
141 void DeleteRegistration(int64_t registration_id, 147 void DeleteRegistration(int64_t registration_id,
142 const GURL& origin, 148 const GURL& origin,
143 const StatusCallback& callback); 149 const StatusCallback& callback);
144 150
151 // Creates a resource accessor. Never returns nullptr but an accessor may be
152 // associated with the disabled disk cache if the storage is disabled.
145 scoped_ptr<ServiceWorkerResponseReader> CreateResponseReader( 153 scoped_ptr<ServiceWorkerResponseReader> CreateResponseReader(
146 int64_t resource_id); 154 int64_t resource_id);
147 scoped_ptr<ServiceWorkerResponseWriter> CreateResponseWriter( 155 scoped_ptr<ServiceWorkerResponseWriter> CreateResponseWriter(
148 int64_t resource_id); 156 int64_t resource_id);
149 scoped_ptr<ServiceWorkerResponseMetadataWriter> CreateResponseMetadataWriter( 157 scoped_ptr<ServiceWorkerResponseMetadataWriter> CreateResponseMetadataWriter(
150 int64_t resource_id); 158 int64_t resource_id);
151 159
152 // Adds |resource_id| to the set of resources that are in the disk cache 160 // Adds |resource_id| to the set of resources that are in the disk cache
153 // but not yet stored with a registration. 161 // but not yet stored with a registration.
154 void StoreUncommittedResourceId(int64_t resource_id); 162 void StoreUncommittedResourceId(int64_t resource_id);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 ServiceWorkerRegistration* registration); 212 ServiceWorkerRegistration* registration);
205 void NotifyDoneInstallingRegistration( 213 void NotifyDoneInstallingRegistration(
206 ServiceWorkerRegistration* registration, 214 ServiceWorkerRegistration* registration,
207 ServiceWorkerVersion* version, 215 ServiceWorkerVersion* version,
208 ServiceWorkerStatusCode status); 216 ServiceWorkerStatusCode status);
209 void NotifyUninstallingRegistration(ServiceWorkerRegistration* registration); 217 void NotifyUninstallingRegistration(ServiceWorkerRegistration* registration);
210 void NotifyDoneUninstallingRegistration( 218 void NotifyDoneUninstallingRegistration(
211 ServiceWorkerRegistration* registration); 219 ServiceWorkerRegistration* registration);
212 220
213 void Disable(); 221 void Disable();
214 bool IsDisabled() const;
215 222
216 // |resources| must already be on the purgeable list. 223 // |resources| must already be on the purgeable list.
217 void PurgeResources(const ResourceList& resources); 224 void PurgeResources(const ResourceList& resources);
218 225
219 private: 226 private:
220 friend class ServiceWorkerHandleTest; 227 friend class ServiceWorkerHandleTest;
221 friend class ServiceWorkerStorageTest; 228 friend class ServiceWorkerStorageTest;
222 friend class ServiceWorkerResourceStorageTest; 229 friend class ServiceWorkerResourceStorageTest;
223 friend class ServiceWorkerControlleeRequestHandlerTest; 230 friend class ServiceWorkerControlleeRequestHandlerTest;
224 friend class ServiceWorkerContextRequestHandlerTest; 231 friend class ServiceWorkerContextRequestHandlerTest;
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 const GetUserDataInDBCallback& callback); 481 const GetUserDataInDBCallback& callback);
475 static void GetUserDataForAllRegistrationsInDB( 482 static void GetUserDataForAllRegistrationsInDB(
476 ServiceWorkerDatabase* database, 483 ServiceWorkerDatabase* database,
477 scoped_refptr<base::SequencedTaskRunner> original_task_runner, 484 scoped_refptr<base::SequencedTaskRunner> original_task_runner,
478 const std::string& key, 485 const std::string& key,
479 const GetUserDataForAllRegistrationsInDBCallback& callback); 486 const GetUserDataForAllRegistrationsInDBCallback& callback);
480 static void DeleteAllDataForOriginsFromDB( 487 static void DeleteAllDataForOriginsFromDB(
481 ServiceWorkerDatabase* database, 488 ServiceWorkerDatabase* database,
482 const std::set<GURL>& origins); 489 const std::set<GURL>& origins);
483 490
491 bool IsDisabled() const;
484 void ScheduleDeleteAndStartOver(); 492 void ScheduleDeleteAndStartOver();
485 void DidDeleteDatabase( 493 void DidDeleteDatabase(
486 const StatusCallback& callback, 494 const StatusCallback& callback,
487 ServiceWorkerDatabase::Status status); 495 ServiceWorkerDatabase::Status status);
488 void DidDeleteDiskCache( 496 void DidDeleteDiskCache(
489 const StatusCallback& callback, 497 const StatusCallback& callback,
490 bool result); 498 bool result);
491 499
492 // For finding registrations being installed or uninstalled. 500 // For finding registrations being installed or uninstalled.
493 RegistrationRefsById installing_registrations_; 501 RegistrationRefsById installing_registrations_;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 std::set<int64_t> pending_deletions_; 541 std::set<int64_t> pending_deletions_;
534 542
535 base::WeakPtrFactory<ServiceWorkerStorage> weak_factory_; 543 base::WeakPtrFactory<ServiceWorkerStorage> weak_factory_;
536 544
537 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage); 545 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage);
538 }; 546 };
539 547
540 } // namespace content 548 } // namespace content
541 549
542 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ 550 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698