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

Side by Side Diff: content/browser/service_worker/service_worker_database.h

Issue 1221643014: Service Worker: Migrate to version_uuid and surface ServiceWorker.id. (Chromium 2/3) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_DATABASE_H_ 5 #ifndef CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DATABASE_H_
6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DATABASE_H_ 6 #define CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DATABASE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 53
54 struct CONTENT_EXPORT RegistrationData { 54 struct CONTENT_EXPORT RegistrationData {
55 // These values are immutable for the life of a registration. 55 // These values are immutable for the life of a registration.
56 int64 registration_id; 56 int64 registration_id;
57 GURL scope; 57 GURL scope;
58 58
59 // Versions are first stored once they successfully install and become 59 // Versions are first stored once they successfully install and become
60 // the waiting version. Then transition to the active version. The stored 60 // the waiting version. Then transition to the active version. The stored
61 // version may be in the ACTIVATED state or in the INSTALLED state. 61 // version may be in the ACTIVATED state or in the INSTALLED state.
62 GURL script; 62 GURL script;
63 int64 version_id; 63 std::string version_uuid;
64 bool is_active; 64 bool is_active;
65 bool has_fetch_handler; 65 bool has_fetch_handler;
66 base::Time last_update_check; 66 base::Time last_update_check;
67 67
68 // Not populated until ServiceWorkerStorage::StoreRegistration is called. 68 // Not populated until ServiceWorkerStorage::StoreRegistration is called.
69 int64_t resources_total_size_bytes; 69 int64_t resources_total_size_bytes;
70 70
71 RegistrationData(); 71 RegistrationData();
72 ~RegistrationData(); 72 ~RegistrationData();
73 }; 73 };
74 74
75 struct ResourceRecord { 75 struct ResourceRecord {
76 int64 resource_id; 76 int64 resource_id;
77 GURL url; 77 GURL url;
78 // Signed so we can store -1 to specify an unknown or error state. When 78 // Signed so we can store -1 to specify an unknown or error state. When
79 // stored to the database, this value should always be >= 0. 79 // stored to the database, this value should always be >= 0.
80 int64 size_bytes; 80 int64 size_bytes;
81 81
82 ResourceRecord() : resource_id(-1), size_bytes(0) {} 82 ResourceRecord() : resource_id(-1), size_bytes(0) {}
83 ResourceRecord(int64 id, GURL url, int64 size_bytes) 83 ResourceRecord(int64 id, GURL url, int64 size_bytes)
84 : resource_id(id), url(url), size_bytes(size_bytes) {} 84 : resource_id(id), url(url), size_bytes(size_bytes) {}
85 }; 85 };
86 86
87 // Reads next available ids from the database. Returns OK if they are 87 // Reads next available ids from the database. Returns OK if they are
88 // successfully read. Fills the arguments with an initial value and returns 88 // successfully read. Fills the arguments with an initial value and returns
89 // OK if they are not found in the database. Otherwise, returns an error. 89 // OK if they are not found in the database. Otherwise, returns an error.
90 Status GetNextAvailableIds( 90 Status GetNextAvailableIds(
91 int64* next_avail_registration_id, 91 int64* next_avail_registration_id,
92 int64* next_avail_version_id,
93 int64* next_avail_resource_id); 92 int64* next_avail_resource_id);
94 93
95 // Used for diskcache migration (http://crbug.com/487482). Returns true if the 94 // Used for diskcache migration (http://crbug.com/487482). Returns true if the
96 // storage needs to migrate a disk cache. 95 // storage needs to migrate a disk cache.
97 Status IsDiskCacheMigrationNeeded(bool* migration_needed); 96 Status IsDiskCacheMigrationNeeded(bool* migration_needed);
98 Status SetDiskCacheMigrationNotNeeded(); 97 Status SetDiskCacheMigrationNotNeeded();
99 98
100 // Used for diskcache migration (http://crbug.com/487482). Returns true if the 99 // Used for diskcache migration (http://crbug.com/487482). Returns true if the
101 // storage needs to delete an old disk cache. 100 // storage needs to delete an old disk cache.
102 Status IsOldDiskCacheDeletionNeeded(bool* deletion_needed); 101 Status IsOldDiskCacheDeletionNeeded(bool* deletion_needed);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // Looks up the origin for the registration with |registration_id|. Returns OK 134 // Looks up the origin for the registration with |registration_id|. Returns OK
136 // if a registration was found and read successfully. Otherwise, returns an 135 // if a registration was found and read successfully. Otherwise, returns an
137 // error. 136 // error.
138 Status ReadRegistrationOrigin(int64 registration_id, GURL* origin); 137 Status ReadRegistrationOrigin(int64 registration_id, GURL* origin);
139 138
140 // Writes |registration| and |resources| into the database and does following 139 // Writes |registration| and |resources| into the database and does following
141 // things: 140 // things:
142 // - If an old version of the registration exists, deletes it and sets 141 // - If an old version of the registration exists, deletes it and sets
143 // |deleted_version| to the old version registration data object 142 // |deleted_version| to the old version registration data object
144 // |newly_purgeable_resources| to its resources. Otherwise, sets 143 // |newly_purgeable_resources| to its resources. Otherwise, sets
145 // |deleted_version->version_id| to -1. 144 // |deleted_version->version_uuid| to -1.
146 // - Bumps the next registration id and the next version id if needed. 145 // - Bumps the next registration id and the next version id if needed.
147 // - Removes |resources| from the uncommitted list if exist. 146 // - Removes |resources| from the uncommitted list if exist.
148 // Returns OK they are successfully written. Otherwise, returns an error. 147 // Returns OK they are successfully written. Otherwise, returns an error.
149 Status WriteRegistration(const RegistrationData& registration, 148 Status WriteRegistration(const RegistrationData& registration,
150 const std::vector<ResourceRecord>& resources, 149 const std::vector<ResourceRecord>& resources,
151 RegistrationData* deleted_version, 150 RegistrationData* deleted_version,
152 std::vector<int64>* newly_purgeable_resources); 151 std::vector<int64>* newly_purgeable_resources);
153 152
154 // Updates a registration for |registration_id| to an active state. Returns OK 153 // Updates a registration for |registration_id| to an active state. Returns OK
155 // if it's successfully updated. Otherwise, returns an error. 154 // if it's successfully updated. Otherwise, returns an error.
156 Status UpdateVersionToActive( 155 Status UpdateVersionToActive(
157 int64 registration_id, 156 int64 registration_id,
158 const GURL& origin); 157 const GURL& origin);
159 158
160 // Updates last check time of a registration for |registration_id| by |time|. 159 // Updates last check time of a registration for |registration_id| by |time|.
161 // Returns OK if it's successfully updated. Otherwise, returns an error. 160 // Returns OK if it's successfully updated. Otherwise, returns an error.
162 Status UpdateLastCheckTime( 161 Status UpdateLastCheckTime(
163 int64 registration_id, 162 int64 registration_id,
164 const GURL& origin, 163 const GURL& origin,
165 const base::Time& time); 164 const base::Time& time);
166 165
167 // Deletes a registration for |registration_id| and moves resource records 166 // Deletes a registration for |registration_id| and moves resource records
168 // associated with it into the purgeable list. If deletion occurred, sets 167 // associated with it into the purgeable list. If deletion occurred, sets
169 // |version_id| to the id of the version that was deleted and 168 // |version_uuid| to the id of the version that was deleted and
170 // |newly_purgeable_resources| to its resources; otherwise, sets |version_id| 169 // |newly_purgeable_resources| to its resources; otherwise, sets
170 // |version_uuid|
171 // to -1. Returns OK if it's successfully deleted or not found in the 171 // to -1. Returns OK if it's successfully deleted or not found in the
172 // database. Otherwise, returns an error. 172 // database. Otherwise, returns an error.
173 Status DeleteRegistration(int64 registration_id, 173 Status DeleteRegistration(int64 registration_id,
174 const GURL& origin, 174 const GURL& origin,
175 RegistrationData* deleted_version, 175 RegistrationData* deleted_version,
176 std::vector<int64>* newly_purgeable_resources); 176 std::vector<int64>* newly_purgeable_resources);
177 177
178 // Reads user data for |registration_id| and |user_data_name| from the 178 // Reads user data for |registration_id| and |user_data_name| from the
179 // database. 179 // database.
180 Status ReadUserData(int64 registration_id, 180 Status ReadUserData(int64 registration_id,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 const char* id_key, 269 const char* id_key,
270 int64* next_avail_id); 270 int64* next_avail_id);
271 271
272 // Reads registration data for |registration_id| from the database. Returns OK 272 // Reads registration data for |registration_id| from the database. Returns OK
273 // if successfully reads. Otherwise, returns an error. 273 // if successfully reads. Otherwise, returns an error.
274 Status ReadRegistrationData( 274 Status ReadRegistrationData(
275 int64 registration_id, 275 int64 registration_id,
276 const GURL& origin, 276 const GURL& origin,
277 RegistrationData* registration); 277 RegistrationData* registration);
278 278
279 // Reads resource records for |version_id| from the database. Returns OK if 279 // Reads resource records for |version_uuid| from the database. Returns OK if
280 // it's successfully read or not found in the database. Otherwise, returns an 280 // it's successfully read or not found in the database. Otherwise, returns an
281 // error. 281 // error.
282 Status ReadResourceRecords( 282 Status ReadResourceRecords(std::string version_uuid,
283 int64 version_id, 283 std::vector<ResourceRecord>* resources);
284 std::vector<ResourceRecord>* resources);
285 284
286 // Deletes resource records for |version_id| from the database. Returns OK if 285 // Deletes resource records for |version_uuid| from the database. Returns OK
286 // if
287 // they are successfully deleted or not found in the database. Otherwise, 287 // they are successfully deleted or not found in the database. Otherwise,
288 // returns an error. 288 // returns an error.
289 Status DeleteResourceRecords( 289 Status DeleteResourceRecords(std::string version_uuid,
290 int64 version_id, 290 std::vector<int64>* newly_purgeable_resources,
291 std::vector<int64>* newly_purgeable_resources, 291 leveldb::WriteBatch* batch);
292 leveldb::WriteBatch* batch);
293 292
294 // Reads resource ids for |id_key_prefix| from the database. Returns OK if 293 // Reads resource ids for |id_key_prefix| from the database. Returns OK if
295 // it's successfully read or not found in the database. Otherwise, returns an 294 // it's successfully read or not found in the database. Otherwise, returns an
296 // error. 295 // error.
297 Status ReadResourceIds( 296 Status ReadResourceIds(
298 const char* id_key_prefix, 297 const char* id_key_prefix,
299 std::set<int64>* ids); 298 std::set<int64>* ids);
300 299
301 // Write resource ids for |id_key_prefix| into the database. Returns OK on 300 // Write resource ids for |id_key_prefix| into the database. Returns OK on
302 // success. Otherwise, returns writes nothing and returns an error. 301 // success. Otherwise, returns writes nothing and returns an error.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 Status WriteBatch(leveldb::WriteBatch* batch); 334 Status WriteBatch(leveldb::WriteBatch* batch);
336 335
337 // Bumps the next available id if |used_id| is greater than or equal to the 336 // Bumps the next available id if |used_id| is greater than or equal to the
338 // cached one. 337 // cached one.
339 void BumpNextRegistrationIdIfNeeded( 338 void BumpNextRegistrationIdIfNeeded(
340 int64 used_id, 339 int64 used_id,
341 leveldb::WriteBatch* batch); 340 leveldb::WriteBatch* batch);
342 void BumpNextResourceIdIfNeeded( 341 void BumpNextResourceIdIfNeeded(
343 int64 used_id, 342 int64 used_id,
344 leveldb::WriteBatch* batch); 343 leveldb::WriteBatch* batch);
345 void BumpNextVersionIdIfNeeded(
346 int64 used_id,
347 leveldb::WriteBatch* batch);
348 344
349 bool IsOpen(); 345 bool IsOpen();
350 346
351 void Disable( 347 void Disable(
352 const tracked_objects::Location& from_here, 348 const tracked_objects::Location& from_here,
353 Status status); 349 Status status);
354 void HandleOpenResult( 350 void HandleOpenResult(
355 const tracked_objects::Location& from_here, 351 const tracked_objects::Location& from_here,
356 Status status); 352 Status status);
357 void HandleReadResult( 353 void HandleReadResult(
358 const tracked_objects::Location& from_here, 354 const tracked_objects::Location& from_here,
359 Status status); 355 Status status);
360 void HandleWriteResult( 356 void HandleWriteResult(
361 const tracked_objects::Location& from_here, 357 const tracked_objects::Location& from_here,
362 Status status); 358 Status status);
363 359
364 const base::FilePath path_; 360 const base::FilePath path_;
365 scoped_ptr<leveldb::Env> env_; 361 scoped_ptr<leveldb::Env> env_;
366 scoped_ptr<leveldb::DB> db_; 362 scoped_ptr<leveldb::DB> db_;
367 363
368 int64 next_avail_registration_id_; 364 int64 next_avail_registration_id_;
369 int64 next_avail_resource_id_; 365 int64 next_avail_resource_id_;
370 int64 next_avail_version_id_;
371 366
372 enum State { 367 enum State {
373 UNINITIALIZED, 368 UNINITIALIZED,
374 INITIALIZED, 369 INITIALIZED,
375 DISABLED, 370 DISABLED,
376 }; 371 };
377 State state_; 372 State state_;
378 373
379 bool IsDatabaseInMemory() const; 374 bool IsDatabaseInMemory() const;
380 375
(...skipping 19 matching lines...) Expand all
400 MigrateOnDiskCacheAccess); 395 MigrateOnDiskCacheAccess);
401 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerDiskCacheMigratorTest, 396 FRIEND_TEST_ALL_PREFIXES(ServiceWorkerDiskCacheMigratorTest,
402 NotMigrateOnDatabaseAccess); 397 NotMigrateOnDatabaseAccess);
403 398
404 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDatabase); 399 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerDatabase);
405 }; 400 };
406 401
407 } // namespace content 402 } // namespace content
408 403
409 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DATABASE_H_ 404 #endif // CONTENT_BROWSER_SERVICE_WORKER_SERVICE_WORKER_DATABASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698