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 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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. Stored data |
171 // is deleted when the associated registraton is deleted. | 172 // is deleted when the associated registraton is deleted. |
michaeln
2016/05/03 19:38:06
Can you document what happens when some keys are f
johnme
2016/05/05 10:54:04
Done.
| |
172 void GetUserData(int64_t registration_id, | 173 void GetUserData(int64_t registration_id, |
173 const std::string& key, | 174 const std::vector<std::string>& keys, |
174 const GetUserDataCallback& callback); | 175 const GetUserDataCallback& callback); |
175 void StoreUserData(int64_t registration_id, | 176 void StoreUserData( |
176 const GURL& origin, | 177 int64_t registration_id, |
177 const std::string& key, | 178 const GURL& origin, |
178 const std::string& data, | 179 const std::vector<std::pair<std::string, std::string>>& key_value_pairs, |
179 const StatusCallback& callback); | 180 const StatusCallback& callback); |
180 void ClearUserData(int64_t registration_id, | 181 void ClearUserData(int64_t registration_id, |
181 const std::string& key, | 182 const std::vector<std::string>& keys, |
182 const StatusCallback& callback); | 183 const StatusCallback& callback); |
183 // Returns all registrations that have user data with a particular key, as | 184 // Returns all registrations that have user data with a particular key, as |
184 // well as that user data. | 185 // well as that user data. |
185 void GetUserDataForAllRegistrations( | 186 void GetUserDataForAllRegistrations( |
186 const std::string& key, | 187 const std::string& key, |
187 const GetUserDataForAllRegistrationsCallback& callback); | 188 const GetUserDataForAllRegistrationsCallback& callback); |
188 | 189 |
189 // Returns true if any service workers at |origin| have registered for foreign | 190 // Returns true if any service workers at |origin| have registered for foreign |
190 // fetch. | 191 // fetch. |
191 bool OriginHasForeignFetchRegistrations(const GURL& origin); | 192 bool OriginHasForeignFetchRegistrations(const GURL& origin); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 ServiceWorkerDatabase::Status status)> WriteRegistrationCallback; | 305 ServiceWorkerDatabase::Status status)> WriteRegistrationCallback; |
305 typedef base::Callback<void( | 306 typedef base::Callback<void( |
306 OriginState origin_state, | 307 OriginState origin_state, |
307 const ServiceWorkerDatabase::RegistrationData& deleted_version_data, | 308 const ServiceWorkerDatabase::RegistrationData& deleted_version_data, |
308 const std::vector<int64_t>& newly_purgeable_resources, | 309 const std::vector<int64_t>& newly_purgeable_resources, |
309 ServiceWorkerDatabase::Status status)> DeleteRegistrationCallback; | 310 ServiceWorkerDatabase::Status status)> DeleteRegistrationCallback; |
310 typedef base::Callback<void( | 311 typedef base::Callback<void( |
311 const ServiceWorkerDatabase::RegistrationData& data, | 312 const ServiceWorkerDatabase::RegistrationData& data, |
312 const ResourceList& resources, | 313 const ResourceList& resources, |
313 ServiceWorkerDatabase::Status status)> FindInDBCallback; | 314 ServiceWorkerDatabase::Status status)> FindInDBCallback; |
314 typedef base::Callback<void( | 315 typedef base::Callback<void(const std::vector<std::string>& data, |
315 const std::string& data, | 316 ServiceWorkerDatabase::Status)> |
316 ServiceWorkerDatabase::Status)> GetUserDataInDBCallback; | 317 GetUserDataInDBCallback; |
317 typedef base::Callback<void( | 318 typedef base::Callback<void( |
318 const std::vector<std::pair<int64_t, std::string>>& user_data, | 319 const std::vector<std::pair<int64_t, std::string>>& user_data, |
319 ServiceWorkerDatabase::Status)> | 320 ServiceWorkerDatabase::Status)> |
320 GetUserDataForAllRegistrationsInDBCallback; | 321 GetUserDataForAllRegistrationsInDBCallback; |
321 typedef base::Callback<void(const std::vector<int64_t>& resource_ids, | 322 typedef base::Callback<void(const std::vector<int64_t>& resource_ids, |
322 ServiceWorkerDatabase::Status status)> | 323 ServiceWorkerDatabase::Status status)> |
323 GetResourcesCallback; | 324 GetResourcesCallback; |
324 | 325 |
325 ServiceWorkerStorage( | 326 ServiceWorkerStorage( |
326 const base::FilePath& path, | 327 const base::FilePath& path, |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
379 OriginState origin_state, | 380 OriginState origin_state, |
380 const ServiceWorkerDatabase::RegistrationData& deleted_version, | 381 const ServiceWorkerDatabase::RegistrationData& deleted_version, |
381 const std::vector<int64_t>& newly_purgeable_resources, | 382 const std::vector<int64_t>& newly_purgeable_resources, |
382 ServiceWorkerDatabase::Status status); | 383 ServiceWorkerDatabase::Status status); |
383 void DidWriteUncommittedResourceIds(ServiceWorkerDatabase::Status status); | 384 void DidWriteUncommittedResourceIds(ServiceWorkerDatabase::Status status); |
384 void DidPurgeUncommittedResourceIds(const std::set<int64_t>& resource_ids, | 385 void DidPurgeUncommittedResourceIds(const std::set<int64_t>& resource_ids, |
385 ServiceWorkerDatabase::Status status); | 386 ServiceWorkerDatabase::Status status); |
386 void DidStoreUserData( | 387 void DidStoreUserData( |
387 const StatusCallback& callback, | 388 const StatusCallback& callback, |
388 ServiceWorkerDatabase::Status status); | 389 ServiceWorkerDatabase::Status status); |
389 void DidGetUserData( | 390 void DidGetUserData(const GetUserDataCallback& callback, |
390 const GetUserDataCallback& callback, | 391 const std::vector<std::string>& data, |
391 const std::string& data, | 392 ServiceWorkerDatabase::Status status); |
392 ServiceWorkerDatabase::Status status); | |
393 void DidDeleteUserData( | 393 void DidDeleteUserData( |
394 const StatusCallback& callback, | 394 const StatusCallback& callback, |
395 ServiceWorkerDatabase::Status status); | 395 ServiceWorkerDatabase::Status status); |
396 void DidGetUserDataForAllRegistrations( | 396 void DidGetUserDataForAllRegistrations( |
397 const GetUserDataForAllRegistrationsCallback& callback, | 397 const GetUserDataForAllRegistrationsCallback& callback, |
398 const std::vector<std::pair<int64_t, std::string>>& user_data, | 398 const std::vector<std::pair<int64_t, std::string>>& user_data, |
399 ServiceWorkerDatabase::Status status); | 399 ServiceWorkerDatabase::Status status); |
400 void ReturnFoundRegistration( | 400 void ReturnFoundRegistration( |
401 const FindRegistrationCallback& callback, | 401 const FindRegistrationCallback& callback, |
402 const ServiceWorkerDatabase::RegistrationData& data, | 402 const ServiceWorkerDatabase::RegistrationData& data, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
472 const FindInDBCallback& callback); | 472 const FindInDBCallback& callback); |
473 static void FindForIdOnlyInDB( | 473 static void FindForIdOnlyInDB( |
474 ServiceWorkerDatabase* database, | 474 ServiceWorkerDatabase* database, |
475 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 475 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
476 int64_t registration_id, | 476 int64_t registration_id, |
477 const FindInDBCallback& callback); | 477 const FindInDBCallback& callback); |
478 static void GetUserDataInDB( | 478 static void GetUserDataInDB( |
479 ServiceWorkerDatabase* database, | 479 ServiceWorkerDatabase* database, |
480 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 480 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
481 int64_t registration_id, | 481 int64_t registration_id, |
482 const std::string& key, | 482 const std::vector<std::string>& keys, |
483 const GetUserDataInDBCallback& callback); | 483 const GetUserDataInDBCallback& callback); |
484 static void GetUserDataForAllRegistrationsInDB( | 484 static void GetUserDataForAllRegistrationsInDB( |
485 ServiceWorkerDatabase* database, | 485 ServiceWorkerDatabase* database, |
486 scoped_refptr<base::SequencedTaskRunner> original_task_runner, | 486 scoped_refptr<base::SequencedTaskRunner> original_task_runner, |
487 const std::string& key, | 487 const std::string& key, |
488 const GetUserDataForAllRegistrationsInDBCallback& callback); | 488 const GetUserDataForAllRegistrationsInDBCallback& callback); |
489 static void DeleteAllDataForOriginsFromDB( | 489 static void DeleteAllDataForOriginsFromDB( |
490 ServiceWorkerDatabase* database, | 490 ServiceWorkerDatabase* database, |
491 const std::set<GURL>& origins); | 491 const std::set<GURL>& origins); |
492 | 492 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
543 std::set<int64_t> pending_deletions_; | 543 std::set<int64_t> pending_deletions_; |
544 | 544 |
545 base::WeakPtrFactory<ServiceWorkerStorage> weak_factory_; | 545 base::WeakPtrFactory<ServiceWorkerStorage> weak_factory_; |
546 | 546 |
547 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage); | 547 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerStorage); |
548 }; | 548 }; |
549 | 549 |
550 } // namespace content | 550 } // namespace content |
551 | 551 |
552 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ | 552 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_STORAGE_H_ |
OLD | NEW |