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

Side by Side Diff: content/browser/service_worker/service_worker_database_unittest.cc

Issue 287843002: ServiceWorker: DB functions should return status code instead of boolean (2) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address comments partially Created 6 years, 7 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 | Annotate | Revision Log
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 #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/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 } // namespace 74 } // namespace
75 75
76 TEST(ServiceWorkerDatabaseTest, OpenDatabase) { 76 TEST(ServiceWorkerDatabaseTest, OpenDatabase) {
77 base::ScopedTempDir database_dir; 77 base::ScopedTempDir database_dir;
78 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); 78 ASSERT_TRUE(database_dir.CreateUniqueTempDir());
79 scoped_ptr<ServiceWorkerDatabase> database( 79 scoped_ptr<ServiceWorkerDatabase> database(
80 CreateDatabase(database_dir.path())); 80 CreateDatabase(database_dir.path()));
81 81
82 // Should be false because the database does not exist at the path. 82 // Should be false because the database does not exist at the path.
83 EXPECT_FALSE(database->LazyOpen(false)); 83 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, database->LazyOpen(false));
84 84
85 EXPECT_TRUE(database->LazyOpen(true)); 85 EXPECT_EQ(SERVICE_WORKER_OK, database->LazyOpen(true));
86 86
87 database.reset(CreateDatabase(database_dir.path())); 87 database.reset(CreateDatabase(database_dir.path()));
88 EXPECT_TRUE(database->LazyOpen(false)); 88 EXPECT_EQ(SERVICE_WORKER_OK, database->LazyOpen(false));
89 } 89 }
90 90
91 TEST(ServiceWorkerDatabaseTest, OpenDatabase_InMemory) { 91 TEST(ServiceWorkerDatabaseTest, OpenDatabase_InMemory) {
92 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 92 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
93 93
94 // Should be false because the database does not exist in memory. 94 // Should be false because the database does not exist in memory.
95 EXPECT_FALSE(database->LazyOpen(false)); 95 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, database->LazyOpen(false));
96 96
97 EXPECT_TRUE(database->LazyOpen(true)); 97 EXPECT_EQ(SERVICE_WORKER_OK, database->LazyOpen(true));
98 database.reset(CreateDatabaseInMemory()); 98 database.reset(CreateDatabaseInMemory());
99 99
100 // Should be false because the database is not persistent. 100 // Should be false because the database is not persistent.
101 EXPECT_FALSE(database->LazyOpen(false)); 101 EXPECT_EQ(SERVICE_WORKER_ERROR_NOT_FOUND, database->LazyOpen(false));
102 } 102 }
103 103
104 TEST(ServiceWorkerDatabaseTest, DatabaseVersion) { 104 TEST(ServiceWorkerDatabaseTest, DatabaseVersion) {
105 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 105 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
106 EXPECT_TRUE(database->LazyOpen(true)); 106 EXPECT_EQ(SERVICE_WORKER_OK, database->LazyOpen(true));
107 107
108 // Opening a new database does not write anything, so its schema version 108 // Opening a new database does not write anything, so its schema version
109 // should be 0. 109 // should be 0.
110 int64 db_version = -1; 110 int64 db_version = -1;
111 EXPECT_TRUE(database->ReadDatabaseVersion(&db_version)); 111 EXPECT_EQ(SERVICE_WORKER_OK, database->ReadDatabaseVersion(&db_version));
112 EXPECT_EQ(0u, db_version); 112 EXPECT_EQ(0u, db_version);
113 113
114 // First writing triggers database initialization and bumps the schema 114 // First writing triggers database initialization and bumps the schema
115 // version. 115 // version.
116 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; 116 std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
117 ServiceWorkerDatabase::RegistrationData data; 117 ServiceWorkerDatabase::RegistrationData data;
118 ASSERT_TRUE(database->WriteRegistration(data, resources)); 118 ASSERT_TRUE(database->WriteRegistration(data, resources));
119 119
120 EXPECT_TRUE(database->ReadDatabaseVersion(&db_version)); 120 EXPECT_EQ(SERVICE_WORKER_OK, database->ReadDatabaseVersion(&db_version));
121 EXPECT_LT(0, db_version); 121 EXPECT_LT(0, db_version);
122 } 122 }
123 123
124 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { 124 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
125 base::ScopedTempDir database_dir; 125 base::ScopedTempDir database_dir;
126 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); 126 ASSERT_TRUE(database_dir.CreateUniqueTempDir());
127 scoped_ptr<ServiceWorkerDatabase> database( 127 scoped_ptr<ServiceWorkerDatabase> database(
128 CreateDatabase(database_dir.path())); 128 CreateDatabase(database_dir.path()));
129 129
130 GURL origin("http://example.com"); 130 GURL origin("http://example.com");
131 131
132 // The database has never been used, so returns initial values. 132 // The database has never been used, so returns initial values.
133 AvailableIds ids; 133 AvailableIds ids;
134 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds( 134 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds(
135 &ids.reg_id, &ids.ver_id, &ids.res_id)); 135 &ids.reg_id, &ids.ver_id, &ids.res_id));
136 EXPECT_EQ(0, ids.reg_id); 136 EXPECT_EQ(0, ids.reg_id);
137 EXPECT_EQ(0, ids.ver_id); 137 EXPECT_EQ(0, ids.ver_id);
138 EXPECT_EQ(0, ids.res_id); 138 EXPECT_EQ(0, ids.res_id);
139 139
140 ASSERT_TRUE(database->LazyOpen(true)); 140 ASSERT_EQ(SERVICE_WORKER_OK, database->LazyOpen(true));
141 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds( 141 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds(
142 &ids.reg_id, &ids.ver_id, &ids.res_id)); 142 &ids.reg_id, &ids.ver_id, &ids.res_id));
143 EXPECT_EQ(0, ids.reg_id); 143 EXPECT_EQ(0, ids.reg_id);
144 EXPECT_EQ(0, ids.ver_id); 144 EXPECT_EQ(0, ids.ver_id);
145 EXPECT_EQ(0, ids.res_id); 145 EXPECT_EQ(0, ids.res_id);
146 146
147 // Writing a registration bumps the next available ids. 147 // Writing a registration bumps the next available ids.
148 std::vector<Resource> resources; 148 std::vector<Resource> resources;
149 RegistrationData data1; 149 RegistrationData data1;
150 data1.registration_id = 100; 150 data1.registration_id = 100;
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 } 248 }
249 249
250 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { 250 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
251 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 251 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
252 252
253 GURL origin1("http://example.com"); 253 GURL origin1("http://example.com");
254 GURL origin2("https://www.example.com"); 254 GURL origin2("https://www.example.com");
255 GURL origin3("https://example.org"); 255 GURL origin3("https://example.org");
256 256
257 std::vector<RegistrationData> registrations; 257 std::vector<RegistrationData> registrations;
258 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, &registrations)); 258 EXPECT_EQ(SERVICE_WORKER_OK,
259 database->GetRegistrationsForOrigin(origin1, &registrations));
259 EXPECT_TRUE(registrations.empty()); 260 EXPECT_TRUE(registrations.empty());
260 261
261 std::vector<Resource> resources; 262 std::vector<Resource> resources;
262 263
263 RegistrationData data1; 264 RegistrationData data1;
264 data1.registration_id = 100; 265 data1.registration_id = 100;
265 data1.scope = URL(origin1, "/foo"); 266 data1.scope = URL(origin1, "/foo");
266 data1.script = URL(origin1, "/script1.js"); 267 data1.script = URL(origin1, "/script1.js");
267 data1.version_id = 1000; 268 data1.version_id = 1000;
268 ASSERT_TRUE(database->WriteRegistration(data1, resources)); 269 ASSERT_TRUE(database->WriteRegistration(data1, resources));
(...skipping 14 matching lines...) Expand all
283 284
284 // |origin3| has two registrations. 285 // |origin3| has two registrations.
285 RegistrationData data4; 286 RegistrationData data4;
286 data4.registration_id = 400; 287 data4.registration_id = 400;
287 data4.scope = URL(origin3, "/fuga"); 288 data4.scope = URL(origin3, "/fuga");
288 data4.script = URL(origin3, "/script4.js"); 289 data4.script = URL(origin3, "/script4.js");
289 data4.version_id = 4000; 290 data4.version_id = 4000;
290 ASSERT_TRUE(database->WriteRegistration(data4, resources)); 291 ASSERT_TRUE(database->WriteRegistration(data4, resources));
291 292
292 registrations.clear(); 293 registrations.clear();
293 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin3, &registrations)); 294 EXPECT_EQ(SERVICE_WORKER_OK,
295 database->GetRegistrationsForOrigin(origin3, &registrations));
294 EXPECT_EQ(2U, registrations.size()); 296 EXPECT_EQ(2U, registrations.size());
295 VerifyRegistrationData(data3, registrations[0]); 297 VerifyRegistrationData(data3, registrations[0]);
296 VerifyRegistrationData(data4, registrations[1]); 298 VerifyRegistrationData(data4, registrations[1]);
297 } 299 }
298 300
299 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { 301 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
300 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 302 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
301 303
302 std::vector<RegistrationData> registrations; 304 std::vector<RegistrationData> registrations;
303 EXPECT_TRUE(database->GetAllRegistrations(&registrations)); 305 EXPECT_EQ(SERVICE_WORKER_OK,
306 database->GetAllRegistrations(&registrations));
304 EXPECT_TRUE(registrations.empty()); 307 EXPECT_TRUE(registrations.empty());
305 308
306 std::vector<Resource> resources; 309 std::vector<Resource> resources;
307 310
308 GURL origin1("http://www1.example.com"); 311 GURL origin1("http://www1.example.com");
309 RegistrationData data1; 312 RegistrationData data1;
310 data1.registration_id = 100; 313 data1.registration_id = 100;
311 data1.scope = URL(origin1, "/foo"); 314 data1.scope = URL(origin1, "/foo");
312 data1.script = URL(origin1, "/script1.js"); 315 data1.script = URL(origin1, "/script1.js");
313 data1.version_id = 1000; 316 data1.version_id = 1000;
(...skipping 17 matching lines...) Expand all
331 334
332 // |origin3| has two registrations. 335 // |origin3| has two registrations.
333 RegistrationData data4; 336 RegistrationData data4;
334 data4.registration_id = 400; 337 data4.registration_id = 400;
335 data4.scope = URL(origin3, "/fuga"); 338 data4.scope = URL(origin3, "/fuga");
336 data4.script = URL(origin3, "/script4.js"); 339 data4.script = URL(origin3, "/script4.js");
337 data4.version_id = 4000; 340 data4.version_id = 4000;
338 ASSERT_TRUE(database->WriteRegistration(data4, resources)); 341 ASSERT_TRUE(database->WriteRegistration(data4, resources));
339 342
340 registrations.clear(); 343 registrations.clear();
341 EXPECT_TRUE(database->GetAllRegistrations(&registrations)); 344 EXPECT_EQ(SERVICE_WORKER_OK,
345 database->GetAllRegistrations(&registrations));
342 EXPECT_EQ(4U, registrations.size()); 346 EXPECT_EQ(4U, registrations.size());
343 VerifyRegistrationData(data1, registrations[0]); 347 VerifyRegistrationData(data1, registrations[0]);
344 VerifyRegistrationData(data2, registrations[1]); 348 VerifyRegistrationData(data2, registrations[1]);
345 VerifyRegistrationData(data3, registrations[2]); 349 VerifyRegistrationData(data3, registrations[2]);
346 VerifyRegistrationData(data4, registrations[3]); 350 VerifyRegistrationData(data4, registrations[3]);
347 } 351 }
348 352
349 TEST(ServiceWorkerDatabaseTest, Registration_Basic) { 353 TEST(ServiceWorkerDatabaseTest, Registration_Basic) {
350 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 354 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
351 355
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 643
640 // |origin1| should be removed from the unique origin list. 644 // |origin1| should be removed from the unique origin list.
641 std::set<GURL> unique_origins; 645 std::set<GURL> unique_origins;
642 EXPECT_EQ(SERVICE_WORKER_OK, 646 EXPECT_EQ(SERVICE_WORKER_OK,
643 database->GetOriginsWithRegistrations(&unique_origins)); 647 database->GetOriginsWithRegistrations(&unique_origins));
644 EXPECT_EQ(1u, unique_origins.size()); 648 EXPECT_EQ(1u, unique_origins.size());
645 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); 649 EXPECT_TRUE(ContainsKey(unique_origins, origin2));
646 650
647 // The registrations for |origin1| should be removed. 651 // The registrations for |origin1| should be removed.
648 std::vector<RegistrationData> registrations; 652 std::vector<RegistrationData> registrations;
649 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, &registrations)); 653 EXPECT_EQ(SERVICE_WORKER_OK,
654 database->GetRegistrationsForOrigin(origin1, &registrations));
650 EXPECT_TRUE(registrations.empty()); 655 EXPECT_TRUE(registrations.empty());
651 656
652 // The registration for |origin2| should not be removed. 657 // The registration for |origin2| should not be removed.
653 RegistrationData data_out; 658 RegistrationData data_out;
654 std::vector<Resource> resources_out; 659 std::vector<Resource> resources_out;
655 EXPECT_TRUE(database->ReadRegistration( 660 EXPECT_TRUE(database->ReadRegistration(
656 data3.registration_id, origin2, &data_out, &resources_out)); 661 data3.registration_id, origin2, &data_out, &resources_out));
657 VerifyRegistrationData(data3, data_out); 662 VerifyRegistrationData(data3, data_out);
658 VerifyResourceRecords(resources3, resources_out); 663 VerifyResourceRecords(resources3, resources_out);
659 664
660 // The resources associated with |origin1| should be purgeable. 665 // The resources associated with |origin1| should be purgeable.
661 std::set<int64> purgeable_ids_out; 666 std::set<int64> purgeable_ids_out;
662 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 667 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out));
663 EXPECT_EQ(4u, purgeable_ids_out.size()); 668 EXPECT_EQ(4u, purgeable_ids_out.size());
664 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1)); 669 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1));
665 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2)); 670 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2));
666 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3)); 671 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3));
667 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4)); 672 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
668 } 673 }
669 674
670 } // namespace content 675 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698