OLD | NEW |
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 #include "content/browser/service_worker/service_worker_database.h" | 5 #include "content/browser/service_worker/service_worker_database.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/files/scoped_temp_dir.h" | 10 #include "base/files/scoped_temp_dir.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 | 102 |
103 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 103 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
104 database.reset(CreateDatabaseInMemory()); | 104 database.reset(CreateDatabaseInMemory()); |
105 | 105 |
106 // Should be false because the database is not persistent. | 106 // Should be false because the database is not persistent. |
107 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 107 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
108 database->LazyOpen(false)); | 108 database->LazyOpen(false)); |
109 } | 109 } |
110 | 110 |
111 TEST(ServiceWorkerDatabaseTest, DatabaseVersion) { | 111 TEST(ServiceWorkerDatabaseTest, DatabaseVersion) { |
| 112 GURL origin("http://example.com"); |
112 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 113 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
113 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 114 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
114 | 115 |
115 // Opening a new database does not write anything, so its schema version | 116 // Opening a new database does not write anything, so its schema version |
116 // should be 0. | 117 // should be 0. |
117 int64 db_version = -1; | 118 int64 db_version = -1; |
118 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 119 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
119 database->ReadDatabaseVersion(&db_version)); | 120 database->ReadDatabaseVersion(&db_version)); |
120 EXPECT_EQ(0u, db_version); | 121 EXPECT_EQ(0u, db_version); |
121 | 122 |
122 // First writing triggers database initialization and bumps the schema | 123 // First writing triggers database initialization and bumps the schema |
123 // version. | 124 // version. |
124 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 125 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
| 126 resources.push_back(CreateResource(1, URL(origin, "/resource"), 10)); |
125 ServiceWorkerDatabase::RegistrationData deleted_version; | 127 ServiceWorkerDatabase::RegistrationData deleted_version; |
126 std::vector<int64> newly_purgeable_resources; | 128 std::vector<int64> newly_purgeable_resources; |
127 ServiceWorkerDatabase::RegistrationData data; | 129 ServiceWorkerDatabase::RegistrationData data; |
| 130 data.resources_total_size_bytes = 10; |
128 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 131 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
129 database->WriteRegistration( | 132 database->WriteRegistration( |
130 data, resources, &deleted_version, &newly_purgeable_resources)); | 133 data, resources, &deleted_version, &newly_purgeable_resources)); |
131 | 134 |
132 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 135 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
133 database->ReadDatabaseVersion(&db_version)); | 136 database->ReadDatabaseVersion(&db_version)); |
134 EXPECT_LT(0, db_version); | 137 EXPECT_LT(0, db_version); |
135 } | 138 } |
136 | 139 |
137 TEST(ServiceWorkerDatabaseTest, UpgradeSchemaToVersion2) { | 140 TEST(ServiceWorkerDatabaseTest, UpgradeSchemaToVersion2) { |
138 base::ScopedTempDir database_dir; | 141 base::ScopedTempDir database_dir; |
139 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); | 142 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); |
140 scoped_ptr<ServiceWorkerDatabase> database( | 143 scoped_ptr<ServiceWorkerDatabase> database( |
141 CreateDatabase(database_dir.path())); | 144 CreateDatabase(database_dir.path())); |
142 | 145 |
143 GURL origin("http://example.com"); | 146 GURL origin("http://example.com"); |
144 | 147 |
145 // Add a registration to the database. | 148 // Add a registration to the database. |
146 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 149 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
147 ServiceWorkerDatabase::RegistrationData deleted_version; | 150 ServiceWorkerDatabase::RegistrationData deleted_version; |
148 std::vector<int64> newly_purgeable_resources; | 151 std::vector<int64> newly_purgeable_resources; |
149 ServiceWorkerDatabase::RegistrationData data; | 152 ServiceWorkerDatabase::RegistrationData data; |
150 data.registration_id = 100; | 153 data.registration_id = 100; |
151 data.scope = URL(origin, "/foo"); | 154 data.scope = URL(origin, "/foo"); |
152 data.script = URL(origin, "/script1.js"); | 155 data.script = URL(origin, "/script1.js"); |
153 data.version_id = 200; | 156 data.version_id = 200; |
| 157 data.resources_total_size_bytes = 300; |
| 158 resources.push_back(CreateResource(1, data.script, 300)); |
154 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 159 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
155 database->WriteRegistration(data, resources, &deleted_version, | 160 database->WriteRegistration(data, resources, &deleted_version, |
156 &newly_purgeable_resources)); | 161 &newly_purgeable_resources)); |
157 | 162 |
158 // Sanity check on current version. | 163 // Sanity check on current version. |
159 int64 db_version = -1; | 164 int64 db_version = -1; |
160 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 165 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
161 database->ReadDatabaseVersion(&db_version)); | 166 database->ReadDatabaseVersion(&db_version)); |
162 EXPECT_LE(2, db_version); | 167 EXPECT_LE(2, db_version); |
163 | 168 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 EXPECT_EQ(0, ids.res_id); | 212 EXPECT_EQ(0, ids.res_id); |
208 | 213 |
209 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 214 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
210 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( | 215 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
211 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 216 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
212 EXPECT_EQ(0, ids.reg_id); | 217 EXPECT_EQ(0, ids.reg_id); |
213 EXPECT_EQ(0, ids.ver_id); | 218 EXPECT_EQ(0, ids.ver_id); |
214 EXPECT_EQ(0, ids.res_id); | 219 EXPECT_EQ(0, ids.res_id); |
215 | 220 |
216 // Writing a registration bumps the next available ids. | 221 // Writing a registration bumps the next available ids. |
217 std::vector<Resource> resources; | 222 std::vector<Resource> resources1; |
218 RegistrationData data1; | 223 RegistrationData data1; |
219 ServiceWorkerDatabase::RegistrationData deleted_version; | 224 ServiceWorkerDatabase::RegistrationData deleted_version; |
220 std::vector<int64> newly_purgeable_resources; | 225 std::vector<int64> newly_purgeable_resources; |
221 data1.registration_id = 100; | 226 data1.registration_id = 100; |
222 data1.scope = URL(origin, "/foo"); | 227 data1.scope = URL(origin, "/foo"); |
223 data1.script = URL(origin, "/script1.js"); | 228 data1.script = URL(origin, "/script1.js"); |
224 data1.version_id = 200; | 229 data1.version_id = 200; |
225 ASSERT_EQ( | 230 data1.resources_total_size_bytes = 300; |
226 ServiceWorkerDatabase::STATUS_OK, | 231 resources1.push_back(CreateResource(1, data1.script, 300)); |
227 database->WriteRegistration( | 232 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
228 data1, resources, &deleted_version, &newly_purgeable_resources)); | 233 database->WriteRegistration(data1, resources1, &deleted_version, |
| 234 &newly_purgeable_resources)); |
229 | 235 |
230 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( | 236 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
231 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 237 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
232 EXPECT_EQ(101, ids.reg_id); | 238 EXPECT_EQ(101, ids.reg_id); |
233 EXPECT_EQ(201, ids.ver_id); | 239 EXPECT_EQ(201, ids.ver_id); |
234 EXPECT_EQ(0, ids.res_id); | 240 EXPECT_EQ(0, ids.res_id); |
235 | 241 |
236 // Writing uncommitted resources bumps the next available id. | 242 // Writing uncommitted resources bumps the next available id. |
237 const int64 kUncommittedIds[] = {0, 1, 3, 5, 6, 10}; | 243 const int64 kUncommittedIds[] = {0, 1, 3, 5, 6, 10}; |
238 EXPECT_EQ( | 244 EXPECT_EQ( |
(...skipping 19 matching lines...) Expand all Loading... |
258 EXPECT_EQ(201, ids.ver_id); | 264 EXPECT_EQ(201, ids.ver_id); |
259 EXPECT_EQ(21, ids.res_id); | 265 EXPECT_EQ(21, ids.res_id); |
260 | 266 |
261 // Writing a registration whose ids are lower than the stored ones should not | 267 // Writing a registration whose ids are lower than the stored ones should not |
262 // bump the next available ids. | 268 // bump the next available ids. |
263 RegistrationData data2; | 269 RegistrationData data2; |
264 data2.registration_id = 10; | 270 data2.registration_id = 10; |
265 data2.scope = URL(origin, "/bar"); | 271 data2.scope = URL(origin, "/bar"); |
266 data2.script = URL(origin, "/script2.js"); | 272 data2.script = URL(origin, "/script2.js"); |
267 data2.version_id = 20; | 273 data2.version_id = 20; |
268 ASSERT_EQ( | 274 data2.resources_total_size_bytes = 400; |
269 ServiceWorkerDatabase::STATUS_OK, | 275 std::vector<Resource> resources2; |
270 database->WriteRegistration( | 276 resources2.push_back(CreateResource(2, data2.script, 400)); |
271 data2, resources, &deleted_version, &newly_purgeable_resources)); | 277 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 278 database->WriteRegistration(data2, resources2, &deleted_version, |
| 279 &newly_purgeable_resources)); |
272 | 280 |
273 // Same with resources. | 281 // Same with resources. |
274 int64 kLowResourceId = 15; | 282 int64 kLowResourceId = 15; |
275 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 283 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
276 database->WriteUncommittedResourceIds( | 284 database->WriteUncommittedResourceIds( |
277 std::set<int64>(&kLowResourceId, &kLowResourceId + 1))); | 285 std::set<int64>(&kLowResourceId, &kLowResourceId + 1))); |
278 | 286 |
279 // Close and reopen the database to verify the stored values. | 287 // Close and reopen the database to verify the stored values. |
280 database.reset(CreateDatabase(database_dir.path())); | 288 database.reset(CreateDatabase(database_dir.path())); |
281 | 289 |
282 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( | 290 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
283 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 291 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
284 EXPECT_EQ(101, ids.reg_id); | 292 EXPECT_EQ(101, ids.reg_id); |
285 EXPECT_EQ(201, ids.ver_id); | 293 EXPECT_EQ(201, ids.ver_id); |
286 EXPECT_EQ(21, ids.res_id); | 294 EXPECT_EQ(21, ids.res_id); |
287 } | 295 } |
288 | 296 |
289 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { | 297 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { |
290 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 298 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
291 | 299 |
292 std::set<GURL> origins; | 300 std::set<GURL> origins; |
293 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 301 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
294 database->GetOriginsWithRegistrations(&origins)); | 302 database->GetOriginsWithRegistrations(&origins)); |
295 EXPECT_TRUE(origins.empty()); | 303 EXPECT_TRUE(origins.empty()); |
296 | 304 |
297 std::vector<Resource> resources; | |
298 ServiceWorkerDatabase::RegistrationData deleted_version; | 305 ServiceWorkerDatabase::RegistrationData deleted_version; |
299 std::vector<int64> newly_purgeable_resources; | 306 std::vector<int64> newly_purgeable_resources; |
300 | 307 |
301 GURL origin1("http://example.com"); | 308 GURL origin1("http://example.com"); |
302 RegistrationData data1; | 309 RegistrationData data1; |
303 data1.registration_id = 123; | 310 data1.registration_id = 123; |
304 data1.scope = URL(origin1, "/foo"); | 311 data1.scope = URL(origin1, "/foo"); |
305 data1.script = URL(origin1, "/script1.js"); | 312 data1.script = URL(origin1, "/script1.js"); |
306 data1.version_id = 456; | 313 data1.version_id = 456; |
307 ASSERT_EQ( | 314 data1.resources_total_size_bytes = 100; |
308 ServiceWorkerDatabase::STATUS_OK, | 315 std::vector<Resource> resources1; |
309 database->WriteRegistration( | 316 resources1.push_back(CreateResource(1, data1.script, 100)); |
310 data1, resources, &deleted_version, &newly_purgeable_resources)); | 317 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 318 database->WriteRegistration(data1, resources1, &deleted_version, |
| 319 &newly_purgeable_resources)); |
311 | 320 |
312 GURL origin2("https://www.example.com"); | 321 GURL origin2("https://www.example.com"); |
313 RegistrationData data2; | 322 RegistrationData data2; |
314 data2.registration_id = 234; | 323 data2.registration_id = 234; |
315 data2.scope = URL(origin2, "/bar"); | 324 data2.scope = URL(origin2, "/bar"); |
316 data2.script = URL(origin2, "/script2.js"); | 325 data2.script = URL(origin2, "/script2.js"); |
317 data2.version_id = 567; | 326 data2.version_id = 567; |
318 ASSERT_EQ( | 327 data2.resources_total_size_bytes = 200; |
319 ServiceWorkerDatabase::STATUS_OK, | 328 std::vector<Resource> resources2; |
320 database->WriteRegistration( | 329 resources2.push_back(CreateResource(2, data2.script, 200)); |
321 data2, resources, &deleted_version, &newly_purgeable_resources)); | 330 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 331 database->WriteRegistration(data2, resources2, &deleted_version, |
| 332 &newly_purgeable_resources)); |
322 | 333 |
323 GURL origin3("https://example.org"); | 334 GURL origin3("https://example.org"); |
324 RegistrationData data3; | 335 RegistrationData data3; |
325 data3.registration_id = 345; | 336 data3.registration_id = 345; |
326 data3.scope = URL(origin3, "/hoge"); | 337 data3.scope = URL(origin3, "/hoge"); |
327 data3.script = URL(origin3, "/script3.js"); | 338 data3.script = URL(origin3, "/script3.js"); |
328 data3.version_id = 678; | 339 data3.version_id = 678; |
329 ASSERT_EQ( | 340 data3.resources_total_size_bytes = 300; |
330 ServiceWorkerDatabase::STATUS_OK, | 341 std::vector<Resource> resources3; |
331 database->WriteRegistration( | 342 resources3.push_back(CreateResource(3, data3.script, 300)); |
332 data3, resources, &deleted_version, &newly_purgeable_resources)); | 343 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 344 database->WriteRegistration(data3, resources3, &deleted_version, |
| 345 &newly_purgeable_resources)); |
333 | 346 |
334 // |origin3| has two registrations. | 347 // |origin3| has two registrations. |
335 RegistrationData data4; | 348 RegistrationData data4; |
336 data4.registration_id = 456; | 349 data4.registration_id = 456; |
337 data4.scope = URL(origin3, "/fuga"); | 350 data4.scope = URL(origin3, "/fuga"); |
338 data4.script = URL(origin3, "/script4.js"); | 351 data4.script = URL(origin3, "/script4.js"); |
339 data4.version_id = 789; | 352 data4.version_id = 789; |
340 ASSERT_EQ( | 353 data4.resources_total_size_bytes = 400; |
341 ServiceWorkerDatabase::STATUS_OK, | 354 std::vector<Resource> resources4; |
342 database->WriteRegistration( | 355 resources4.push_back(CreateResource(4, data4.script, 400)); |
343 data4, resources, &deleted_version, &newly_purgeable_resources)); | 356 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 357 database->WriteRegistration(data4, resources4, &deleted_version, |
| 358 &newly_purgeable_resources)); |
344 | 359 |
345 origins.clear(); | 360 origins.clear(); |
346 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 361 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
347 database->GetOriginsWithRegistrations(&origins)); | 362 database->GetOriginsWithRegistrations(&origins)); |
348 EXPECT_EQ(3U, origins.size()); | 363 EXPECT_EQ(3U, origins.size()); |
349 EXPECT_TRUE(ContainsKey(origins, origin1)); | 364 EXPECT_TRUE(ContainsKey(origins, origin1)); |
350 EXPECT_TRUE(ContainsKey(origins, origin2)); | 365 EXPECT_TRUE(ContainsKey(origins, origin2)); |
351 EXPECT_TRUE(ContainsKey(origins, origin3)); | 366 EXPECT_TRUE(ContainsKey(origins, origin3)); |
352 | 367 |
353 // |origin3| has another registration, so should not remove it from the | 368 // |origin3| has another registration, so should not remove it from the |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 | 403 |
389 GURL origin1("http://example.com"); | 404 GURL origin1("http://example.com"); |
390 GURL origin2("https://www.example.com"); | 405 GURL origin2("https://www.example.com"); |
391 GURL origin3("https://example.org"); | 406 GURL origin3("https://example.org"); |
392 | 407 |
393 std::vector<RegistrationData> registrations; | 408 std::vector<RegistrationData> registrations; |
394 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 409 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
395 database->GetRegistrationsForOrigin(origin1, ®istrations)); | 410 database->GetRegistrationsForOrigin(origin1, ®istrations)); |
396 EXPECT_TRUE(registrations.empty()); | 411 EXPECT_TRUE(registrations.empty()); |
397 | 412 |
398 std::vector<Resource> resources; | |
399 ServiceWorkerDatabase::RegistrationData deleted_version; | 413 ServiceWorkerDatabase::RegistrationData deleted_version; |
400 std::vector<int64> newly_purgeable_resources; | 414 std::vector<int64> newly_purgeable_resources; |
401 | 415 |
402 RegistrationData data1; | 416 RegistrationData data1; |
403 data1.registration_id = 100; | 417 data1.registration_id = 100; |
404 data1.scope = URL(origin1, "/foo"); | 418 data1.scope = URL(origin1, "/foo"); |
405 data1.script = URL(origin1, "/script1.js"); | 419 data1.script = URL(origin1, "/script1.js"); |
406 data1.version_id = 1000; | 420 data1.version_id = 1000; |
407 ASSERT_EQ( | 421 data1.resources_total_size_bytes = 100; |
408 ServiceWorkerDatabase::STATUS_OK, | 422 std::vector<Resource> resources1; |
409 database->WriteRegistration( | 423 resources1.push_back(CreateResource(1, data1.script, 100)); |
410 data1, resources, &deleted_version, &newly_purgeable_resources)); | 424 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 425 database->WriteRegistration(data1, resources1, &deleted_version, |
| 426 &newly_purgeable_resources)); |
411 | 427 |
412 RegistrationData data2; | 428 RegistrationData data2; |
413 data2.registration_id = 200; | 429 data2.registration_id = 200; |
414 data2.scope = URL(origin2, "/bar"); | 430 data2.scope = URL(origin2, "/bar"); |
415 data2.script = URL(origin2, "/script2.js"); | 431 data2.script = URL(origin2, "/script2.js"); |
416 data2.version_id = 2000; | 432 data2.version_id = 2000; |
417 ASSERT_EQ( | 433 data2.resources_total_size_bytes = 200; |
418 ServiceWorkerDatabase::STATUS_OK, | 434 std::vector<Resource> resources2; |
419 database->WriteRegistration( | 435 resources2.push_back(CreateResource(2, data2.script, 200)); |
420 data2, resources, &deleted_version, &newly_purgeable_resources)); | 436 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 437 database->WriteRegistration(data2, resources2, &deleted_version, |
| 438 &newly_purgeable_resources)); |
421 | 439 |
422 RegistrationData data3; | 440 RegistrationData data3; |
423 data3.registration_id = 300; | 441 data3.registration_id = 300; |
424 data3.scope = URL(origin3, "/hoge"); | 442 data3.scope = URL(origin3, "/hoge"); |
425 data3.script = URL(origin3, "/script3.js"); | 443 data3.script = URL(origin3, "/script3.js"); |
426 data3.version_id = 3000; | 444 data3.version_id = 3000; |
427 ASSERT_EQ( | 445 data3.resources_total_size_bytes = 300; |
428 ServiceWorkerDatabase::STATUS_OK, | 446 std::vector<Resource> resources3; |
429 database->WriteRegistration( | 447 resources3.push_back(CreateResource(3, data3.script, 300)); |
430 data3, resources, &deleted_version, &newly_purgeable_resources)); | 448 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 449 database->WriteRegistration(data3, resources3, &deleted_version, |
| 450 &newly_purgeable_resources)); |
431 | 451 |
432 // |origin3| has two registrations. | 452 // |origin3| has two registrations. |
433 RegistrationData data4; | 453 RegistrationData data4; |
434 data4.registration_id = 400; | 454 data4.registration_id = 400; |
435 data4.scope = URL(origin3, "/fuga"); | 455 data4.scope = URL(origin3, "/fuga"); |
436 data4.script = URL(origin3, "/script4.js"); | 456 data4.script = URL(origin3, "/script4.js"); |
437 data4.version_id = 4000; | 457 data4.version_id = 4000; |
438 ASSERT_EQ( | 458 data4.resources_total_size_bytes = 400; |
439 ServiceWorkerDatabase::STATUS_OK, | 459 std::vector<Resource> resources4; |
440 database->WriteRegistration( | 460 resources4.push_back(CreateResource(4, data4.script, 400)); |
441 data4, resources, &deleted_version, &newly_purgeable_resources)); | 461 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 462 database->WriteRegistration(data4, resources4, &deleted_version, |
| 463 &newly_purgeable_resources)); |
442 | 464 |
443 registrations.clear(); | 465 registrations.clear(); |
444 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 466 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
445 database->GetRegistrationsForOrigin(origin3, ®istrations)); | 467 database->GetRegistrationsForOrigin(origin3, ®istrations)); |
446 EXPECT_EQ(2U, registrations.size()); | 468 EXPECT_EQ(2U, registrations.size()); |
447 VerifyRegistrationData(data3, registrations[0]); | 469 VerifyRegistrationData(data3, registrations[0]); |
448 VerifyRegistrationData(data4, registrations[1]); | 470 VerifyRegistrationData(data4, registrations[1]); |
449 } | 471 } |
450 | 472 |
451 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { | 473 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { |
452 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 474 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
453 | 475 |
454 std::vector<RegistrationData> registrations; | 476 std::vector<RegistrationData> registrations; |
455 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 477 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
456 database->GetAllRegistrations(®istrations)); | 478 database->GetAllRegistrations(®istrations)); |
457 EXPECT_TRUE(registrations.empty()); | 479 EXPECT_TRUE(registrations.empty()); |
458 | 480 |
459 std::vector<Resource> resources; | |
460 ServiceWorkerDatabase::RegistrationData deleted_version; | 481 ServiceWorkerDatabase::RegistrationData deleted_version; |
461 std::vector<int64> newly_purgeable_resources; | 482 std::vector<int64> newly_purgeable_resources; |
462 | 483 |
463 GURL origin1("http://www1.example.com"); | 484 GURL origin1("http://www1.example.com"); |
464 RegistrationData data1; | 485 RegistrationData data1; |
465 data1.registration_id = 100; | 486 data1.registration_id = 100; |
466 data1.scope = URL(origin1, "/foo"); | 487 data1.scope = URL(origin1, "/foo"); |
467 data1.script = URL(origin1, "/script1.js"); | 488 data1.script = URL(origin1, "/script1.js"); |
468 data1.version_id = 1000; | 489 data1.version_id = 1000; |
469 ASSERT_EQ( | 490 data1.resources_total_size_bytes = 100; |
470 ServiceWorkerDatabase::STATUS_OK, | 491 std::vector<Resource> resources1; |
471 database->WriteRegistration( | 492 resources1.push_back(CreateResource(1, data1.script, 100)); |
472 data1, resources, &deleted_version, &newly_purgeable_resources)); | 493 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 494 database->WriteRegistration(data1, resources1, &deleted_version, |
| 495 &newly_purgeable_resources)); |
473 | 496 |
474 GURL origin2("http://www2.example.com"); | 497 GURL origin2("http://www2.example.com"); |
475 RegistrationData data2; | 498 RegistrationData data2; |
476 data2.registration_id = 200; | 499 data2.registration_id = 200; |
477 data2.scope = URL(origin2, "/bar"); | 500 data2.scope = URL(origin2, "/bar"); |
478 data2.script = URL(origin2, "/script2.js"); | 501 data2.script = URL(origin2, "/script2.js"); |
479 data2.version_id = 2000; | 502 data2.version_id = 2000; |
480 ASSERT_EQ( | 503 data2.resources_total_size_bytes = 200; |
481 ServiceWorkerDatabase::STATUS_OK, | 504 std::vector<Resource> resources2; |
482 database->WriteRegistration( | 505 resources2.push_back(CreateResource(2, data2.script, 200)); |
483 data2, resources, &deleted_version, &newly_purgeable_resources)); | 506 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 507 database->WriteRegistration(data2, resources2, &deleted_version, |
| 508 &newly_purgeable_resources)); |
484 | 509 |
485 GURL origin3("http://www3.example.com"); | 510 GURL origin3("http://www3.example.com"); |
486 RegistrationData data3; | 511 RegistrationData data3; |
487 data3.registration_id = 300; | 512 data3.registration_id = 300; |
488 data3.scope = URL(origin3, "/hoge"); | 513 data3.scope = URL(origin3, "/hoge"); |
489 data3.script = URL(origin3, "/script3.js"); | 514 data3.script = URL(origin3, "/script3.js"); |
490 data3.version_id = 3000; | 515 data3.version_id = 3000; |
491 ASSERT_EQ( | 516 data3.resources_total_size_bytes = 300; |
492 ServiceWorkerDatabase::STATUS_OK, | 517 std::vector<Resource> resources3; |
493 database->WriteRegistration( | 518 resources3.push_back(CreateResource(3, data3.script, 300)); |
494 data3, resources, &deleted_version, &newly_purgeable_resources)); | 519 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 520 database->WriteRegistration(data3, resources3, &deleted_version, |
| 521 &newly_purgeable_resources)); |
495 | 522 |
496 // |origin3| has two registrations. | 523 // |origin3| has two registrations. |
497 RegistrationData data4; | 524 RegistrationData data4; |
498 data4.registration_id = 400; | 525 data4.registration_id = 400; |
499 data4.scope = URL(origin3, "/fuga"); | 526 data4.scope = URL(origin3, "/fuga"); |
500 data4.script = URL(origin3, "/script4.js"); | 527 data4.script = URL(origin3, "/script4.js"); |
501 data4.version_id = 4000; | 528 data4.version_id = 4000; |
502 ASSERT_EQ( | 529 data4.resources_total_size_bytes = 400; |
503 ServiceWorkerDatabase::STATUS_OK, | 530 std::vector<Resource> resources4; |
504 database->WriteRegistration( | 531 resources4.push_back(CreateResource(4, data4.script, 400)); |
505 data4, resources, &deleted_version, &newly_purgeable_resources)); | 532 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 533 database->WriteRegistration(data4, resources4, &deleted_version, |
| 534 &newly_purgeable_resources)); |
506 | 535 |
507 registrations.clear(); | 536 registrations.clear(); |
508 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 537 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
509 database->GetAllRegistrations(®istrations)); | 538 database->GetAllRegistrations(®istrations)); |
510 EXPECT_EQ(4U, registrations.size()); | 539 EXPECT_EQ(4U, registrations.size()); |
511 VerifyRegistrationData(data1, registrations[0]); | 540 VerifyRegistrationData(data1, registrations[0]); |
512 VerifyRegistrationData(data2, registrations[1]); | 541 VerifyRegistrationData(data2, registrations[1]); |
513 VerifyRegistrationData(data3, registrations[2]); | 542 VerifyRegistrationData(data3, registrations[2]); |
514 VerifyRegistrationData(data4, registrations[3]); | 543 VerifyRegistrationData(data4, registrations[3]); |
515 } | 544 } |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
872 TEST(ServiceWorkerDatabaseTest, UserData_Basic) { | 901 TEST(ServiceWorkerDatabaseTest, UserData_Basic) { |
873 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 902 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
874 const GURL kOrigin("http://example.com"); | 903 const GURL kOrigin("http://example.com"); |
875 | 904 |
876 // Add a registration. | 905 // Add a registration. |
877 RegistrationData data; | 906 RegistrationData data; |
878 data.registration_id = 100; | 907 data.registration_id = 100; |
879 data.scope = URL(kOrigin, "/foo"); | 908 data.scope = URL(kOrigin, "/foo"); |
880 data.script = URL(kOrigin, "/script.js"); | 909 data.script = URL(kOrigin, "/script.js"); |
881 data.version_id = 200; | 910 data.version_id = 200; |
882 | 911 data.resources_total_size_bytes = 100; |
883 std::vector<Resource> resources; | 912 std::vector<Resource> resources; |
| 913 resources.push_back(CreateResource(1, data.script, 100)); |
884 ServiceWorkerDatabase::RegistrationData deleted_version; | 914 ServiceWorkerDatabase::RegistrationData deleted_version; |
885 std::vector<int64> newly_purgeable_resources; | 915 std::vector<int64> newly_purgeable_resources; |
886 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 916 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
887 database->WriteRegistration( | 917 database->WriteRegistration( |
888 data, resources, &deleted_version, &newly_purgeable_resources)); | 918 data, resources, &deleted_version, &newly_purgeable_resources)); |
889 | 919 |
890 // Write user data associated with the stored registration. | 920 // Write user data associated with the stored registration. |
891 std::string user_data_out; | 921 std::string user_data_out; |
892 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 922 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
893 database->WriteUserData( | 923 database->WriteUserData( |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
939 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) { | 969 TEST(ServiceWorkerDatabaseTest, UserData_DataIsolation) { |
940 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 970 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
941 const GURL kOrigin("http://example.com"); | 971 const GURL kOrigin("http://example.com"); |
942 | 972 |
943 // Add registration 1. | 973 // Add registration 1. |
944 RegistrationData data1; | 974 RegistrationData data1; |
945 data1.registration_id = 100; | 975 data1.registration_id = 100; |
946 data1.scope = URL(kOrigin, "/foo"); | 976 data1.scope = URL(kOrigin, "/foo"); |
947 data1.script = URL(kOrigin, "/script1.js"); | 977 data1.script = URL(kOrigin, "/script1.js"); |
948 data1.version_id = 200; | 978 data1.version_id = 200; |
| 979 data1.resources_total_size_bytes = 100; |
| 980 std::vector<Resource> resources1; |
| 981 resources1.push_back(CreateResource(1, data1.script, 100)); |
949 | 982 |
950 // Add registration 2. | 983 // Add registration 2. |
951 RegistrationData data2; | 984 RegistrationData data2; |
952 data2.registration_id = 101; | 985 data2.registration_id = 101; |
953 data2.scope = URL(kOrigin, "/bar"); | 986 data2.scope = URL(kOrigin, "/bar"); |
954 data2.script = URL(kOrigin, "/script2.js"); | 987 data2.script = URL(kOrigin, "/script2.js"); |
955 data2.version_id = 201; | 988 data2.version_id = 201; |
| 989 data2.resources_total_size_bytes = 200; |
| 990 std::vector<Resource> resources2; |
| 991 resources2.push_back(CreateResource(2, data2.script, 200)); |
956 | 992 |
957 std::vector<Resource> resources; | |
958 ServiceWorkerDatabase::RegistrationData deleted_version; | 993 ServiceWorkerDatabase::RegistrationData deleted_version; |
959 std::vector<int64> newly_purgeable_resources; | 994 std::vector<int64> newly_purgeable_resources; |
960 ASSERT_EQ( | 995 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
961 ServiceWorkerDatabase::STATUS_OK, | 996 database->WriteRegistration(data1, resources1, &deleted_version, |
962 database->WriteRegistration( | 997 &newly_purgeable_resources)); |
963 data1, resources, &deleted_version, &newly_purgeable_resources)); | 998 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
964 ASSERT_EQ( | 999 database->WriteRegistration(data2, resources2, &deleted_version, |
965 ServiceWorkerDatabase::STATUS_OK, | 1000 &newly_purgeable_resources)); |
966 database->WriteRegistration( | |
967 data2, resources, &deleted_version, &newly_purgeable_resources)); | |
968 | 1001 |
969 // Write user data associated with the registration1. | 1002 // Write user data associated with the registration1. |
970 std::string user_data_out; | 1003 std::string user_data_out; |
971 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1004 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
972 database->WriteUserData( | 1005 database->WriteUserData( |
973 data1.registration_id, kOrigin, "key", "data1")); | 1006 data1.registration_id, kOrigin, "key", "data1")); |
974 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1007 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
975 database->ReadUserData( | 1008 database->ReadUserData( |
976 data1.registration_id, "key", &user_data_out)); | 1009 data1.registration_id, "key", &user_data_out)); |
977 EXPECT_EQ("data1", user_data_out); | 1010 EXPECT_EQ("data1", user_data_out); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1027 TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) { | 1060 TEST(ServiceWorkerDatabaseTest, UserData_DeleteRegistration) { |
1028 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 1061 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
1029 const GURL kOrigin("http://example.com"); | 1062 const GURL kOrigin("http://example.com"); |
1030 | 1063 |
1031 // Add registration 1. | 1064 // Add registration 1. |
1032 RegistrationData data1; | 1065 RegistrationData data1; |
1033 data1.registration_id = 100; | 1066 data1.registration_id = 100; |
1034 data1.scope = URL(kOrigin, "/foo"); | 1067 data1.scope = URL(kOrigin, "/foo"); |
1035 data1.script = URL(kOrigin, "/script1.js"); | 1068 data1.script = URL(kOrigin, "/script1.js"); |
1036 data1.version_id = 200; | 1069 data1.version_id = 200; |
| 1070 data1.resources_total_size_bytes = 100; |
| 1071 std::vector<Resource> resources1; |
| 1072 resources1.push_back(CreateResource(1, data1.script, 100)); |
1037 | 1073 |
1038 // Add registration 2. | 1074 // Add registration 2. |
1039 RegistrationData data2; | 1075 RegistrationData data2; |
1040 data2.registration_id = 101; | 1076 data2.registration_id = 101; |
1041 data2.scope = URL(kOrigin, "/bar"); | 1077 data2.scope = URL(kOrigin, "/bar"); |
1042 data2.script = URL(kOrigin, "/script2.js"); | 1078 data2.script = URL(kOrigin, "/script2.js"); |
1043 data2.version_id = 201; | 1079 data2.version_id = 201; |
| 1080 data2.resources_total_size_bytes = 200; |
| 1081 std::vector<Resource> resources2; |
| 1082 resources2.push_back(CreateResource(2, data2.script, 200)); |
1044 | 1083 |
1045 std::vector<Resource> resources; | |
1046 ServiceWorkerDatabase::RegistrationData deleted_version; | 1084 ServiceWorkerDatabase::RegistrationData deleted_version; |
1047 std::vector<int64> newly_purgeable_resources; | 1085 std::vector<int64> newly_purgeable_resources; |
1048 ASSERT_EQ( | 1086 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1049 ServiceWorkerDatabase::STATUS_OK, | 1087 database->WriteRegistration(data1, resources1, &deleted_version, |
1050 database->WriteRegistration( | 1088 &newly_purgeable_resources)); |
1051 data1, resources, &deleted_version, &newly_purgeable_resources)); | 1089 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1052 ASSERT_EQ( | 1090 database->WriteRegistration(data2, resources2, &deleted_version, |
1053 ServiceWorkerDatabase::STATUS_OK, | 1091 &newly_purgeable_resources)); |
1054 database->WriteRegistration( | |
1055 data2, resources, &deleted_version, &newly_purgeable_resources)); | |
1056 | 1092 |
1057 // Write user data associated with the registration1. | 1093 // Write user data associated with the registration1. |
1058 std::string user_data_out; | 1094 std::string user_data_out; |
1059 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1095 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1060 database->WriteUserData( | 1096 database->WriteUserData( |
1061 data1.registration_id, kOrigin, "key1", "data1")); | 1097 data1.registration_id, kOrigin, "key1", "data1")); |
1062 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1098 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1063 database->WriteUserData( | 1099 database->WriteUserData( |
1064 data1.registration_id, kOrigin, "key2", "data2")); | 1100 data1.registration_id, kOrigin, "key2", "data2")); |
1065 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1101 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1141 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1177 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
1142 database->UpdateVersionToActive(0, origin)); | 1178 database->UpdateVersionToActive(0, origin)); |
1143 | 1179 |
1144 // Add a registration. | 1180 // Add a registration. |
1145 RegistrationData data; | 1181 RegistrationData data; |
1146 data.registration_id = 100; | 1182 data.registration_id = 100; |
1147 data.scope = URL(origin, "/foo"); | 1183 data.scope = URL(origin, "/foo"); |
1148 data.script = URL(origin, "/script.js"); | 1184 data.script = URL(origin, "/script.js"); |
1149 data.version_id = 200; | 1185 data.version_id = 200; |
1150 data.is_active = false; | 1186 data.is_active = false; |
| 1187 data.resources_total_size_bytes = 100; |
| 1188 std::vector<Resource> resources; |
| 1189 resources.push_back(CreateResource(1, data.script, 100)); |
1151 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1190 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1152 database->WriteRegistration(data, | 1191 database->WriteRegistration(data, resources, &deleted_version, |
1153 std::vector<Resource>(), | |
1154 &deleted_version, | |
1155 &newly_purgeable_resources)); | 1192 &newly_purgeable_resources)); |
1156 | 1193 |
1157 // Make sure that the registration is stored. | 1194 // Make sure that the registration is stored. |
1158 RegistrationData data_out; | 1195 RegistrationData data_out; |
1159 std::vector<Resource> resources_out; | 1196 std::vector<Resource> resources_out; |
1160 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1197 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1161 database->ReadRegistration( | 1198 database->ReadRegistration( |
1162 data.registration_id, origin, &data_out, &resources_out)); | 1199 data.registration_id, origin, &data_out, &resources_out)); |
1163 VerifyRegistrationData(data, data_out); | 1200 VerifyRegistrationData(data, data_out); |
1164 EXPECT_TRUE(resources_out.empty()); | 1201 EXPECT_EQ(1u, resources_out.size()); |
1165 | 1202 |
1166 // Activate the registration. | 1203 // Activate the registration. |
1167 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1204 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1168 database->UpdateVersionToActive(data.registration_id, origin)); | 1205 database->UpdateVersionToActive(data.registration_id, origin)); |
1169 | 1206 |
1170 // Make sure that the registration is activated. | 1207 // Make sure that the registration is activated. |
1171 resources_out.clear(); | 1208 resources_out.clear(); |
1172 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1209 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1173 database->ReadRegistration( | 1210 database->ReadRegistration( |
1174 data.registration_id, origin, &data_out, &resources_out)); | 1211 data.registration_id, origin, &data_out, &resources_out)); |
1175 RegistrationData expected_data = data; | 1212 RegistrationData expected_data = data; |
1176 expected_data.is_active = true; | 1213 expected_data.is_active = true; |
1177 VerifyRegistrationData(expected_data, data_out); | 1214 VerifyRegistrationData(expected_data, data_out); |
1178 EXPECT_TRUE(resources_out.empty()); | 1215 EXPECT_EQ(1u, resources_out.size()); |
1179 | 1216 |
1180 // Delete the registration. | 1217 // Delete the registration. |
1181 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1218 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1182 database->DeleteRegistration(data.registration_id, | 1219 database->DeleteRegistration(data.registration_id, |
1183 origin, | 1220 origin, |
1184 &deleted_version, | 1221 &deleted_version, |
1185 &newly_purgeable_resources)); | 1222 &newly_purgeable_resources)); |
1186 EXPECT_EQ(data.registration_id, deleted_version.registration_id); | 1223 EXPECT_EQ(data.registration_id, deleted_version.registration_id); |
1187 | 1224 |
1188 // Should be false because the registration is gone. | 1225 // Should be false because the registration is gone. |
(...skipping 11 matching lines...) Expand all Loading... |
1200 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, | 1237 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
1201 database->UpdateLastCheckTime(0, origin, base::Time::Now())); | 1238 database->UpdateLastCheckTime(0, origin, base::Time::Now())); |
1202 | 1239 |
1203 // Add a registration. | 1240 // Add a registration. |
1204 RegistrationData data; | 1241 RegistrationData data; |
1205 data.registration_id = 100; | 1242 data.registration_id = 100; |
1206 data.scope = URL(origin, "/foo"); | 1243 data.scope = URL(origin, "/foo"); |
1207 data.script = URL(origin, "/script.js"); | 1244 data.script = URL(origin, "/script.js"); |
1208 data.version_id = 200; | 1245 data.version_id = 200; |
1209 data.last_update_check = base::Time::Now(); | 1246 data.last_update_check = base::Time::Now(); |
| 1247 data.resources_total_size_bytes = 100; |
| 1248 std::vector<Resource> resources; |
| 1249 resources.push_back(CreateResource(1, data.script, 100)); |
1210 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1250 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1211 database->WriteRegistration(data, | 1251 database->WriteRegistration(data, resources, &deleted_version, |
1212 std::vector<Resource>(), | |
1213 &deleted_version, | |
1214 &newly_purgeable_resources)); | 1252 &newly_purgeable_resources)); |
1215 | 1253 |
1216 // Make sure that the registration is stored. | 1254 // Make sure that the registration is stored. |
1217 RegistrationData data_out; | 1255 RegistrationData data_out; |
1218 std::vector<Resource> resources_out; | 1256 std::vector<Resource> resources_out; |
1219 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1257 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1220 database->ReadRegistration( | 1258 database->ReadRegistration( |
1221 data.registration_id, origin, &data_out, &resources_out)); | 1259 data.registration_id, origin, &data_out, &resources_out)); |
1222 VerifyRegistrationData(data, data_out); | 1260 VerifyRegistrationData(data, data_out); |
1223 EXPECT_TRUE(resources_out.empty()); | 1261 EXPECT_EQ(1u, resources_out.size()); |
1224 | 1262 |
1225 // Update the last check time. | 1263 // Update the last check time. |
1226 base::Time updated_time = base::Time::Now(); | 1264 base::Time updated_time = base::Time::Now(); |
1227 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1265 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1228 database->UpdateLastCheckTime( | 1266 database->UpdateLastCheckTime( |
1229 data.registration_id, origin, updated_time)); | 1267 data.registration_id, origin, updated_time)); |
1230 | 1268 |
1231 // Make sure that the registration is updated. | 1269 // Make sure that the registration is updated. |
1232 resources_out.clear(); | 1270 resources_out.clear(); |
1233 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1271 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1234 database->ReadRegistration( | 1272 database->ReadRegistration( |
1235 data.registration_id, origin, &data_out, &resources_out)); | 1273 data.registration_id, origin, &data_out, &resources_out)); |
1236 RegistrationData expected_data = data; | 1274 RegistrationData expected_data = data; |
1237 expected_data.last_update_check = updated_time; | 1275 expected_data.last_update_check = updated_time; |
1238 VerifyRegistrationData(expected_data, data_out); | 1276 VerifyRegistrationData(expected_data, data_out); |
1239 EXPECT_TRUE(resources_out.empty()); | 1277 EXPECT_EQ(1u, resources_out.size()); |
1240 | 1278 |
1241 // Delete the registration. | 1279 // Delete the registration. |
1242 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, | 1280 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
1243 database->DeleteRegistration(data.registration_id, | 1281 database->DeleteRegistration(data.registration_id, |
1244 origin, | 1282 origin, |
1245 &deleted_version, | 1283 &deleted_version, |
1246 &newly_purgeable_resources)); | 1284 &newly_purgeable_resources)); |
1247 EXPECT_EQ(data.registration_id, deleted_version.registration_id); | 1285 EXPECT_EQ(data.registration_id, deleted_version.registration_id); |
1248 | 1286 |
1249 // Should be false because the registration is gone. | 1287 // Should be false because the registration is gone. |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1496 CreateDatabase(database_dir.path())); | 1534 CreateDatabase(database_dir.path())); |
1497 | 1535 |
1498 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); | 1536 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
1499 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); | 1537 ASSERT_TRUE(base::DirectoryExists(database_dir.path())); |
1500 | 1538 |
1501 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); | 1539 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->DestroyDatabase()); |
1502 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); | 1540 ASSERT_FALSE(base::DirectoryExists(database_dir.path())); |
1503 } | 1541 } |
1504 | 1542 |
1505 } // namespace content | 1543 } // namespace content |
OLD | NEW |