| 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/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 Loading... |
| 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(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 84 database->LazyOpen(false)); |
| 84 | 85 |
| 85 EXPECT_TRUE(database->LazyOpen(true)); | 86 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 86 | 87 |
| 87 database.reset(CreateDatabase(database_dir.path())); | 88 database.reset(CreateDatabase(database_dir.path())); |
| 88 EXPECT_TRUE(database->LazyOpen(false)); | 89 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(false)); |
| 89 } | 90 } |
| 90 | 91 |
| 91 TEST(ServiceWorkerDatabaseTest, OpenDatabase_InMemory) { | 92 TEST(ServiceWorkerDatabaseTest, OpenDatabase_InMemory) { |
| 92 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 93 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 93 | 94 |
| 94 // Should be false because the database does not exist in memory. | 95 // Should be false because the database does not exist in memory. |
| 95 EXPECT_FALSE(database->LazyOpen(false)); | 96 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 97 database->LazyOpen(false)); |
| 96 | 98 |
| 97 EXPECT_TRUE(database->LazyOpen(true)); | 99 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 98 database.reset(CreateDatabaseInMemory()); | 100 database.reset(CreateDatabaseInMemory()); |
| 99 | 101 |
| 100 // Should be false because the database is not persistent. | 102 // Should be false because the database is not persistent. |
| 101 EXPECT_FALSE(database->LazyOpen(false)); | 103 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND, |
| 104 database->LazyOpen(false)); |
| 102 } | 105 } |
| 103 | 106 |
| 104 TEST(ServiceWorkerDatabaseTest, DatabaseVersion) { | 107 TEST(ServiceWorkerDatabaseTest, DatabaseVersion) { |
| 105 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 108 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 106 EXPECT_TRUE(database->LazyOpen(true)); | 109 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 107 | 110 |
| 108 // Opening a new database does not write anything, so its schema version | 111 // Opening a new database does not write anything, so its schema version |
| 109 // should be 0. | 112 // should be 0. |
| 110 int64 db_version = -1; | 113 int64 db_version = -1; |
| 111 EXPECT_TRUE(database->ReadDatabaseVersion(&db_version)); | 114 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 115 database->ReadDatabaseVersion(&db_version)); |
| 112 EXPECT_EQ(0u, db_version); | 116 EXPECT_EQ(0u, db_version); |
| 113 | 117 |
| 114 // First writing triggers database initialization and bumps the schema | 118 // First writing triggers database initialization and bumps the schema |
| 115 // version. | 119 // version. |
| 116 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; | 120 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; |
| 117 ServiceWorkerDatabase::RegistrationData data; | 121 ServiceWorkerDatabase::RegistrationData data; |
| 118 ASSERT_TRUE(database->WriteRegistration(data, resources)); | 122 ASSERT_TRUE(database->WriteRegistration(data, resources)); |
| 119 | 123 |
| 120 EXPECT_TRUE(database->ReadDatabaseVersion(&db_version)); | 124 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 125 database->ReadDatabaseVersion(&db_version)); |
| 121 EXPECT_LT(0, db_version); | 126 EXPECT_LT(0, db_version); |
| 122 } | 127 } |
| 123 | 128 |
| 124 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { | 129 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { |
| 125 base::ScopedTempDir database_dir; | 130 base::ScopedTempDir database_dir; |
| 126 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); | 131 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); |
| 127 scoped_ptr<ServiceWorkerDatabase> database( | 132 scoped_ptr<ServiceWorkerDatabase> database( |
| 128 CreateDatabase(database_dir.path())); | 133 CreateDatabase(database_dir.path())); |
| 129 | 134 |
| 130 GURL origin("http://example.com"); | 135 GURL origin("http://example.com"); |
| 131 | 136 |
| 132 // The database has never been used, so returns initial values. | 137 // The database has never been used, so returns initial values. |
| 133 AvailableIds ids; | 138 AvailableIds ids; |
| 134 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds( | 139 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 135 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 140 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 136 EXPECT_EQ(0, ids.reg_id); | 141 EXPECT_EQ(0, ids.reg_id); |
| 137 EXPECT_EQ(0, ids.ver_id); | 142 EXPECT_EQ(0, ids.ver_id); |
| 138 EXPECT_EQ(0, ids.res_id); | 143 EXPECT_EQ(0, ids.res_id); |
| 139 | 144 |
| 140 ASSERT_TRUE(database->LazyOpen(true)); | 145 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK, database->LazyOpen(true)); |
| 141 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds( | 146 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 142 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 147 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 143 EXPECT_EQ(0, ids.reg_id); | 148 EXPECT_EQ(0, ids.reg_id); |
| 144 EXPECT_EQ(0, ids.ver_id); | 149 EXPECT_EQ(0, ids.ver_id); |
| 145 EXPECT_EQ(0, ids.res_id); | 150 EXPECT_EQ(0, ids.res_id); |
| 146 | 151 |
| 147 // Writing a registration bumps the next available ids. | 152 // Writing a registration bumps the next available ids. |
| 148 std::vector<Resource> resources; | 153 std::vector<Resource> resources; |
| 149 RegistrationData data1; | 154 RegistrationData data1; |
| 150 data1.registration_id = 100; | 155 data1.registration_id = 100; |
| 151 data1.scope = URL(origin, "/foo"); | 156 data1.scope = URL(origin, "/foo"); |
| 152 data1.script = URL(origin, "/script1.js"); | 157 data1.script = URL(origin, "/script1.js"); |
| 153 data1.version_id = 200; | 158 data1.version_id = 200; |
| 154 ASSERT_TRUE(database->WriteRegistration(data1, resources)); | 159 ASSERT_TRUE(database->WriteRegistration(data1, resources)); |
| 155 | 160 |
| 156 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds( | 161 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 157 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 162 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 158 EXPECT_EQ(101, ids.reg_id); | 163 EXPECT_EQ(101, ids.reg_id); |
| 159 EXPECT_EQ(201, ids.ver_id); | 164 EXPECT_EQ(201, ids.ver_id); |
| 160 EXPECT_EQ(0, ids.res_id); | 165 EXPECT_EQ(0, ids.res_id); |
| 161 | 166 |
| 162 // Writing a registration whose ids are lower than the stored ones should not | 167 // Writing a registration whose ids are lower than the stored ones should not |
| 163 // bump the next available ids. | 168 // bump the next available ids. |
| 164 RegistrationData data2; | 169 RegistrationData data2; |
| 165 data2.registration_id = 10; | 170 data2.registration_id = 10; |
| 166 data2.scope = URL(origin, "/bar"); | 171 data2.scope = URL(origin, "/bar"); |
| 167 data2.script = URL(origin, "/script2.js"); | 172 data2.script = URL(origin, "/script2.js"); |
| 168 data2.version_id = 20; | 173 data2.version_id = 20; |
| 169 ASSERT_TRUE(database->WriteRegistration(data2, resources)); | 174 ASSERT_TRUE(database->WriteRegistration(data2, resources)); |
| 170 | 175 |
| 171 // Close and reopen the database to verify the stored values. | 176 // Close and reopen the database to verify the stored values. |
| 172 database.reset(CreateDatabase(database_dir.path())); | 177 database.reset(CreateDatabase(database_dir.path())); |
| 173 | 178 |
| 174 EXPECT_EQ(SERVICE_WORKER_OK, database->GetNextAvailableIds( | 179 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( |
| 175 &ids.reg_id, &ids.ver_id, &ids.res_id)); | 180 &ids.reg_id, &ids.ver_id, &ids.res_id)); |
| 176 EXPECT_EQ(101, ids.reg_id); | 181 EXPECT_EQ(101, ids.reg_id); |
| 177 EXPECT_EQ(201, ids.ver_id); | 182 EXPECT_EQ(201, ids.ver_id); |
| 178 EXPECT_EQ(0, ids.res_id); | 183 EXPECT_EQ(0, ids.res_id); |
| 179 } | 184 } |
| 180 | 185 |
| 181 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { | 186 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { |
| 182 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 187 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 183 | 188 |
| 184 std::set<GURL> origins; | 189 std::set<GURL> origins; |
| 185 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins)); | 190 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 191 database->GetOriginsWithRegistrations(&origins)); |
| 186 EXPECT_TRUE(origins.empty()); | 192 EXPECT_TRUE(origins.empty()); |
| 187 | 193 |
| 188 std::vector<Resource> resources; | 194 std::vector<Resource> resources; |
| 189 | 195 |
| 190 GURL origin1("http://example.com"); | 196 GURL origin1("http://example.com"); |
| 191 RegistrationData data1; | 197 RegistrationData data1; |
| 192 data1.registration_id = 123; | 198 data1.registration_id = 123; |
| 193 data1.scope = URL(origin1, "/foo"); | 199 data1.scope = URL(origin1, "/foo"); |
| 194 data1.script = URL(origin1, "/script1.js"); | 200 data1.script = URL(origin1, "/script1.js"); |
| 195 data1.version_id = 456; | 201 data1.version_id = 456; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 213 | 219 |
| 214 // |origin3| has two registrations. | 220 // |origin3| has two registrations. |
| 215 RegistrationData data4; | 221 RegistrationData data4; |
| 216 data4.registration_id = 456; | 222 data4.registration_id = 456; |
| 217 data4.scope = URL(origin3, "/fuga"); | 223 data4.scope = URL(origin3, "/fuga"); |
| 218 data4.script = URL(origin3, "/script4.js"); | 224 data4.script = URL(origin3, "/script4.js"); |
| 219 data4.version_id = 789; | 225 data4.version_id = 789; |
| 220 ASSERT_TRUE(database->WriteRegistration(data4, resources)); | 226 ASSERT_TRUE(database->WriteRegistration(data4, resources)); |
| 221 | 227 |
| 222 origins.clear(); | 228 origins.clear(); |
| 223 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins)); | 229 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 230 database->GetOriginsWithRegistrations(&origins)); |
| 224 EXPECT_EQ(3U, origins.size()); | 231 EXPECT_EQ(3U, origins.size()); |
| 225 EXPECT_TRUE(ContainsKey(origins, origin1)); | 232 EXPECT_TRUE(ContainsKey(origins, origin1)); |
| 226 EXPECT_TRUE(ContainsKey(origins, origin2)); | 233 EXPECT_TRUE(ContainsKey(origins, origin2)); |
| 227 EXPECT_TRUE(ContainsKey(origins, origin3)); | 234 EXPECT_TRUE(ContainsKey(origins, origin3)); |
| 228 | 235 |
| 229 // |origin3| has another registration, so should not remove it from the | 236 // |origin3| has another registration, so should not remove it from the |
| 230 // unique origin list. | 237 // unique origin list. |
| 231 ASSERT_TRUE(database->DeleteRegistration(data4.registration_id, origin3)); | 238 ASSERT_TRUE(database->DeleteRegistration(data4.registration_id, origin3)); |
| 232 | 239 |
| 233 origins.clear(); | 240 origins.clear(); |
| 234 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins)); | 241 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 242 database->GetOriginsWithRegistrations(&origins)); |
| 235 EXPECT_EQ(3U, origins.size()); | 243 EXPECT_EQ(3U, origins.size()); |
| 236 EXPECT_TRUE(ContainsKey(origins, origin1)); | 244 EXPECT_TRUE(ContainsKey(origins, origin1)); |
| 237 EXPECT_TRUE(ContainsKey(origins, origin2)); | 245 EXPECT_TRUE(ContainsKey(origins, origin2)); |
| 238 EXPECT_TRUE(ContainsKey(origins, origin3)); | 246 EXPECT_TRUE(ContainsKey(origins, origin3)); |
| 239 | 247 |
| 240 // |origin3| should be removed from the unique origin list. | 248 // |origin3| should be removed from the unique origin list. |
| 241 ASSERT_TRUE(database->DeleteRegistration(data3.registration_id, origin3)); | 249 ASSERT_TRUE(database->DeleteRegistration(data3.registration_id, origin3)); |
| 242 | 250 |
| 243 origins.clear(); | 251 origins.clear(); |
| 244 EXPECT_EQ(SERVICE_WORKER_OK, database->GetOriginsWithRegistrations(&origins)); | 252 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 253 database->GetOriginsWithRegistrations(&origins)); |
| 245 EXPECT_EQ(2U, origins.size()); | 254 EXPECT_EQ(2U, origins.size()); |
| 246 EXPECT_TRUE(ContainsKey(origins, origin1)); | 255 EXPECT_TRUE(ContainsKey(origins, origin1)); |
| 247 EXPECT_TRUE(ContainsKey(origins, origin2)); | 256 EXPECT_TRUE(ContainsKey(origins, origin2)); |
| 248 } | 257 } |
| 249 | 258 |
| 250 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { | 259 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { |
| 251 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 260 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 252 | 261 |
| 253 GURL origin1("http://example.com"); | 262 GURL origin1("http://example.com"); |
| 254 GURL origin2("https://www.example.com"); | 263 GURL origin2("https://www.example.com"); |
| 255 GURL origin3("https://example.org"); | 264 GURL origin3("https://example.org"); |
| 256 | 265 |
| 257 std::vector<RegistrationData> registrations; | 266 std::vector<RegistrationData> registrations; |
| 258 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, ®istrations)); | 267 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 268 database->GetRegistrationsForOrigin(origin1, ®istrations)); |
| 259 EXPECT_TRUE(registrations.empty()); | 269 EXPECT_TRUE(registrations.empty()); |
| 260 | 270 |
| 261 std::vector<Resource> resources; | 271 std::vector<Resource> resources; |
| 262 | 272 |
| 263 RegistrationData data1; | 273 RegistrationData data1; |
| 264 data1.registration_id = 100; | 274 data1.registration_id = 100; |
| 265 data1.scope = URL(origin1, "/foo"); | 275 data1.scope = URL(origin1, "/foo"); |
| 266 data1.script = URL(origin1, "/script1.js"); | 276 data1.script = URL(origin1, "/script1.js"); |
| 267 data1.version_id = 1000; | 277 data1.version_id = 1000; |
| 268 ASSERT_TRUE(database->WriteRegistration(data1, resources)); | 278 ASSERT_TRUE(database->WriteRegistration(data1, resources)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 283 | 293 |
| 284 // |origin3| has two registrations. | 294 // |origin3| has two registrations. |
| 285 RegistrationData data4; | 295 RegistrationData data4; |
| 286 data4.registration_id = 400; | 296 data4.registration_id = 400; |
| 287 data4.scope = URL(origin3, "/fuga"); | 297 data4.scope = URL(origin3, "/fuga"); |
| 288 data4.script = URL(origin3, "/script4.js"); | 298 data4.script = URL(origin3, "/script4.js"); |
| 289 data4.version_id = 4000; | 299 data4.version_id = 4000; |
| 290 ASSERT_TRUE(database->WriteRegistration(data4, resources)); | 300 ASSERT_TRUE(database->WriteRegistration(data4, resources)); |
| 291 | 301 |
| 292 registrations.clear(); | 302 registrations.clear(); |
| 293 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin3, ®istrations)); | 303 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 304 database->GetRegistrationsForOrigin(origin3, ®istrations)); |
| 294 EXPECT_EQ(2U, registrations.size()); | 305 EXPECT_EQ(2U, registrations.size()); |
| 295 VerifyRegistrationData(data3, registrations[0]); | 306 VerifyRegistrationData(data3, registrations[0]); |
| 296 VerifyRegistrationData(data4, registrations[1]); | 307 VerifyRegistrationData(data4, registrations[1]); |
| 297 } | 308 } |
| 298 | 309 |
| 299 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { | 310 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { |
| 300 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 311 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 301 | 312 |
| 302 std::vector<RegistrationData> registrations; | 313 std::vector<RegistrationData> registrations; |
| 303 EXPECT_TRUE(database->GetAllRegistrations(®istrations)); | 314 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 315 database->GetAllRegistrations(®istrations)); |
| 304 EXPECT_TRUE(registrations.empty()); | 316 EXPECT_TRUE(registrations.empty()); |
| 305 | 317 |
| 306 std::vector<Resource> resources; | 318 std::vector<Resource> resources; |
| 307 | 319 |
| 308 GURL origin1("http://www1.example.com"); | 320 GURL origin1("http://www1.example.com"); |
| 309 RegistrationData data1; | 321 RegistrationData data1; |
| 310 data1.registration_id = 100; | 322 data1.registration_id = 100; |
| 311 data1.scope = URL(origin1, "/foo"); | 323 data1.scope = URL(origin1, "/foo"); |
| 312 data1.script = URL(origin1, "/script1.js"); | 324 data1.script = URL(origin1, "/script1.js"); |
| 313 data1.version_id = 1000; | 325 data1.version_id = 1000; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 331 | 343 |
| 332 // |origin3| has two registrations. | 344 // |origin3| has two registrations. |
| 333 RegistrationData data4; | 345 RegistrationData data4; |
| 334 data4.registration_id = 400; | 346 data4.registration_id = 400; |
| 335 data4.scope = URL(origin3, "/fuga"); | 347 data4.scope = URL(origin3, "/fuga"); |
| 336 data4.script = URL(origin3, "/script4.js"); | 348 data4.script = URL(origin3, "/script4.js"); |
| 337 data4.version_id = 4000; | 349 data4.version_id = 4000; |
| 338 ASSERT_TRUE(database->WriteRegistration(data4, resources)); | 350 ASSERT_TRUE(database->WriteRegistration(data4, resources)); |
| 339 | 351 |
| 340 registrations.clear(); | 352 registrations.clear(); |
| 341 EXPECT_TRUE(database->GetAllRegistrations(®istrations)); | 353 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 354 database->GetAllRegistrations(®istrations)); |
| 342 EXPECT_EQ(4U, registrations.size()); | 355 EXPECT_EQ(4U, registrations.size()); |
| 343 VerifyRegistrationData(data1, registrations[0]); | 356 VerifyRegistrationData(data1, registrations[0]); |
| 344 VerifyRegistrationData(data2, registrations[1]); | 357 VerifyRegistrationData(data2, registrations[1]); |
| 345 VerifyRegistrationData(data3, registrations[2]); | 358 VerifyRegistrationData(data3, registrations[2]); |
| 346 VerifyRegistrationData(data4, registrations[3]); | 359 VerifyRegistrationData(data4, registrations[3]); |
| 347 } | 360 } |
| 348 | 361 |
| 349 TEST(ServiceWorkerDatabaseTest, Registration_Basic) { | 362 TEST(ServiceWorkerDatabaseTest, Registration_Basic) { |
| 350 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); | 363 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); |
| 351 | 364 |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 721 | 734 |
| 722 std::vector<Resource> resources3; | 735 std::vector<Resource> resources3; |
| 723 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"))); | 736 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"))); |
| 724 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"))); | 737 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"))); |
| 725 ASSERT_TRUE(database->WriteRegistration(data3, resources3)); | 738 ASSERT_TRUE(database->WriteRegistration(data3, resources3)); |
| 726 | 739 |
| 727 EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1)); | 740 EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1)); |
| 728 | 741 |
| 729 // |origin1| should be removed from the unique origin list. | 742 // |origin1| should be removed from the unique origin list. |
| 730 std::set<GURL> unique_origins; | 743 std::set<GURL> unique_origins; |
| 731 EXPECT_EQ(SERVICE_WORKER_OK, | 744 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 732 database->GetOriginsWithRegistrations(&unique_origins)); | 745 database->GetOriginsWithRegistrations(&unique_origins)); |
| 733 EXPECT_EQ(1u, unique_origins.size()); | 746 EXPECT_EQ(1u, unique_origins.size()); |
| 734 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); | 747 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); |
| 735 | 748 |
| 736 // The registrations for |origin1| should be removed. | 749 // The registrations for |origin1| should be removed. |
| 737 std::vector<RegistrationData> registrations; | 750 std::vector<RegistrationData> registrations; |
| 738 EXPECT_TRUE(database->GetRegistrationsForOrigin(origin1, ®istrations)); | 751 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, |
| 752 database->GetRegistrationsForOrigin(origin1, ®istrations)); |
| 739 EXPECT_TRUE(registrations.empty()); | 753 EXPECT_TRUE(registrations.empty()); |
| 740 | 754 |
| 741 // The registration for |origin2| should not be removed. | 755 // The registration for |origin2| should not be removed. |
| 742 RegistrationData data_out; | 756 RegistrationData data_out; |
| 743 std::vector<Resource> resources_out; | 757 std::vector<Resource> resources_out; |
| 744 EXPECT_TRUE(database->ReadRegistration( | 758 EXPECT_TRUE(database->ReadRegistration( |
| 745 data3.registration_id, origin2, &data_out, &resources_out)); | 759 data3.registration_id, origin2, &data_out, &resources_out)); |
| 746 VerifyRegistrationData(data3, data_out); | 760 VerifyRegistrationData(data3, data_out); |
| 747 VerifyResourceRecords(resources3, resources_out); | 761 VerifyResourceRecords(resources3, resources_out); |
| 748 | 762 |
| 749 // The resources associated with |origin1| should be purgeable. | 763 // The resources associated with |origin1| should be purgeable. |
| 750 std::set<int64> purgeable_ids_out; | 764 std::set<int64> purgeable_ids_out; |
| 751 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); | 765 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); |
| 752 EXPECT_EQ(4u, purgeable_ids_out.size()); | 766 EXPECT_EQ(4u, purgeable_ids_out.size()); |
| 753 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1)); | 767 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1)); |
| 754 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2)); | 768 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2)); |
| 755 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3)); | 769 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3)); |
| 756 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4)); | 770 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4)); |
| 757 } | 771 } |
| 758 | 772 |
| 759 } // namespace content | 773 } // namespace content |
| OLD | NEW |