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

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

Issue 284123003: ServiceWorker: DB functions should return status code instead of boolean (3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // should be 0. 112 // should be 0.
113 int64 db_version = -1; 113 int64 db_version = -1;
114 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 114 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
115 database->ReadDatabaseVersion(&db_version)); 115 database->ReadDatabaseVersion(&db_version));
116 EXPECT_EQ(0u, db_version); 116 EXPECT_EQ(0u, db_version);
117 117
118 // First writing triggers database initialization and bumps the schema 118 // First writing triggers database initialization and bumps the schema
119 // version. 119 // version.
120 std::vector<ServiceWorkerDatabase::ResourceRecord> resources; 120 std::vector<ServiceWorkerDatabase::ResourceRecord> resources;
121 ServiceWorkerDatabase::RegistrationData data; 121 ServiceWorkerDatabase::RegistrationData data;
122 ASSERT_TRUE(database->WriteRegistration(data, resources)); 122 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
123 database->WriteRegistration(data, resources));
123 124
124 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 125 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
125 database->ReadDatabaseVersion(&db_version)); 126 database->ReadDatabaseVersion(&db_version));
126 EXPECT_LT(0, db_version); 127 EXPECT_LT(0, db_version);
127 } 128 }
128 129
129 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) { 130 TEST(ServiceWorkerDatabaseTest, GetNextAvailableIds) {
130 base::ScopedTempDir database_dir; 131 base::ScopedTempDir database_dir;
131 ASSERT_TRUE(database_dir.CreateUniqueTempDir()); 132 ASSERT_TRUE(database_dir.CreateUniqueTempDir());
132 scoped_ptr<ServiceWorkerDatabase> database( 133 scoped_ptr<ServiceWorkerDatabase> database(
(...skipping 16 matching lines...) Expand all
149 EXPECT_EQ(0, ids.ver_id); 150 EXPECT_EQ(0, ids.ver_id);
150 EXPECT_EQ(0, ids.res_id); 151 EXPECT_EQ(0, ids.res_id);
151 152
152 // Writing a registration bumps the next available ids. 153 // Writing a registration bumps the next available ids.
153 std::vector<Resource> resources; 154 std::vector<Resource> resources;
154 RegistrationData data1; 155 RegistrationData data1;
155 data1.registration_id = 100; 156 data1.registration_id = 100;
156 data1.scope = URL(origin, "/foo"); 157 data1.scope = URL(origin, "/foo");
157 data1.script = URL(origin, "/script1.js"); 158 data1.script = URL(origin, "/script1.js");
158 data1.version_id = 200; 159 data1.version_id = 200;
159 ASSERT_TRUE(database->WriteRegistration(data1, resources)); 160 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
161 database->WriteRegistration(data1, resources));
160 162
161 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( 163 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds(
162 &ids.reg_id, &ids.ver_id, &ids.res_id)); 164 &ids.reg_id, &ids.ver_id, &ids.res_id));
163 EXPECT_EQ(101, ids.reg_id); 165 EXPECT_EQ(101, ids.reg_id);
164 EXPECT_EQ(201, ids.ver_id); 166 EXPECT_EQ(201, ids.ver_id);
165 EXPECT_EQ(0, ids.res_id); 167 EXPECT_EQ(0, ids.res_id);
166 168
167 // Writing a registration whose ids are lower than the stored ones should not 169 // Writing a registration whose ids are lower than the stored ones should not
168 // bump the next available ids. 170 // bump the next available ids.
169 RegistrationData data2; 171 RegistrationData data2;
170 data2.registration_id = 10; 172 data2.registration_id = 10;
171 data2.scope = URL(origin, "/bar"); 173 data2.scope = URL(origin, "/bar");
172 data2.script = URL(origin, "/script2.js"); 174 data2.script = URL(origin, "/script2.js");
173 data2.version_id = 20; 175 data2.version_id = 20;
174 ASSERT_TRUE(database->WriteRegistration(data2, resources)); 176 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
177 database->WriteRegistration(data2, resources));
175 178
176 // Close and reopen the database to verify the stored values. 179 // Close and reopen the database to verify the stored values.
177 database.reset(CreateDatabase(database_dir.path())); 180 database.reset(CreateDatabase(database_dir.path()));
178 181
179 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds( 182 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->GetNextAvailableIds(
180 &ids.reg_id, &ids.ver_id, &ids.res_id)); 183 &ids.reg_id, &ids.ver_id, &ids.res_id));
181 EXPECT_EQ(101, ids.reg_id); 184 EXPECT_EQ(101, ids.reg_id);
182 EXPECT_EQ(201, ids.ver_id); 185 EXPECT_EQ(201, ids.ver_id);
183 EXPECT_EQ(0, ids.res_id); 186 EXPECT_EQ(0, ids.res_id);
184 } 187 }
185 188
186 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) { 189 TEST(ServiceWorkerDatabaseTest, GetOriginsWithRegistrations) {
187 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 190 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
188 191
189 std::set<GURL> origins; 192 std::set<GURL> origins;
190 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 193 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
191 database->GetOriginsWithRegistrations(&origins)); 194 database->GetOriginsWithRegistrations(&origins));
192 EXPECT_TRUE(origins.empty()); 195 EXPECT_TRUE(origins.empty());
193 196
194 std::vector<Resource> resources; 197 std::vector<Resource> resources;
195 198
196 GURL origin1("http://example.com"); 199 GURL origin1("http://example.com");
197 RegistrationData data1; 200 RegistrationData data1;
198 data1.registration_id = 123; 201 data1.registration_id = 123;
199 data1.scope = URL(origin1, "/foo"); 202 data1.scope = URL(origin1, "/foo");
200 data1.script = URL(origin1, "/script1.js"); 203 data1.script = URL(origin1, "/script1.js");
201 data1.version_id = 456; 204 data1.version_id = 456;
202 ASSERT_TRUE(database->WriteRegistration(data1, resources)); 205 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
206 database->WriteRegistration(data1, resources));
203 207
204 GURL origin2("https://www.example.com"); 208 GURL origin2("https://www.example.com");
205 RegistrationData data2; 209 RegistrationData data2;
206 data2.registration_id = 234; 210 data2.registration_id = 234;
207 data2.scope = URL(origin2, "/bar"); 211 data2.scope = URL(origin2, "/bar");
208 data2.script = URL(origin2, "/script2.js"); 212 data2.script = URL(origin2, "/script2.js");
209 data2.version_id = 567; 213 data2.version_id = 567;
210 ASSERT_TRUE(database->WriteRegistration(data2, resources)); 214 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
215 database->WriteRegistration(data2, resources));
211 216
212 GURL origin3("https://example.org"); 217 GURL origin3("https://example.org");
213 RegistrationData data3; 218 RegistrationData data3;
214 data3.registration_id = 345; 219 data3.registration_id = 345;
215 data3.scope = URL(origin3, "/hoge"); 220 data3.scope = URL(origin3, "/hoge");
216 data3.script = URL(origin3, "/script3.js"); 221 data3.script = URL(origin3, "/script3.js");
217 data3.version_id = 678; 222 data3.version_id = 678;
218 ASSERT_TRUE(database->WriteRegistration(data3, resources)); 223 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
224 database->WriteRegistration(data3, resources));
219 225
220 // |origin3| has two registrations. 226 // |origin3| has two registrations.
221 RegistrationData data4; 227 RegistrationData data4;
222 data4.registration_id = 456; 228 data4.registration_id = 456;
223 data4.scope = URL(origin3, "/fuga"); 229 data4.scope = URL(origin3, "/fuga");
224 data4.script = URL(origin3, "/script4.js"); 230 data4.script = URL(origin3, "/script4.js");
225 data4.version_id = 789; 231 data4.version_id = 789;
226 ASSERT_TRUE(database->WriteRegistration(data4, resources)); 232 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
233 database->WriteRegistration(data4, resources));
227 234
228 origins.clear(); 235 origins.clear();
229 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 236 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
230 database->GetOriginsWithRegistrations(&origins)); 237 database->GetOriginsWithRegistrations(&origins));
231 EXPECT_EQ(3U, origins.size()); 238 EXPECT_EQ(3U, origins.size());
232 EXPECT_TRUE(ContainsKey(origins, origin1)); 239 EXPECT_TRUE(ContainsKey(origins, origin1));
233 EXPECT_TRUE(ContainsKey(origins, origin2)); 240 EXPECT_TRUE(ContainsKey(origins, origin2));
234 EXPECT_TRUE(ContainsKey(origins, origin3)); 241 EXPECT_TRUE(ContainsKey(origins, origin3));
235 242
236 // |origin3| has another registration, so should not remove it from the 243 // |origin3| has another registration, so should not remove it from the
237 // unique origin list. 244 // unique origin list.
238 ASSERT_TRUE(database->DeleteRegistration(data4.registration_id, origin3)); 245 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
246 database->DeleteRegistration(data4.registration_id, origin3));
239 247
240 origins.clear(); 248 origins.clear();
241 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 249 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
242 database->GetOriginsWithRegistrations(&origins)); 250 database->GetOriginsWithRegistrations(&origins));
243 EXPECT_EQ(3U, origins.size()); 251 EXPECT_EQ(3U, origins.size());
244 EXPECT_TRUE(ContainsKey(origins, origin1)); 252 EXPECT_TRUE(ContainsKey(origins, origin1));
245 EXPECT_TRUE(ContainsKey(origins, origin2)); 253 EXPECT_TRUE(ContainsKey(origins, origin2));
246 EXPECT_TRUE(ContainsKey(origins, origin3)); 254 EXPECT_TRUE(ContainsKey(origins, origin3));
247 255
248 // |origin3| should be removed from the unique origin list. 256 // |origin3| should be removed from the unique origin list.
249 ASSERT_TRUE(database->DeleteRegistration(data3.registration_id, origin3)); 257 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
258 database->DeleteRegistration(data3.registration_id, origin3));
250 259
251 origins.clear(); 260 origins.clear();
252 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 261 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
253 database->GetOriginsWithRegistrations(&origins)); 262 database->GetOriginsWithRegistrations(&origins));
254 EXPECT_EQ(2U, origins.size()); 263 EXPECT_EQ(2U, origins.size());
255 EXPECT_TRUE(ContainsKey(origins, origin1)); 264 EXPECT_TRUE(ContainsKey(origins, origin1));
256 EXPECT_TRUE(ContainsKey(origins, origin2)); 265 EXPECT_TRUE(ContainsKey(origins, origin2));
257 } 266 }
258 267
259 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) { 268 TEST(ServiceWorkerDatabaseTest, GetRegistrationsForOrigin) {
260 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 269 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
261 270
262 GURL origin1("http://example.com"); 271 GURL origin1("http://example.com");
263 GURL origin2("https://www.example.com"); 272 GURL origin2("https://www.example.com");
264 GURL origin3("https://example.org"); 273 GURL origin3("https://example.org");
265 274
266 std::vector<RegistrationData> registrations; 275 std::vector<RegistrationData> registrations;
267 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 276 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
268 database->GetRegistrationsForOrigin(origin1, &registrations)); 277 database->GetRegistrationsForOrigin(origin1, &registrations));
269 EXPECT_TRUE(registrations.empty()); 278 EXPECT_TRUE(registrations.empty());
270 279
271 std::vector<Resource> resources; 280 std::vector<Resource> resources;
272 281
273 RegistrationData data1; 282 RegistrationData data1;
274 data1.registration_id = 100; 283 data1.registration_id = 100;
275 data1.scope = URL(origin1, "/foo"); 284 data1.scope = URL(origin1, "/foo");
276 data1.script = URL(origin1, "/script1.js"); 285 data1.script = URL(origin1, "/script1.js");
277 data1.version_id = 1000; 286 data1.version_id = 1000;
278 ASSERT_TRUE(database->WriteRegistration(data1, resources)); 287 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
288 database->WriteRegistration(data1, resources));
279 289
280 RegistrationData data2; 290 RegistrationData data2;
281 data2.registration_id = 200; 291 data2.registration_id = 200;
282 data2.scope = URL(origin2, "/bar"); 292 data2.scope = URL(origin2, "/bar");
283 data2.script = URL(origin2, "/script2.js"); 293 data2.script = URL(origin2, "/script2.js");
284 data2.version_id = 2000; 294 data2.version_id = 2000;
285 ASSERT_TRUE(database->WriteRegistration(data2, resources)); 295 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
296 database->WriteRegistration(data2, resources));
286 297
287 RegistrationData data3; 298 RegistrationData data3;
288 data3.registration_id = 300; 299 data3.registration_id = 300;
289 data3.scope = URL(origin3, "/hoge"); 300 data3.scope = URL(origin3, "/hoge");
290 data3.script = URL(origin3, "/script3.js"); 301 data3.script = URL(origin3, "/script3.js");
291 data3.version_id = 3000; 302 data3.version_id = 3000;
292 ASSERT_TRUE(database->WriteRegistration(data3, resources)); 303 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
304 database->WriteRegistration(data3, resources));
293 305
294 // |origin3| has two registrations. 306 // |origin3| has two registrations.
295 RegistrationData data4; 307 RegistrationData data4;
296 data4.registration_id = 400; 308 data4.registration_id = 400;
297 data4.scope = URL(origin3, "/fuga"); 309 data4.scope = URL(origin3, "/fuga");
298 data4.script = URL(origin3, "/script4.js"); 310 data4.script = URL(origin3, "/script4.js");
299 data4.version_id = 4000; 311 data4.version_id = 4000;
300 ASSERT_TRUE(database->WriteRegistration(data4, resources)); 312 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
313 database->WriteRegistration(data4, resources));
301 314
302 registrations.clear(); 315 registrations.clear();
303 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 316 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
304 database->GetRegistrationsForOrigin(origin3, &registrations)); 317 database->GetRegistrationsForOrigin(origin3, &registrations));
305 EXPECT_EQ(2U, registrations.size()); 318 EXPECT_EQ(2U, registrations.size());
306 VerifyRegistrationData(data3, registrations[0]); 319 VerifyRegistrationData(data3, registrations[0]);
307 VerifyRegistrationData(data4, registrations[1]); 320 VerifyRegistrationData(data4, registrations[1]);
308 } 321 }
309 322
310 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) { 323 TEST(ServiceWorkerDatabaseTest, GetAllRegistrations) {
311 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 324 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
312 325
313 std::vector<RegistrationData> registrations; 326 std::vector<RegistrationData> registrations;
314 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 327 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
315 database->GetAllRegistrations(&registrations)); 328 database->GetAllRegistrations(&registrations));
316 EXPECT_TRUE(registrations.empty()); 329 EXPECT_TRUE(registrations.empty());
317 330
318 std::vector<Resource> resources; 331 std::vector<Resource> resources;
319 332
320 GURL origin1("http://www1.example.com"); 333 GURL origin1("http://www1.example.com");
321 RegistrationData data1; 334 RegistrationData data1;
322 data1.registration_id = 100; 335 data1.registration_id = 100;
323 data1.scope = URL(origin1, "/foo"); 336 data1.scope = URL(origin1, "/foo");
324 data1.script = URL(origin1, "/script1.js"); 337 data1.script = URL(origin1, "/script1.js");
325 data1.version_id = 1000; 338 data1.version_id = 1000;
326 ASSERT_TRUE(database->WriteRegistration(data1, resources)); 339 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
340 database->WriteRegistration(data1, resources));
327 341
328 GURL origin2("http://www2.example.com"); 342 GURL origin2("http://www2.example.com");
329 RegistrationData data2; 343 RegistrationData data2;
330 data2.registration_id = 200; 344 data2.registration_id = 200;
331 data2.scope = URL(origin2, "/bar"); 345 data2.scope = URL(origin2, "/bar");
332 data2.script = URL(origin2, "/script2.js"); 346 data2.script = URL(origin2, "/script2.js");
333 data2.version_id = 2000; 347 data2.version_id = 2000;
334 ASSERT_TRUE(database->WriteRegistration(data2, resources)); 348 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
349 database->WriteRegistration(data2, resources));
335 350
336 GURL origin3("http://www3.example.com"); 351 GURL origin3("http://www3.example.com");
337 RegistrationData data3; 352 RegistrationData data3;
338 data3.registration_id = 300; 353 data3.registration_id = 300;
339 data3.scope = URL(origin3, "/hoge"); 354 data3.scope = URL(origin3, "/hoge");
340 data3.script = URL(origin3, "/script3.js"); 355 data3.script = URL(origin3, "/script3.js");
341 data3.version_id = 3000; 356 data3.version_id = 3000;
342 ASSERT_TRUE(database->WriteRegistration(data3, resources)); 357 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
358 database->WriteRegistration(data3, resources));
343 359
344 // |origin3| has two registrations. 360 // |origin3| has two registrations.
345 RegistrationData data4; 361 RegistrationData data4;
346 data4.registration_id = 400; 362 data4.registration_id = 400;
347 data4.scope = URL(origin3, "/fuga"); 363 data4.scope = URL(origin3, "/fuga");
348 data4.script = URL(origin3, "/script4.js"); 364 data4.script = URL(origin3, "/script4.js");
349 data4.version_id = 4000; 365 data4.version_id = 4000;
350 ASSERT_TRUE(database->WriteRegistration(data4, resources)); 366 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
367 database->WriteRegistration(data4, resources));
351 368
352 registrations.clear(); 369 registrations.clear();
353 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 370 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
354 database->GetAllRegistrations(&registrations)); 371 database->GetAllRegistrations(&registrations));
355 EXPECT_EQ(4U, registrations.size()); 372 EXPECT_EQ(4U, registrations.size());
356 VerifyRegistrationData(data1, registrations[0]); 373 VerifyRegistrationData(data1, registrations[0]);
357 VerifyRegistrationData(data2, registrations[1]); 374 VerifyRegistrationData(data2, registrations[1]);
358 VerifyRegistrationData(data3, registrations[2]); 375 VerifyRegistrationData(data3, registrations[2]);
359 VerifyRegistrationData(data4, registrations[3]); 376 VerifyRegistrationData(data4, registrations[3]);
360 } 377 }
(...skipping 10 matching lines...) Expand all
371 388
372 std::vector<Resource> resources; 389 std::vector<Resource> resources;
373 resources.push_back(CreateResource(1, URL(origin, "/resource1"))); 390 resources.push_back(CreateResource(1, URL(origin, "/resource1")));
374 resources.push_back(CreateResource(2, URL(origin, "/resource2"))); 391 resources.push_back(CreateResource(2, URL(origin, "/resource2")));
375 392
376 // Write a resource to the uncommitted list to make sure that writing 393 // Write a resource to the uncommitted list to make sure that writing
377 // registration removes resource ids associated with the registration from 394 // registration removes resource ids associated with the registration from
378 // the uncommitted list. 395 // the uncommitted list.
379 std::set<int64> uncommitted_ids; 396 std::set<int64> uncommitted_ids;
380 uncommitted_ids.insert(resources[0].resource_id); 397 uncommitted_ids.insert(resources[0].resource_id);
381 EXPECT_TRUE(database->WriteUncommittedResourceIds(uncommitted_ids)); 398 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
399 database->WriteUncommittedResourceIds(uncommitted_ids));
382 std::set<int64> uncommitted_ids_out; 400 std::set<int64> uncommitted_ids_out;
383 EXPECT_TRUE(database->GetUncommittedResourceIds(&uncommitted_ids_out)); 401 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
402 database->GetUncommittedResourceIds(&uncommitted_ids_out));
384 EXPECT_EQ(uncommitted_ids, uncommitted_ids_out); 403 EXPECT_EQ(uncommitted_ids, uncommitted_ids_out);
385 404
386 EXPECT_TRUE(database->WriteRegistration(data, resources)); 405 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
406 database->WriteRegistration(data, resources));
387 407
388 // Make sure that the registration and resource records are stored. 408 // Make sure that the registration and resource records are stored.
389 RegistrationData data_out; 409 RegistrationData data_out;
390 std::vector<Resource> resources_out; 410 std::vector<Resource> resources_out;
391 EXPECT_TRUE(database->ReadRegistration( 411 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
412 database->ReadRegistration(
392 data.registration_id, origin, &data_out, &resources_out)); 413 data.registration_id, origin, &data_out, &resources_out));
393 VerifyRegistrationData(data, data_out); 414 VerifyRegistrationData(data, data_out);
394 VerifyResourceRecords(resources, resources_out); 415 VerifyResourceRecords(resources, resources_out);
395 416
396 // Make sure that the resource is removed from the uncommitted list. 417 // Make sure that the resource is removed from the uncommitted list.
397 uncommitted_ids_out.clear(); 418 uncommitted_ids_out.clear();
398 EXPECT_TRUE(database->GetUncommittedResourceIds(&uncommitted_ids_out)); 419 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
420 database->GetUncommittedResourceIds(&uncommitted_ids_out));
399 EXPECT_TRUE(uncommitted_ids_out.empty()); 421 EXPECT_TRUE(uncommitted_ids_out.empty());
400 422
401 EXPECT_TRUE(database->DeleteRegistration(data.registration_id, origin)); 423 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
424 database->DeleteRegistration(data.registration_id, origin));
402 425
403 // Make sure that the registration and resource records are gone. 426 // Make sure that the registration and resource records are gone.
404 resources_out.clear(); 427 resources_out.clear();
405 EXPECT_FALSE(database->ReadRegistration( 428 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
406 data.registration_id, origin, &data_out, &resources_out)); 429 database->ReadRegistration(
430 data.registration_id, origin, &data_out, &resources_out));
407 EXPECT_TRUE(resources_out.empty()); 431 EXPECT_TRUE(resources_out.empty());
408 432
409 // Resources should be purgeable because these are no longer referred. 433 // Resources should be purgeable because these are no longer referred.
410 std::set<int64> purgeable_ids_out; 434 std::set<int64> purgeable_ids_out;
411 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 435 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
436 database->GetPurgeableResourceIds(&purgeable_ids_out));
412 EXPECT_EQ(2u, purgeable_ids_out.size()); 437 EXPECT_EQ(2u, purgeable_ids_out.size());
413 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[0].resource_id)); 438 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[0].resource_id));
414 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[1].resource_id)); 439 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources[1].resource_id));
415 } 440 }
416 441
417 TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) { 442 TEST(ServiceWorkerDatabaseTest, Registration_Overwrite) {
418 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 443 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
419 444
420 GURL origin("http://example.com"); 445 GURL origin("http://example.com");
421 RegistrationData data; 446 RegistrationData data;
422 data.registration_id = 100; 447 data.registration_id = 100;
423 data.scope = URL(origin, "/foo"); 448 data.scope = URL(origin, "/foo");
424 data.script = URL(origin, "/script.js"); 449 data.script = URL(origin, "/script.js");
425 data.version_id = 200; 450 data.version_id = 200;
426 451
427 std::vector<Resource> resources1; 452 std::vector<Resource> resources1;
428 resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); 453 resources1.push_back(CreateResource(1, URL(origin, "/resource1")));
429 resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); 454 resources1.push_back(CreateResource(2, URL(origin, "/resource2")));
430 455
431 EXPECT_TRUE(database->WriteRegistration(data, resources1)); 456 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
457 database->WriteRegistration(data, resources1));
432 458
433 // Make sure that the registration and resource records are stored. 459 // Make sure that the registration and resource records are stored.
434 RegistrationData data_out; 460 RegistrationData data_out;
435 std::vector<Resource> resources_out; 461 std::vector<Resource> resources_out;
436 EXPECT_TRUE(database->ReadRegistration( 462 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
437 data.registration_id, origin, &data_out, &resources_out)); 463 data.registration_id, origin, &data_out, &resources_out));
438 VerifyRegistrationData(data, data_out); 464 VerifyRegistrationData(data, data_out);
439 VerifyResourceRecords(resources1, resources_out); 465 VerifyResourceRecords(resources1, resources_out);
440 466
441 // Update the registration. 467 // Update the registration.
442 RegistrationData updated_data = data; 468 RegistrationData updated_data = data;
443 updated_data.version_id = data.version_id + 1; 469 updated_data.version_id = data.version_id + 1;
444 std::vector<Resource> resources2; 470 std::vector<Resource> resources2;
445 resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); 471 resources2.push_back(CreateResource(3, URL(origin, "/resource3")));
446 resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); 472 resources2.push_back(CreateResource(4, URL(origin, "/resource4")));
447 473
448 EXPECT_TRUE(database->WriteRegistration(updated_data, resources2)); 474 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
475 database->WriteRegistration(updated_data, resources2));
449 476
450 // Make sure that |updated_data| is stored and resources referred from |data| 477 // Make sure that |updated_data| is stored and resources referred from |data|
451 // is moved to the purgeable list. 478 // is moved to the purgeable list.
452 resources_out.clear(); 479 resources_out.clear();
453 EXPECT_TRUE(database->ReadRegistration( 480 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
454 updated_data.registration_id, origin, &data_out, &resources_out)); 481 updated_data.registration_id, origin, &data_out, &resources_out));
455 VerifyRegistrationData(updated_data, data_out); 482 VerifyRegistrationData(updated_data, data_out);
456 VerifyResourceRecords(resources2, resources_out); 483 VerifyResourceRecords(resources2, resources_out);
457 484
458 std::set<int64> purgeable_ids_out; 485 std::set<int64> purgeable_ids_out;
459 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 486 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
487 database->GetPurgeableResourceIds(&purgeable_ids_out));
460 EXPECT_EQ(2u, purgeable_ids_out.size()); 488 EXPECT_EQ(2u, purgeable_ids_out.size());
461 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); 489 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id));
462 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); 490 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id));
463 } 491 }
464 492
465 TEST(ServiceWorkerDatabaseTest, Registration_Multiple) { 493 TEST(ServiceWorkerDatabaseTest, Registration_Multiple) {
466 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 494 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
467 GURL origin("http://example.com"); 495 GURL origin("http://example.com");
468 496
469 // Add registration1. 497 // Add registration1.
470 RegistrationData data1; 498 RegistrationData data1;
471 data1.registration_id = 100; 499 data1.registration_id = 100;
472 data1.scope = URL(origin, "/foo"); 500 data1.scope = URL(origin, "/foo");
473 data1.script = URL(origin, "/script1.js"); 501 data1.script = URL(origin, "/script1.js");
474 data1.version_id = 200; 502 data1.version_id = 200;
475 503
476 std::vector<Resource> resources1; 504 std::vector<Resource> resources1;
477 resources1.push_back(CreateResource(1, URL(origin, "/resource1"))); 505 resources1.push_back(CreateResource(1, URL(origin, "/resource1")));
478 resources1.push_back(CreateResource(2, URL(origin, "/resource2"))); 506 resources1.push_back(CreateResource(2, URL(origin, "/resource2")));
479 EXPECT_TRUE(database->WriteRegistration(data1, resources1)); 507 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
508 database->WriteRegistration(data1, resources1));
480 509
481 // Add registration2. 510 // Add registration2.
482 RegistrationData data2; 511 RegistrationData data2;
483 data2.registration_id = 101; 512 data2.registration_id = 101;
484 data2.scope = URL(origin, "/bar"); 513 data2.scope = URL(origin, "/bar");
485 data2.script = URL(origin, "/script2.js"); 514 data2.script = URL(origin, "/script2.js");
486 data2.version_id = 201; 515 data2.version_id = 201;
487 516
488 std::vector<Resource> resources2; 517 std::vector<Resource> resources2;
489 resources2.push_back(CreateResource(3, URL(origin, "/resource3"))); 518 resources2.push_back(CreateResource(3, URL(origin, "/resource3")));
490 resources2.push_back(CreateResource(4, URL(origin, "/resource4"))); 519 resources2.push_back(CreateResource(4, URL(origin, "/resource4")));
491 EXPECT_TRUE(database->WriteRegistration(data2, resources2)); 520 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
521 database->WriteRegistration(data2, resources2));
492 522
493 // Make sure that registration1 is stored. 523 // Make sure that registration1 is stored.
494 RegistrationData data_out; 524 RegistrationData data_out;
495 std::vector<Resource> resources_out; 525 std::vector<Resource> resources_out;
496 EXPECT_TRUE(database->ReadRegistration( 526 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
497 data1.registration_id, origin, &data_out, &resources_out)); 527 data1.registration_id, origin, &data_out, &resources_out));
498 VerifyRegistrationData(data1, data_out); 528 VerifyRegistrationData(data1, data_out);
499 VerifyResourceRecords(resources1, resources_out); 529 VerifyResourceRecords(resources1, resources_out);
500 530
501 // Make sure that registration2 is also stored. 531 // Make sure that registration2 is also stored.
502 resources_out.clear(); 532 resources_out.clear();
503 EXPECT_TRUE(database->ReadRegistration( 533 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
504 data2.registration_id, origin, &data_out, &resources_out)); 534 data2.registration_id, origin, &data_out, &resources_out));
505 VerifyRegistrationData(data2, data_out); 535 VerifyRegistrationData(data2, data_out);
506 VerifyResourceRecords(resources2, resources_out); 536 VerifyResourceRecords(resources2, resources_out);
507 537
508 std::set<int64> purgeable_ids_out; 538 std::set<int64> purgeable_ids_out;
509 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 539 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
540 database->GetPurgeableResourceIds(&purgeable_ids_out));
510 EXPECT_TRUE(purgeable_ids_out.empty()); 541 EXPECT_TRUE(purgeable_ids_out.empty());
511 542
512 // Delete registration1. 543 // Delete registration1.
513 EXPECT_TRUE(database->DeleteRegistration(data1.registration_id, origin)); 544 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
545 database->DeleteRegistration(data1.registration_id, origin));
514 546
515 // Make sure that registration1 is gone. 547 // Make sure that registration1 is gone.
516 resources_out.clear(); 548 resources_out.clear();
517 EXPECT_FALSE(database->ReadRegistration( 549 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
518 data1.registration_id, origin, &data_out, &resources_out)); 550 database->ReadRegistration(
551 data1.registration_id, origin, &data_out, &resources_out));
519 EXPECT_TRUE(resources_out.empty()); 552 EXPECT_TRUE(resources_out.empty());
520 553
521 purgeable_ids_out.clear(); 554 purgeable_ids_out.clear();
522 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 555 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
556 database->GetPurgeableResourceIds(&purgeable_ids_out));
523 EXPECT_EQ(2u, purgeable_ids_out.size()); 557 EXPECT_EQ(2u, purgeable_ids_out.size());
524 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id)); 558 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[0].resource_id));
525 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id)); 559 EXPECT_TRUE(ContainsKey(purgeable_ids_out, resources1[1].resource_id));
526 560
527 // Make sure that registration2 is still alive. 561 // Make sure that registration2 is still alive.
528 resources_out.clear(); 562 resources_out.clear();
529 EXPECT_TRUE(database->ReadRegistration( 563 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
530 data2.registration_id, origin, &data_out, &resources_out)); 564 data2.registration_id, origin, &data_out, &resources_out));
531 VerifyRegistrationData(data2, data_out); 565 VerifyRegistrationData(data2, data_out);
532 VerifyResourceRecords(resources2, resources_out); 566 VerifyResourceRecords(resources2, resources_out);
533 } 567 }
534 568
535 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) { 569 TEST(ServiceWorkerDatabaseTest, UpdateVersionToActive) {
536 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 570 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
537 GURL origin("http://example.com"); 571 GURL origin("http://example.com");
538 572
539 // Should be false because a registration does not exist. 573 // Should be false because a registration does not exist.
540 EXPECT_FALSE(database->UpdateVersionToActive(0, origin)); 574 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
575 database->UpdateVersionToActive(0, origin));
541 576
542 // Add a registration. 577 // Add a registration.
543 RegistrationData data; 578 RegistrationData data;
544 data.registration_id = 100; 579 data.registration_id = 100;
545 data.scope = URL(origin, "/foo"); 580 data.scope = URL(origin, "/foo");
546 data.script = URL(origin, "/script.js"); 581 data.script = URL(origin, "/script.js");
547 data.version_id = 200; 582 data.version_id = 200;
548 data.is_active = false; 583 data.is_active = false;
549 EXPECT_TRUE(database->WriteRegistration(data, std::vector<Resource>())); 584 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
585 database->WriteRegistration(data, std::vector<Resource>()));
550 586
551 // Make sure that the registration is stored. 587 // Make sure that the registration is stored.
552 RegistrationData data_out; 588 RegistrationData data_out;
553 std::vector<Resource> resources_out; 589 std::vector<Resource> resources_out;
554 EXPECT_TRUE(database->ReadRegistration( 590 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
555 data.registration_id, origin, &data_out, &resources_out)); 591 database->ReadRegistration(
592 data.registration_id, origin, &data_out, &resources_out));
556 VerifyRegistrationData(data, data_out); 593 VerifyRegistrationData(data, data_out);
557 EXPECT_TRUE(resources_out.empty()); 594 EXPECT_TRUE(resources_out.empty());
558 595
559 // Activate the registration. 596 // Activate the registration.
560 EXPECT_TRUE(database->UpdateVersionToActive(data.registration_id, origin)); 597 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
598 database->UpdateVersionToActive(data.registration_id, origin));
561 599
562 // Make sure that the registration is activated. 600 // Make sure that the registration is activated.
563 resources_out.clear(); 601 resources_out.clear();
564 EXPECT_TRUE(database->ReadRegistration( 602 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
565 data.registration_id, origin, &data_out, &resources_out)); 603 database->ReadRegistration(
604 data.registration_id, origin, &data_out, &resources_out));
566 RegistrationData expected_data = data; 605 RegistrationData expected_data = data;
567 expected_data.is_active = true; 606 expected_data.is_active = true;
568 VerifyRegistrationData(expected_data, data_out); 607 VerifyRegistrationData(expected_data, data_out);
569 EXPECT_TRUE(resources_out.empty()); 608 EXPECT_TRUE(resources_out.empty());
570 609
571 // Delete the registration. 610 // Delete the registration.
572 EXPECT_TRUE(database->DeleteRegistration(data.registration_id, origin)); 611 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
612 database->DeleteRegistration(data.registration_id, origin));
573 613
574 // Should be false because the registration is gone. 614 // Should be false because the registration is gone.
575 EXPECT_FALSE(database->UpdateVersionToActive(data.registration_id, origin)); 615 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
616 database->UpdateVersionToActive(data.registration_id, origin));
576 } 617 }
577 618
578 TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) { 619 TEST(ServiceWorkerDatabaseTest, UpdateLastCheckTime) {
579 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 620 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
580 GURL origin("http://example.com"); 621 GURL origin("http://example.com");
581 622
582 // Should be false because a registration does not exist. 623 // Should be false because a registration does not exist.
583 EXPECT_FALSE(database->UpdateLastCheckTime(0, origin, base::Time::Now())); 624 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
625 database->UpdateLastCheckTime(0, origin, base::Time::Now()));
584 626
585 // Add a registration. 627 // Add a registration.
586 RegistrationData data; 628 RegistrationData data;
587 data.registration_id = 100; 629 data.registration_id = 100;
588 data.scope = URL(origin, "/foo"); 630 data.scope = URL(origin, "/foo");
589 data.script = URL(origin, "/script.js"); 631 data.script = URL(origin, "/script.js");
590 data.version_id = 200; 632 data.version_id = 200;
591 data.last_update_check = base::Time::Now(); 633 data.last_update_check = base::Time::Now();
592 EXPECT_TRUE(database->WriteRegistration(data, std::vector<Resource>())); 634 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
635 database->WriteRegistration(data, std::vector<Resource>()));
593 636
594 // Make sure that the registration is stored. 637 // Make sure that the registration is stored.
595 RegistrationData data_out; 638 RegistrationData data_out;
596 std::vector<Resource> resources_out; 639 std::vector<Resource> resources_out;
597 EXPECT_TRUE(database->ReadRegistration( 640 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
598 data.registration_id, origin, &data_out, &resources_out)); 641 database->ReadRegistration(
642 data.registration_id, origin, &data_out, &resources_out));
599 VerifyRegistrationData(data, data_out); 643 VerifyRegistrationData(data, data_out);
600 EXPECT_TRUE(resources_out.empty()); 644 EXPECT_TRUE(resources_out.empty());
601 645
602 // Update the last check time. 646 // Update the last check time.
603 base::Time updated_time = base::Time::Now(); 647 base::Time updated_time = base::Time::Now();
604 EXPECT_TRUE(database->UpdateLastCheckTime( 648 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
605 data.registration_id, origin, updated_time)); 649 database->UpdateLastCheckTime(
650 data.registration_id, origin, updated_time));
606 651
607 // Make sure that the registration is updated. 652 // Make sure that the registration is updated.
608 resources_out.clear(); 653 resources_out.clear();
609 EXPECT_TRUE(database->ReadRegistration( 654 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
610 data.registration_id, origin, &data_out, &resources_out)); 655 database->ReadRegistration(
656 data.registration_id, origin, &data_out, &resources_out));
611 RegistrationData expected_data = data; 657 RegistrationData expected_data = data;
612 expected_data.last_update_check = updated_time; 658 expected_data.last_update_check = updated_time;
613 VerifyRegistrationData(expected_data, data_out); 659 VerifyRegistrationData(expected_data, data_out);
614 EXPECT_TRUE(resources_out.empty()); 660 EXPECT_TRUE(resources_out.empty());
615 661
616 // Delete the registration. 662 // Delete the registration.
617 EXPECT_TRUE(database->DeleteRegistration(data.registration_id, origin)); 663 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
664 database->DeleteRegistration(data.registration_id, origin));
618 665
619 // Should be false because the registration is gone. 666 // Should be false because the registration is gone.
620 EXPECT_FALSE(database->UpdateLastCheckTime( 667 EXPECT_EQ(ServiceWorkerDatabase::STATUS_ERROR_NOT_FOUND,
621 data.registration_id, origin, base::Time::Now())); 668 database->UpdateLastCheckTime(
669 data.registration_id, origin, base::Time::Now()));
622 } 670 }
623 671
624 TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) { 672 TEST(ServiceWorkerDatabaseTest, UncommittedResourceIds) {
625 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 673 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
626 674
627 // Write {1, 2, 3}. 675 // Write {1, 2, 3}.
628 std::set<int64> ids1; 676 std::set<int64> ids1;
629 ids1.insert(1); 677 ids1.insert(1);
630 ids1.insert(2); 678 ids1.insert(2);
631 ids1.insert(3); 679 ids1.insert(3);
632 EXPECT_TRUE(database->WriteUncommittedResourceIds(ids1)); 680 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
681 database->WriteUncommittedResourceIds(ids1));
633 682
634 std::set<int64> ids_out; 683 std::set<int64> ids_out;
635 EXPECT_TRUE(database->GetUncommittedResourceIds(&ids_out)); 684 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
685 database->GetUncommittedResourceIds(&ids_out));
636 EXPECT_EQ(ids1, ids_out); 686 EXPECT_EQ(ids1, ids_out);
637 687
638 // Write {2, 4}. 688 // Write {2, 4}.
639 std::set<int64> ids2; 689 std::set<int64> ids2;
640 ids2.insert(2); 690 ids2.insert(2);
641 ids2.insert(4); 691 ids2.insert(4);
642 EXPECT_TRUE(database->WriteUncommittedResourceIds(ids2)); 692 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
693 database->WriteUncommittedResourceIds(ids2));
643 694
644 ids_out.clear(); 695 ids_out.clear();
645 EXPECT_TRUE(database->GetUncommittedResourceIds(&ids_out)); 696 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
697 database->GetUncommittedResourceIds(&ids_out));
646 std::set<int64> expected = base::STLSetUnion<std::set<int64> >(ids1, ids2); 698 std::set<int64> expected = base::STLSetUnion<std::set<int64> >(ids1, ids2);
647 EXPECT_EQ(expected, ids_out); 699 EXPECT_EQ(expected, ids_out);
648 700
649 // Delete {2, 3}. 701 // Delete {2, 3}.
650 std::set<int64> ids3; 702 std::set<int64> ids3;
651 ids3.insert(2); 703 ids3.insert(2);
652 ids3.insert(3); 704 ids3.insert(3);
653 EXPECT_TRUE(database->ClearUncommittedResourceIds(ids3)); 705 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
706 database->ClearUncommittedResourceIds(ids3));
654 707
655 ids_out.clear(); 708 ids_out.clear();
656 EXPECT_TRUE(database->GetUncommittedResourceIds(&ids_out)); 709 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
710 database->GetUncommittedResourceIds(&ids_out));
657 expected = base::STLSetDifference<std::set<int64> >(expected, ids3); 711 expected = base::STLSetDifference<std::set<int64> >(expected, ids3);
658 EXPECT_EQ(expected, ids_out); 712 EXPECT_EQ(expected, ids_out);
659 } 713 }
660 714
661 TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) { 715 TEST(ServiceWorkerDatabaseTest, PurgeableResourceIds) {
662 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 716 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
663 717
664 // Write {1, 2, 3}. 718 // Write {1, 2, 3}.
665 std::set<int64> ids1; 719 std::set<int64> ids1;
666 ids1.insert(1); 720 ids1.insert(1);
667 ids1.insert(2); 721 ids1.insert(2);
668 ids1.insert(3); 722 ids1.insert(3);
669 EXPECT_TRUE(database->WritePurgeableResourceIds(ids1)); 723 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
724 database->WritePurgeableResourceIds(ids1));
670 725
671 std::set<int64> ids_out; 726 std::set<int64> ids_out;
672 EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); 727 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
728 database->GetPurgeableResourceIds(&ids_out));
673 EXPECT_EQ(ids1, ids_out); 729 EXPECT_EQ(ids1, ids_out);
674 730
675 // Write {2, 4}. 731 // Write {2, 4}.
676 std::set<int64> ids2; 732 std::set<int64> ids2;
677 ids2.insert(2); 733 ids2.insert(2);
678 ids2.insert(4); 734 ids2.insert(4);
679 EXPECT_TRUE(database->WritePurgeableResourceIds(ids2)); 735 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
736 database->WritePurgeableResourceIds(ids2));
680 737
681 ids_out.clear(); 738 ids_out.clear();
682 EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); 739 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
740 database->GetPurgeableResourceIds(&ids_out));
683 std::set<int64> expected = base::STLSetUnion<std::set<int64> >(ids1, ids2); 741 std::set<int64> expected = base::STLSetUnion<std::set<int64> >(ids1, ids2);
684 EXPECT_EQ(expected, ids_out); 742 EXPECT_EQ(expected, ids_out);
685 743
686 // Delete {2, 3}. 744 // Delete {2, 3}.
687 std::set<int64> ids3; 745 std::set<int64> ids3;
688 ids3.insert(2); 746 ids3.insert(2);
689 ids3.insert(3); 747 ids3.insert(3);
690 EXPECT_TRUE(database->ClearPurgeableResourceIds(ids3)); 748 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
749 database->ClearPurgeableResourceIds(ids3));
691 750
692 ids_out.clear(); 751 ids_out.clear();
693 EXPECT_TRUE(database->GetPurgeableResourceIds(&ids_out)); 752 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
753 database->GetPurgeableResourceIds(&ids_out));
694 expected = base::STLSetDifference<std::set<int64> >(expected, ids3); 754 expected = base::STLSetDifference<std::set<int64> >(expected, ids3);
695 EXPECT_EQ(expected, ids_out); 755 EXPECT_EQ(expected, ids_out);
696 } 756 }
697 757
698 TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) { 758 TEST(ServiceWorkerDatabaseTest, DeleteAllDataForOrigin) {
699 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory()); 759 scoped_ptr<ServiceWorkerDatabase> database(CreateDatabaseInMemory());
700 760
701 // Data associated with |origin1| will be removed. 761 // Data associated with |origin1| will be removed.
702 GURL origin1("http://example.com"); 762 GURL origin1("http://example.com");
703 GURL origin2("http://example.org"); 763 GURL origin2("http://example.org");
704 764
705 // |origin1| has two registrations. 765 // |origin1| has two registrations.
706 RegistrationData data1; 766 RegistrationData data1;
707 data1.registration_id = 10; 767 data1.registration_id = 10;
708 data1.scope = URL(origin1, "/foo"); 768 data1.scope = URL(origin1, "/foo");
709 data1.script = URL(origin1, "/script1.js"); 769 data1.script = URL(origin1, "/script1.js");
710 data1.version_id = 100; 770 data1.version_id = 100;
711 771
712 std::vector<Resource> resources1; 772 std::vector<Resource> resources1;
713 resources1.push_back(CreateResource(1, URL(origin1, "/resource1"))); 773 resources1.push_back(CreateResource(1, URL(origin1, "/resource1")));
714 resources1.push_back(CreateResource(2, URL(origin1, "/resource2"))); 774 resources1.push_back(CreateResource(2, URL(origin1, "/resource2")));
715 ASSERT_TRUE(database->WriteRegistration(data1, resources1)); 775 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
776 database->WriteRegistration(data1, resources1));
716 777
717 RegistrationData data2; 778 RegistrationData data2;
718 data2.registration_id = 11; 779 data2.registration_id = 11;
719 data2.scope = URL(origin1, "/bar"); 780 data2.scope = URL(origin1, "/bar");
720 data2.script = URL(origin1, "/script2.js"); 781 data2.script = URL(origin1, "/script2.js");
721 data2.version_id = 101; 782 data2.version_id = 101;
722 783
723 std::vector<Resource> resources2; 784 std::vector<Resource> resources2;
724 resources2.push_back(CreateResource(3, URL(origin1, "/resource3"))); 785 resources2.push_back(CreateResource(3, URL(origin1, "/resource3")));
725 resources2.push_back(CreateResource(4, URL(origin1, "/resource4"))); 786 resources2.push_back(CreateResource(4, URL(origin1, "/resource4")));
726 ASSERT_TRUE(database->WriteRegistration(data2, resources2)); 787 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
788 database->WriteRegistration(data2, resources2));
727 789
728 // |origin2| has one registration. 790 // |origin2| has one registration.
729 RegistrationData data3; 791 RegistrationData data3;
730 data3.registration_id = 12; 792 data3.registration_id = 12;
731 data3.scope = URL(origin2, "/hoge"); 793 data3.scope = URL(origin2, "/hoge");
732 data3.script = URL(origin2, "/script3.js"); 794 data3.script = URL(origin2, "/script3.js");
733 data3.version_id = 102; 795 data3.version_id = 102;
734 796
735 std::vector<Resource> resources3; 797 std::vector<Resource> resources3;
736 resources3.push_back(CreateResource(5, URL(origin2, "/resource5"))); 798 resources3.push_back(CreateResource(5, URL(origin2, "/resource5")));
737 resources3.push_back(CreateResource(6, URL(origin2, "/resource6"))); 799 resources3.push_back(CreateResource(6, URL(origin2, "/resource6")));
738 ASSERT_TRUE(database->WriteRegistration(data3, resources3)); 800 ASSERT_EQ(ServiceWorkerDatabase::STATUS_OK,
801 database->WriteRegistration(data3, resources3));
739 802
740 EXPECT_TRUE(database->DeleteAllDataForOrigin(origin1)); 803 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
804 database->DeleteAllDataForOrigin(origin1));
741 805
742 // |origin1| should be removed from the unique origin list. 806 // |origin1| should be removed from the unique origin list.
743 std::set<GURL> unique_origins; 807 std::set<GURL> unique_origins;
744 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 808 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
745 database->GetOriginsWithRegistrations(&unique_origins)); 809 database->GetOriginsWithRegistrations(&unique_origins));
746 EXPECT_EQ(1u, unique_origins.size()); 810 EXPECT_EQ(1u, unique_origins.size());
747 EXPECT_TRUE(ContainsKey(unique_origins, origin2)); 811 EXPECT_TRUE(ContainsKey(unique_origins, origin2));
748 812
749 // The registrations for |origin1| should be removed. 813 // The registrations for |origin1| should be removed.
750 std::vector<RegistrationData> registrations; 814 std::vector<RegistrationData> registrations;
751 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, 815 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
752 database->GetRegistrationsForOrigin(origin1, &registrations)); 816 database->GetRegistrationsForOrigin(origin1, &registrations));
753 EXPECT_TRUE(registrations.empty()); 817 EXPECT_TRUE(registrations.empty());
754 818
755 // The registration for |origin2| should not be removed. 819 // The registration for |origin2| should not be removed.
756 RegistrationData data_out; 820 RegistrationData data_out;
757 std::vector<Resource> resources_out; 821 std::vector<Resource> resources_out;
758 EXPECT_TRUE(database->ReadRegistration( 822 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK, database->ReadRegistration(
759 data3.registration_id, origin2, &data_out, &resources_out)); 823 data3.registration_id, origin2, &data_out, &resources_out));
760 VerifyRegistrationData(data3, data_out); 824 VerifyRegistrationData(data3, data_out);
761 VerifyResourceRecords(resources3, resources_out); 825 VerifyResourceRecords(resources3, resources_out);
762 826
763 // The resources associated with |origin1| should be purgeable. 827 // The resources associated with |origin1| should be purgeable.
764 std::set<int64> purgeable_ids_out; 828 std::set<int64> purgeable_ids_out;
765 EXPECT_TRUE(database->GetPurgeableResourceIds(&purgeable_ids_out)); 829 EXPECT_EQ(ServiceWorkerDatabase::STATUS_OK,
830 database->GetPurgeableResourceIds(&purgeable_ids_out));
766 EXPECT_EQ(4u, purgeable_ids_out.size()); 831 EXPECT_EQ(4u, purgeable_ids_out.size());
767 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1)); 832 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 1));
768 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2)); 833 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 2));
769 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3)); 834 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 3));
770 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4)); 835 EXPECT_TRUE(ContainsKey(purgeable_ids_out, 4));
771 } 836 }
772 837
773 } // namespace content 838 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_database.cc ('k') | content/browser/service_worker/service_worker_storage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698