OLD | NEW |
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> |
11 #include <map> | 11 #include <map> |
12 #include <set> | 12 #include <set> |
13 #include <string> | 13 #include <string> |
| 14 #include <utility> |
14 #include <vector> | 15 #include <vector> |
15 | 16 |
16 #include "base/bind.h" | 17 #include "base/bind.h" |
17 #include "base/files/file_path.h" | 18 #include "base/files/file_path.h" |
18 #include "base/gtest_prod_util.h" | 19 #include "base/gtest_prod_util.h" |
19 #include "base/macros.h" | 20 #include "base/macros.h" |
20 #include "base/memory/weak_ptr.h" | 21 #include "base/memory/weak_ptr.h" |
21 #include "content/browser/service_worker/service_worker_database.h" | 22 #include "content/browser/service_worker/service_worker_database.h" |
22 #include "content/browser/service_worker/service_worker_database_task_manager.h" | 23 #include "content/browser/service_worker/service_worker_database_task_manager.h" |
23 #include "content/browser/service_worker/service_worker_metrics.h" | 24 #include "content/browser/service_worker/service_worker_metrics.h" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 registration)> FindRegistrationCallback; | 62 registration)> FindRegistrationCallback; |
62 typedef base::Callback<void( | 63 typedef base::Callback<void( |
63 ServiceWorkerStatusCode status, | 64 ServiceWorkerStatusCode status, |
64 const std::vector<scoped_refptr<ServiceWorkerRegistration>>& | 65 const std::vector<scoped_refptr<ServiceWorkerRegistration>>& |
65 registrations)> | 66 registrations)> |
66 GetRegistrationsCallback; | 67 GetRegistrationsCallback; |
67 typedef base::Callback<void( | 68 typedef base::Callback<void( |
68 ServiceWorkerStatusCode status, | 69 ServiceWorkerStatusCode status, |
69 const std::vector<ServiceWorkerRegistrationInfo>& registrations)> | 70 const std::vector<ServiceWorkerRegistrationInfo>& registrations)> |
70 GetRegistrationsInfosCallback; | 71 GetRegistrationsInfosCallback; |
71 typedef base::Callback< | 72 using GetUserDataCallback = |
72 void(const std::string& data, ServiceWorkerStatusCode status)> | 73 base::Callback<void(const std::vector<std::string>& data, |
73 GetUserDataCallback; | 74 ServiceWorkerStatusCode status)>; |
74 typedef base::Callback<void( | 75 typedef base::Callback<void( |
75 const std::vector<std::pair<int64_t, std::string>>& user_data, | 76 const std::vector<std::pair<int64_t, std::string>>& user_data, |
76 ServiceWorkerStatusCode status)> GetUserDataForAllRegistrationsCallback; | 77 ServiceWorkerStatusCode status)> GetUserDataForAllRegistrationsCallback; |
77 | 78 |
78 ~ServiceWorkerStorage() override; | 79 ~ServiceWorkerStorage() override; |
79 | 80 |
80 static std::unique_ptr<ServiceWorkerStorage> Create( | 81 static std::unique_ptr<ServiceWorkerStorage> Create( |
81 const base::FilePath& path, | 82 const base::FilePath& path, |
82 const base::WeakPtr<ServiceWorkerContextCore>& context, | 83 const base::WeakPtr<ServiceWorkerContextCore>& context, |
83 std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, | 84 std::unique_ptr<ServiceWorkerDatabaseTaskManager> database_task_manager, |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 // Adds |resource_id| to the set of resources that are in the disk cache | 161 // Adds |resource_id| to the set of resources that are in the disk cache |
161 // but not yet stored with a registration. | 162 // but not yet stored with a registration. |
162 void StoreUncommittedResourceId(int64_t resource_id); | 163 void StoreUncommittedResourceId(int64_t resource_id); |
163 | 164 |
164 // Removes resource ids from uncommitted list, adds them to the purgeable list | 165 // Removes resource ids from uncommitted list, adds them to the purgeable list |
165 // and purges them. | 166 // and purges them. |
166 void DoomUncommittedResource(int64_t resource_id); | 167 void DoomUncommittedResource(int64_t resource_id); |
167 void DoomUncommittedResources(const std::set<int64_t>& resource_ids); | 168 void DoomUncommittedResources(const std::set<int64_t>& resource_ids); |
168 | 169 |
169 // Provide a storage mechanism to read/write arbitrary data associated with | 170 // Provide a storage mechanism to read/write arbitrary data associated with |
170 // a registration. Each registration has its own key namespace. Stored data | 171 // a registration. Each registration has its own key namespace. |
171 // is deleted when the associated registraton is deleted. | 172 // GetUserData responds OK only if all keys are found; otherwise NOT_FOUND, |
| 173 // and the callback's data will be empty. |
172 void GetUserData(int64_t registration_id, | 174 void GetUserData(int64_t registration_id, |
173 const std::string& key, | 175 const std::vector<std::string>& keys, |
174 const GetUserDataCallback& callback); | 176 const GetUserDataCallback& callback); |
175 void StoreUserData(int64_t registration_id, | 177 // Stored data is deleted when the associated registraton is deleted. |
176 const GURL& origin, | 178 void StoreUserData( |
177 const std::string& key, | 179 int64_t registration_id, |
178 const std::string& data, | 180 const GURL& origin, |
| 181 const std::vector<std::pair<std::string, std::string>>& key_value_pairs, |
| 182 const StatusCallback& callback); |
| 183 // Responds OK if all are successfully deleted or not found in the database. |
| 184 void ClearUserData(int64_t registration_id, |
| 185 const std::vector<std::string>& keys, |
179 const StatusCallback& callback); | 186 const StatusCallback& callback); |
180 void ClearUserData(int64_t registration_id, | 187 // Responds with all registrations that have user data with a particular key, |
181 const std::string& key, | 188 // as well as that user data. |
182 const StatusCallback& callback); | |
183 // Returns all registrations that have user data with a particular key, as | |
184 // well as that user data. | |
185 void GetUserDataForAllRegistrations( | 189 void GetUserDataForAllRegistrations( |
186 const std::string& key, | 190 const std::string& key, |
187 const GetUserDataForAllRegistrationsCallback& callback); | 191 const GetUserDataForAllRegistrationsCallback& callback); |
188 | 192 |
189 // Returns true if any service workers at |origin| have registered for foreign | 193 // Returns true if any service workers at |origin| have registered for foreign |
190 // fetch. | 194 // fetch. |
191 bool OriginHasForeignFetchRegistrations(const GURL& origin); | 195 bool OriginHasForeignFetchRegistrations(const GURL& origin); |
192 | 196 |
193 // Deletes the storage and starts over. | 197 // Deletes the storage and starts over. |
194 void DeleteAndStartOver(const StatusCallback& callback); | 198 void DeleteAndStartOver(const StatusCallback& callback); |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 ServiceWorkerDatabase::Status status)> WriteRegistrationCallback; | 308 ServiceWorkerDatabase::Status status)> WriteRegistrationCallback; |
305 typedef base::Callback<void( | 309 typedef base::Callback<void( |
306 OriginState origin_state, | 310 OriginState origin_state, |
307 const ServiceWorkerDatabase::RegistrationData& deleted_version_data, | 311 const ServiceWorkerDatabase::RegistrationData& deleted_version_data, |
308 const std::vector<int64_t>& newly_purgeable_resources, | 312 const std::vector<int64_t>& newly_purgeable_resources, |
309 ServiceWorkerDatabase::Status status)> DeleteRegistrationCallback; | 313 ServiceWorkerDatabase::Status status)> DeleteRegistrationCallback; |
310 typedef base::Callback<void( | 314 typedef base::Callback<void( |
311 const ServiceWorkerDatabase::RegistrationData& data, | 315 const ServiceWorkerDatabase::RegistrationData& data, |
312 const ResourceList& resources, | 316 const ResourceList& resources, |
313 ServiceWorkerDatabase::Status status)> FindInDBCallback; | 317 ServiceWorkerDatabase::Status status)> FindInDBCallback; |
314 typedef base::Callback<void( | 318 typedef base::Callback<void(const std::vector<std::string>& data, |
315 const std::string& data, | 319 ServiceWorkerDatabase::Status)> |
316 ServiceWorkerDatabase::Status)> GetUserDataInDBCallback; | 320 GetUserDataInDBCallback; |
317 typedef base::Callback<void( | 321 typedef base::Callback<void( |
318 const std::vector<std::pair<int64_t, std::string>>& user_data, | 322 const std::vector<std::pair<int64_t, std::string>>& user_data, |
319 ServiceWorkerDatabase::Status)> | 323 ServiceWorkerDatabase::Status)> |
320 GetUserDataForAllRegistrationsInDBCallback; | 324 GetUserDataForAllRegistrationsInDBCallback; |
321 typedef base::Callback<void(const std::vector<int64_t>& resource_ids, | 325 typedef base::Callback<void(const std::vector<int64_t>& resource_ids, |
322 ServiceWorkerDatabase::Status status)> | 326 ServiceWorkerDatabase::Status status)> |
323 GetResourcesCallback; | 327 GetResourcesCallback; |
324 | 328 |
325 ServiceWorkerStorage( | 329 ServiceWorkerStorage( |
326 const base::FilePath& path, | 330 const base::FilePath& path, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 OriginState origin_state, | 383 OriginState origin_state, |
380 const ServiceWorkerDatabase::RegistrationData& deleted_version, | 384 const ServiceWorkerDatabase::RegistrationData& deleted_version, |
381 const std::vector<int64_t>& newly_purgeable_resources, | 385 const std::vector<int64_t>& newly_purgeable_resources, |
382 ServiceWorkerDatabase::Status status); | 386 ServiceWorkerDatabase::Status status); |
383 void DidWriteUncommittedResourceIds(ServiceWorkerDatabase::Status status); | 387 void DidWriteUncommittedResourceIds(ServiceWorkerDatabase::Status status); |
384 void DidPurgeUncommittedResourceIds(const std::set<int64_t>& resource_ids, | 388 void DidPurgeUncommittedResourceIds(const std::set<int64_t>& resource_ids, |
385 ServiceWorkerDatabase::Status status); | 389 ServiceWorkerDatabase::Status status); |
386 void DidStoreUserData( | 390 void DidStoreUserData( |
387 const StatusCallback& callback, | 391 const StatusCallback& callback, |
388 ServiceWorkerDatabase::Status status); | 392 ServiceWorkerDatabase::Status status); |
389 void DidGetUserData( | 393 void DidGetUserData(const GetUserDataCallback& callback, |
390 const GetUserDataCallback& callback, | 394 const std::vector<std::string>& data, |
391 const std::string& data, | 395 ServiceWorkerDatabase::Status status); |
392 ServiceWorkerDatabase::Status status); | |
393 void DidDeleteUserData( | 396 void DidDeleteUserData( |
394 const StatusCallback& callback, | 397 const StatusCallback& callback, |
395 ServiceWorkerDatabase::Status status); | 398 ServiceWorkerDatabase::Status status); |
396 void DidGetUserDataForAllRegistrations( | 399 void DidGetUserDataForAllRegistrations( |
397 const GetUserDataForAllRegistrationsCallback& callback, | 400 const GetUserDataForAllRegistrationsCallback& callback, |
398 const std::vector<std::pair<int64_t, std::string>>& user_data, | 401 const std::vector<std::pair<int64_t, std::string>>& user_data, |
399 ServiceWorkerDatabase::Status status); | 402 ServiceWorkerDatabase::Status status); |
400 void ReturnFoundRegistration( | 403 void ReturnFoundRegistration( |
401 const FindRegistrationCallback& callback, | 404 const FindRegistrationCallback& callback, |
402 const ServiceWorkerDatabase::RegistrationData& data, | 405 const ServiceWorkerDatabase::RegistrationData& data, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 const FindInDBCallback& callback); | 475 const FindInDBCallback& callback); |
473 static void FindForIdOnlyInDB( | 476 static void FindForIdOnlyInDB( |
474 ServiceWorkerDatabase* database, | 477 ServiceWorkerDatabase* database, |
475 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 478 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
476 int64_t registration_id, | 479 int64_t registration_id, |
477 const FindInDBCallback& callback); | 480 const FindInDBCallback& callback); |
478 static void GetUserDataInDB( | 481 static void GetUserDataInDB( |
479 ServiceWorkerDatabase* database, | 482 ServiceWorkerDatabase* database, |
480 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 483 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
481 int64_t registration_id, | 484 int64_t registration_id, |
482 const std::string& key, | 485 const std::vector<std::string>& keys, |
483 const GetUserDataInDBCallback& callback); | 486 const GetUserDataInDBCallback& callback); |
484 static void GetUserDataForAllRegistrationsInDB( | 487 static void GetUserDataForAllRegistrationsInDB( |
485 ServiceWorkerDatabase* database, | 488 ServiceWorkerDatabase* database, |
486 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 489 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
487 const std::string& key, | 490 const std::string& key, |
488 const GetUserDataForAllRegistrationsInDBCallback& callback); | 491 const GetUserDataForAllRegistrationsInDBCallback& callback); |
489 static void DeleteAllDataForOriginsFromDB( | 492 static void DeleteAllDataForOriginsFromDB( |
490 ServiceWorkerDatabase* database, | 493 ServiceWorkerDatabase* database, |
491 const std::set<GURL>& origins); | 494 const std::set<GURL>& origins); |
492 | 495 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 std::set<int64_t> pending_deletions_; | 546 std::set<int64_t> pending_deletions_; |
544 | 547 |
545 base::WeakPtrFactory<ServiceWorkerStorage> weak_factory_; | 548 base::WeakPtrFactory<ServiceWorkerStorage> weak_factory_; |
546 | 549 |
547 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage); | 550 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage); |
548 }; | 551 }; |
549 | 552 |
550 } // namespace content | 553 } // namespace content |
551 | 554 |
552 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ | 555 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ |
OLD | NEW |