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

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

Issue 2968123002: Introduce ServiceWorkerRegistrationOptions struct for service worker options (Closed)
Patch Set: address more comments Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 #include <tuple> 6 #include <tuple>
7 7
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 std::vector<ServiceWorkerRemoteProviderEndpoint> remote_endpoints_; 176 std::vector<ServiceWorkerRemoteProviderEndpoint> remote_endpoints_;
177 }; 177 };
178 178
179 scoped_refptr<ServiceWorkerRegistration> ServiceWorkerJobTest::RunRegisterJob( 179 scoped_refptr<ServiceWorkerRegistration> ServiceWorkerJobTest::RunRegisterJob(
180 const GURL& pattern, 180 const GURL& pattern,
181 const GURL& script_url, 181 const GURL& script_url,
182 ServiceWorkerStatusCode expected_status) { 182 ServiceWorkerStatusCode expected_status) {
183 scoped_refptr<ServiceWorkerRegistration> registration; 183 scoped_refptr<ServiceWorkerRegistration> registration;
184 bool called; 184 bool called;
185 job_coordinator()->Register( 185 job_coordinator()->Register(
186 pattern, script_url, NULL, 186 script_url, ServiceWorkerRegistrationOptions(pattern), nullptr,
187 SaveRegistration(expected_status, &called, &registration)); 187 SaveRegistration(expected_status, &called, &registration));
188 EXPECT_FALSE(called); 188 EXPECT_FALSE(called);
189 base::RunLoop().RunUntilIdle(); 189 base::RunLoop().RunUntilIdle();
190 EXPECT_TRUE(called); 190 EXPECT_TRUE(called);
191 return registration; 191 return registration;
192 } 192 }
193 193
194 void ServiceWorkerJobTest::RunUnregisterJob( 194 void ServiceWorkerJobTest::RunUnregisterJob(
195 const GURL& pattern, 195 const GURL& pattern,
196 ServiceWorkerStatusCode expected_status) { 196 ServiceWorkerStatusCode expected_status) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 ASSERT_TRUE(registration1.get()); 246 ASSERT_TRUE(registration1.get());
247 ASSERT_EQ(registration1, original_registration); 247 ASSERT_EQ(registration1, original_registration);
248 ASSERT_EQ(registration1, registration2); 248 ASSERT_EQ(registration1, registration2);
249 } 249 }
250 250
251 TEST_F(ServiceWorkerJobTest, SameMatchSameRegistration) { 251 TEST_F(ServiceWorkerJobTest, SameMatchSameRegistration) {
252 bool called; 252 bool called;
253 scoped_refptr<ServiceWorkerRegistration> original_registration = 253 scoped_refptr<ServiceWorkerRegistration> original_registration =
254 RunRegisterJob(GURL("http://www.example.com/"), 254 RunRegisterJob(GURL("http://www.example.com/"),
255 GURL("http://www.example.com/service_worker.js")); 255 GURL("http://www.example.com/service_worker.js"));
256 ASSERT_NE(static_cast<ServiceWorkerRegistration*>(NULL), 256 ASSERT_NE(static_cast<ServiceWorkerRegistration*>(nullptr),
257 original_registration.get()); 257 original_registration.get());
258 258
259 scoped_refptr<ServiceWorkerRegistration> registration1; 259 scoped_refptr<ServiceWorkerRegistration> registration1;
260 storage()->FindRegistrationForDocument( 260 storage()->FindRegistrationForDocument(
261 GURL("http://www.example.com/one"), 261 GURL("http://www.example.com/one"),
262 SaveFoundRegistration(SERVICE_WORKER_OK, &called, &registration1)); 262 SaveFoundRegistration(SERVICE_WORKER_OK, &called, &registration1));
263 base::RunLoop().RunUntilIdle(); 263 base::RunLoop().RunUntilIdle();
264 EXPECT_TRUE(called); 264 EXPECT_TRUE(called);
265 265
266 scoped_refptr<ServiceWorkerRegistration> registration2; 266 scoped_refptr<ServiceWorkerRegistration> registration2;
267 storage()->FindRegistrationForDocument( 267 storage()->FindRegistrationForDocument(
268 GURL("http://www.example.com/two"), 268 GURL("http://www.example.com/two"),
269 SaveFoundRegistration(SERVICE_WORKER_OK, &called, &registration2)); 269 SaveFoundRegistration(SERVICE_WORKER_OK, &called, &registration2));
270 base::RunLoop().RunUntilIdle(); 270 base::RunLoop().RunUntilIdle();
271 EXPECT_TRUE(called); 271 EXPECT_TRUE(called);
272 ASSERT_EQ(registration1, original_registration); 272 ASSERT_EQ(registration1, original_registration);
273 ASSERT_EQ(registration1, registration2); 273 ASSERT_EQ(registration1, registration2);
274 } 274 }
275 275
276 TEST_F(ServiceWorkerJobTest, DifferentMatchDifferentRegistration) { 276 TEST_F(ServiceWorkerJobTest, DifferentMatchDifferentRegistration) {
277 bool called1; 277 bool called1;
278 scoped_refptr<ServiceWorkerRegistration> original_registration1; 278 scoped_refptr<ServiceWorkerRegistration> original_registration1;
279 job_coordinator()->Register( 279 job_coordinator()->Register(
280 GURL("http://www.example.com/one/"),
281 GURL("http://www.example.com/service_worker.js"), 280 GURL("http://www.example.com/service_worker.js"),
282 NULL, 281 ServiceWorkerRegistrationOptions(GURL("http://www.example.com/one/")),
282 nullptr,
283 SaveRegistration(SERVICE_WORKER_OK, &called1, &original_registration1)); 283 SaveRegistration(SERVICE_WORKER_OK, &called1, &original_registration1));
284 284
285 bool called2; 285 bool called2;
286 scoped_refptr<ServiceWorkerRegistration> original_registration2; 286 scoped_refptr<ServiceWorkerRegistration> original_registration2;
287 job_coordinator()->Register( 287 job_coordinator()->Register(
288 GURL("http://www.example.com/two/"),
289 GURL("http://www.example.com/service_worker.js"), 288 GURL("http://www.example.com/service_worker.js"),
290 NULL, 289 ServiceWorkerRegistrationOptions(GURL("http://www.example.com/two/")),
290 nullptr,
291 SaveRegistration(SERVICE_WORKER_OK, &called2, &original_registration2)); 291 SaveRegistration(SERVICE_WORKER_OK, &called2, &original_registration2));
292 292
293 EXPECT_FALSE(called1); 293 EXPECT_FALSE(called1);
294 EXPECT_FALSE(called2); 294 EXPECT_FALSE(called2);
295 base::RunLoop().RunUntilIdle(); 295 base::RunLoop().RunUntilIdle();
296 EXPECT_TRUE(called2); 296 EXPECT_TRUE(called2);
297 EXPECT_TRUE(called1); 297 EXPECT_TRUE(called1);
298 298
299 scoped_refptr<ServiceWorkerRegistration> registration1; 299 scoped_refptr<ServiceWorkerRegistration> registration1;
300 storage()->FindRegistrationForDocument( 300 storage()->FindRegistrationForDocument(
(...skipping 27 matching lines...) Expand all
328 }; 328 };
329 329
330 // Make sure basic registration is working. 330 // Make sure basic registration is working.
331 TEST_F(ServiceWorkerJobTest, Register) { 331 TEST_F(ServiceWorkerJobTest, Register) {
332 helper_.reset(new RegisterForeignFetchTestHelper); 332 helper_.reset(new RegisterForeignFetchTestHelper);
333 333
334 scoped_refptr<ServiceWorkerRegistration> registration = 334 scoped_refptr<ServiceWorkerRegistration> registration =
335 RunRegisterJob(GURL("http://www.example.com/"), 335 RunRegisterJob(GURL("http://www.example.com/"),
336 GURL("http://www.example.com/service_worker.js")); 336 GURL("http://www.example.com/service_worker.js"));
337 337
338 ASSERT_NE(scoped_refptr<ServiceWorkerRegistration>(NULL), registration); 338 ASSERT_NE(scoped_refptr<ServiceWorkerRegistration>(nullptr), registration);
339 EXPECT_EQ(EmbeddedWorkerTestHelper::Event::Install, 339 EXPECT_EQ(EmbeddedWorkerTestHelper::Event::Install,
340 helper_->dispatched_events()->at(0)); 340 helper_->dispatched_events()->at(0));
341 EXPECT_EQ(EmbeddedWorkerTestHelper::Event::Activate, 341 EXPECT_EQ(EmbeddedWorkerTestHelper::Event::Activate,
342 helper_->dispatched_events()->at(1)); 342 helper_->dispatched_events()->at(1));
343 343
344 GURL valid_scope_1("http://www.example.com/test/subscope"); 344 GURL valid_scope_1("http://www.example.com/test/subscope");
345 GURL valid_scope_2("http://www.example.com/test/othersubscope"); 345 GURL valid_scope_2("http://www.example.com/test/othersubscope");
346 url::Origin valid_origin(GURL("https://chromium.org/")); 346 url::Origin valid_origin(GURL("https://chromium.org/"));
347 347
348 ServiceWorkerVersion* version_ = registration->active_version(); 348 ServiceWorkerVersion* version_ = registration->active_version();
(...skipping 11 matching lines...) Expand all
360 scoped_refptr<ServiceWorkerRegistration> registration = 360 scoped_refptr<ServiceWorkerRegistration> registration =
361 RunRegisterJob(pattern, GURL("http://www.example.com/service_worker.js")); 361 RunRegisterJob(pattern, GURL("http://www.example.com/service_worker.js"));
362 362
363 RunUnregisterJob(pattern); 363 RunUnregisterJob(pattern);
364 364
365 ASSERT_TRUE(registration->HasOneRef()); 365 ASSERT_TRUE(registration->HasOneRef());
366 366
367 registration = FindRegistrationForPattern(pattern, 367 registration = FindRegistrationForPattern(pattern,
368 SERVICE_WORKER_ERROR_NOT_FOUND); 368 SERVICE_WORKER_ERROR_NOT_FOUND);
369 369
370 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(NULL), registration); 370 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(nullptr), registration);
371 } 371 }
372 372
373 TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) { 373 TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) {
374 GURL pattern("http://www.example.com/"); 374 GURL pattern("http://www.example.com/");
375 375
376 RunUnregisterJob(pattern, SERVICE_WORKER_ERROR_NOT_FOUND); 376 RunUnregisterJob(pattern, SERVICE_WORKER_ERROR_NOT_FOUND);
377 } 377 }
378 378
379 // Make sure registering a new script creates a new version and shares an 379 // Make sure registering a new script creates a new version and shares an
380 // existing registration. 380 // existing registration.
381 TEST_F(ServiceWorkerJobTest, RegisterNewScript) { 381 TEST_F(ServiceWorkerJobTest, RegisterNewScript) {
382 GURL pattern("http://www.example.com/"); 382 GURL pattern("http://www.example.com/");
383 383
384 scoped_refptr<ServiceWorkerRegistration> old_registration = 384 scoped_refptr<ServiceWorkerRegistration> old_registration =
385 RunRegisterJob(pattern, GURL("http://www.example.com/service_worker.js")); 385 RunRegisterJob(pattern, GURL("http://www.example.com/service_worker.js"));
386 386
387 scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern = 387 scoped_refptr<ServiceWorkerRegistration> old_registration_by_pattern =
388 FindRegistrationForPattern(pattern); 388 FindRegistrationForPattern(pattern);
389 389
390 ASSERT_EQ(old_registration, old_registration_by_pattern); 390 ASSERT_EQ(old_registration, old_registration_by_pattern);
391 old_registration_by_pattern = NULL; 391 old_registration_by_pattern = nullptr;
392 392
393 scoped_refptr<ServiceWorkerRegistration> new_registration = 393 scoped_refptr<ServiceWorkerRegistration> new_registration =
394 RunRegisterJob(pattern, 394 RunRegisterJob(pattern,
395 GURL("http://www.example.com/service_worker_new.js")); 395 GURL("http://www.example.com/service_worker_new.js"));
396 396
397 ASSERT_EQ(old_registration, new_registration); 397 ASSERT_EQ(old_registration, new_registration);
398 398
399 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern = 399 scoped_refptr<ServiceWorkerRegistration> new_registration_by_pattern =
400 FindRegistrationForPattern(pattern); 400 FindRegistrationForPattern(pattern);
401 401
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 }; 449 };
450 450
451 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) { 451 TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) {
452 helper_.reset(new FailToStartWorkerTestHelper); 452 helper_.reset(new FailToStartWorkerTestHelper);
453 453
454 scoped_refptr<ServiceWorkerRegistration> registration = 454 scoped_refptr<ServiceWorkerRegistration> registration =
455 RunRegisterJob(GURL("http://www.example.com/"), 455 RunRegisterJob(GURL("http://www.example.com/"),
456 GURL("http://www.example.com/service_worker.js"), 456 GURL("http://www.example.com/service_worker.js"),
457 SERVICE_WORKER_ERROR_START_WORKER_FAILED); 457 SERVICE_WORKER_ERROR_START_WORKER_FAILED);
458 458
459 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(NULL), registration); 459 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(nullptr), registration);
460 } 460 }
461 461
462 // Register and then unregister the pattern, in parallel. Job coordinator should 462 // Register and then unregister the pattern, in parallel. Job coordinator should
463 // process jobs until the last job. 463 // process jobs until the last job.
464 TEST_F(ServiceWorkerJobTest, ParallelRegUnreg) { 464 TEST_F(ServiceWorkerJobTest, ParallelRegUnreg) {
465 GURL pattern("http://www.example.com/"); 465 GURL pattern("http://www.example.com/");
466 GURL script_url("http://www.example.com/service_worker.js"); 466 GURL script_url("http://www.example.com/service_worker.js");
467 467
468 bool registration_called = false; 468 bool registration_called = false;
469 scoped_refptr<ServiceWorkerRegistration> registration; 469 scoped_refptr<ServiceWorkerRegistration> registration;
470 job_coordinator()->Register( 470 job_coordinator()->Register(
471 pattern, 471 script_url, ServiceWorkerRegistrationOptions(pattern), nullptr,
472 script_url,
473 NULL,
474 SaveRegistration(SERVICE_WORKER_OK, &registration_called, &registration)); 472 SaveRegistration(SERVICE_WORKER_OK, &registration_called, &registration));
475 473
476 bool unregistration_called = false; 474 bool unregistration_called = false;
477 job_coordinator()->Unregister( 475 job_coordinator()->Unregister(
478 pattern, 476 pattern,
479 SaveUnregistration(SERVICE_WORKER_OK, &unregistration_called)); 477 SaveUnregistration(SERVICE_WORKER_OK, &unregistration_called));
480 478
481 ASSERT_FALSE(registration_called); 479 ASSERT_FALSE(registration_called);
482 ASSERT_FALSE(unregistration_called); 480 ASSERT_FALSE(unregistration_called);
483 base::RunLoop().RunUntilIdle(); 481 base::RunLoop().RunUntilIdle();
484 ASSERT_TRUE(registration_called); 482 ASSERT_TRUE(registration_called);
485 ASSERT_TRUE(unregistration_called); 483 ASSERT_TRUE(unregistration_called);
486 484
487 registration = FindRegistrationForPattern(pattern, 485 registration = FindRegistrationForPattern(pattern,
488 SERVICE_WORKER_ERROR_NOT_FOUND); 486 SERVICE_WORKER_ERROR_NOT_FOUND);
489 487
490 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration); 488 ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
491 } 489 }
492 490
493 // Register conflicting scripts for the same pattern. The most recent 491 // Register conflicting scripts for the same pattern. The most recent
494 // registration should win, and the old registration should have been 492 // registration should win, and the old registration should have been
495 // shutdown. 493 // shutdown.
496 TEST_F(ServiceWorkerJobTest, ParallelRegNewScript) { 494 TEST_F(ServiceWorkerJobTest, ParallelRegNewScript) {
497 GURL pattern("http://www.example.com/"); 495 GURL pattern("http://www.example.com/");
498 496
499 GURL script_url1("http://www.example.com/service_worker1.js"); 497 GURL script_url1("http://www.example.com/service_worker1.js");
500 bool registration1_called = false; 498 bool registration1_called = false;
501 scoped_refptr<ServiceWorkerRegistration> registration1; 499 scoped_refptr<ServiceWorkerRegistration> registration1;
502 job_coordinator()->Register( 500 job_coordinator()->Register(
503 pattern, 501 script_url1, ServiceWorkerRegistrationOptions(pattern), nullptr,
504 script_url1, 502 SaveRegistration(SERVICE_WORKER_OK, &registration1_called,
505 NULL, 503 &registration1));
506 SaveRegistration(
507 SERVICE_WORKER_OK, &registration1_called, &registration1));
508 504
509 GURL script_url2("http://www.example.com/service_worker2.js"); 505 GURL script_url2("http://www.example.com/service_worker2.js");
510 bool registration2_called = false; 506 bool registration2_called = false;
511 scoped_refptr<ServiceWorkerRegistration> registration2; 507 scoped_refptr<ServiceWorkerRegistration> registration2;
512 job_coordinator()->Register( 508 job_coordinator()->Register(
513 pattern, 509 script_url2, ServiceWorkerRegistrationOptions(pattern), nullptr,
514 script_url2, 510 SaveRegistration(SERVICE_WORKER_OK, &registration2_called,
515 NULL, 511 &registration2));
516 SaveRegistration(
517 SERVICE_WORKER_OK, &registration2_called, &registration2));
518 512
519 ASSERT_FALSE(registration1_called); 513 ASSERT_FALSE(registration1_called);
520 ASSERT_FALSE(registration2_called); 514 ASSERT_FALSE(registration2_called);
521 base::RunLoop().RunUntilIdle(); 515 base::RunLoop().RunUntilIdle();
522 ASSERT_TRUE(registration1_called); 516 ASSERT_TRUE(registration1_called);
523 ASSERT_TRUE(registration2_called); 517 ASSERT_TRUE(registration2_called);
524 518
525 scoped_refptr<ServiceWorkerRegistration> registration = 519 scoped_refptr<ServiceWorkerRegistration> registration =
526 FindRegistrationForPattern(pattern); 520 FindRegistrationForPattern(pattern);
527 521
528 ASSERT_EQ(registration2, registration); 522 ASSERT_EQ(registration2, registration);
529 } 523 }
530 524
531 // Register the exact same pattern + script. Requests should be 525 // Register the exact same pattern + script. Requests should be
532 // coalesced such that both callers get the exact same registration 526 // coalesced such that both callers get the exact same registration
533 // object. 527 // object.
534 TEST_F(ServiceWorkerJobTest, ParallelRegSameScript) { 528 TEST_F(ServiceWorkerJobTest, ParallelRegSameScript) {
535 GURL pattern("http://www.example.com/"); 529 GURL pattern("http://www.example.com/");
536 530
537 GURL script_url("http://www.example.com/service_worker1.js"); 531 GURL script_url("http://www.example.com/service_worker1.js");
538 bool registration1_called = false; 532 bool registration1_called = false;
539 scoped_refptr<ServiceWorkerRegistration> registration1; 533 scoped_refptr<ServiceWorkerRegistration> registration1;
540 job_coordinator()->Register( 534 job_coordinator()->Register(
541 pattern, 535 script_url, ServiceWorkerRegistrationOptions(pattern), nullptr,
542 script_url, 536 SaveRegistration(SERVICE_WORKER_OK, &registration1_called,
543 NULL, 537 &registration1));
544 SaveRegistration(
545 SERVICE_WORKER_OK, &registration1_called, &registration1));
546 538
547 bool registration2_called = false; 539 bool registration2_called = false;
548 scoped_refptr<ServiceWorkerRegistration> registration2; 540 scoped_refptr<ServiceWorkerRegistration> registration2;
549 job_coordinator()->Register( 541 job_coordinator()->Register(
550 pattern, 542 script_url, ServiceWorkerRegistrationOptions(pattern), nullptr,
551 script_url, 543 SaveRegistration(SERVICE_WORKER_OK, &registration2_called,
552 NULL, 544 &registration2));
553 SaveRegistration(
554 SERVICE_WORKER_OK, &registration2_called, &registration2));
555 545
556 ASSERT_FALSE(registration1_called); 546 ASSERT_FALSE(registration1_called);
557 ASSERT_FALSE(registration2_called); 547 ASSERT_FALSE(registration2_called);
558 base::RunLoop().RunUntilIdle(); 548 base::RunLoop().RunUntilIdle();
559 ASSERT_TRUE(registration1_called); 549 ASSERT_TRUE(registration1_called);
560 ASSERT_TRUE(registration2_called); 550 ASSERT_TRUE(registration2_called);
561 551
562 ASSERT_EQ(registration1, registration2); 552 ASSERT_EQ(registration1, registration2);
563 553
564 scoped_refptr<ServiceWorkerRegistration> registration = 554 scoped_refptr<ServiceWorkerRegistration> registration =
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 591
602 TEST_F(ServiceWorkerJobTest, AbortAll_Register) { 592 TEST_F(ServiceWorkerJobTest, AbortAll_Register) {
603 GURL pattern1("http://www1.example.com/"); 593 GURL pattern1("http://www1.example.com/");
604 GURL pattern2("http://www2.example.com/"); 594 GURL pattern2("http://www2.example.com/");
605 GURL script_url1("http://www1.example.com/service_worker.js"); 595 GURL script_url1("http://www1.example.com/service_worker.js");
606 GURL script_url2("http://www2.example.com/service_worker.js"); 596 GURL script_url2("http://www2.example.com/service_worker.js");
607 597
608 bool registration_called1 = false; 598 bool registration_called1 = false;
609 scoped_refptr<ServiceWorkerRegistration> registration1; 599 scoped_refptr<ServiceWorkerRegistration> registration1;
610 job_coordinator()->Register( 600 job_coordinator()->Register(
611 pattern1, 601 script_url1, ServiceWorkerRegistrationOptions(pattern1), nullptr,
612 script_url1, 602 SaveRegistration(SERVICE_WORKER_ERROR_ABORT, &registration_called1,
613 NULL, 603 &registration1));
614 SaveRegistration(SERVICE_WORKER_ERROR_ABORT,
615 &registration_called1, &registration1));
616 604
617 bool registration_called2 = false; 605 bool registration_called2 = false;
618 scoped_refptr<ServiceWorkerRegistration> registration2; 606 scoped_refptr<ServiceWorkerRegistration> registration2;
619 job_coordinator()->Register( 607 job_coordinator()->Register(
620 pattern2, 608 script_url2, ServiceWorkerRegistrationOptions(pattern2), nullptr,
621 script_url2, 609 SaveRegistration(SERVICE_WORKER_ERROR_ABORT, &registration_called2,
622 NULL, 610 &registration2));
623 SaveRegistration(SERVICE_WORKER_ERROR_ABORT,
624 &registration_called2, &registration2));
625 611
626 ASSERT_FALSE(registration_called1); 612 ASSERT_FALSE(registration_called1);
627 ASSERT_FALSE(registration_called2); 613 ASSERT_FALSE(registration_called2);
628 job_coordinator()->AbortAll(); 614 job_coordinator()->AbortAll();
629 615
630 base::RunLoop().RunUntilIdle(); 616 base::RunLoop().RunUntilIdle();
631 ASSERT_TRUE(registration_called1); 617 ASSERT_TRUE(registration_called1);
632 ASSERT_TRUE(registration_called2); 618 ASSERT_TRUE(registration_called2);
633 619
634 bool find_called1 = false; 620 bool find_called1 = false;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 ASSERT_TRUE(unregistration_called2); 662 ASSERT_TRUE(unregistration_called2);
677 } 663 }
678 664
679 TEST_F(ServiceWorkerJobTest, AbortAll_RegUnreg) { 665 TEST_F(ServiceWorkerJobTest, AbortAll_RegUnreg) {
680 GURL pattern("http://www.example.com/"); 666 GURL pattern("http://www.example.com/");
681 GURL script_url("http://www.example.com/service_worker.js"); 667 GURL script_url("http://www.example.com/service_worker.js");
682 668
683 bool registration_called = false; 669 bool registration_called = false;
684 scoped_refptr<ServiceWorkerRegistration> registration; 670 scoped_refptr<ServiceWorkerRegistration> registration;
685 job_coordinator()->Register( 671 job_coordinator()->Register(
686 pattern, 672 script_url, ServiceWorkerRegistrationOptions(pattern), nullptr,
687 script_url, 673 SaveRegistration(SERVICE_WORKER_ERROR_ABORT, &registration_called,
688 NULL, 674 &registration));
689 SaveRegistration(SERVICE_WORKER_ERROR_ABORT,
690 &registration_called, &registration));
691 675
692 bool unregistration_called = false; 676 bool unregistration_called = false;
693 job_coordinator()->Unregister( 677 job_coordinator()->Unregister(
694 pattern, 678 pattern,
695 SaveUnregistration(SERVICE_WORKER_ERROR_ABORT, 679 SaveUnregistration(SERVICE_WORKER_ERROR_ABORT,
696 &unregistration_called)); 680 &unregistration_called));
697 681
698 ASSERT_FALSE(registration_called); 682 ASSERT_FALSE(registration_called);
699 ASSERT_FALSE(unregistration_called); 683 ASSERT_FALSE(unregistration_called);
700 job_coordinator()->AbortAll(); 684 job_coordinator()->AbortAll();
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 859
876 void set_force_start_worker_failure(bool force_start_worker_failure) { 860 void set_force_start_worker_failure(bool force_start_worker_failure) {
877 force_start_worker_failure_ = force_start_worker_failure; 861 force_start_worker_failure_ = force_start_worker_failure;
878 } 862 }
879 863
880 scoped_refptr<ServiceWorkerRegistration> SetupInitialRegistration( 864 scoped_refptr<ServiceWorkerRegistration> SetupInitialRegistration(
881 const GURL& test_origin) { 865 const GURL& test_origin) {
882 scoped_refptr<ServiceWorkerRegistration> registration; 866 scoped_refptr<ServiceWorkerRegistration> registration;
883 bool called = false; 867 bool called = false;
884 job_coordinator()->Register( 868 job_coordinator()->Register(
885 test_origin.Resolve(kScope),
886 test_origin.Resolve(kScript), 869 test_origin.Resolve(kScript),
887 NULL, 870 ServiceWorkerRegistrationOptions(test_origin.Resolve(kScope)), nullptr,
888 SaveRegistration(SERVICE_WORKER_OK, &called, &registration)); 871 SaveRegistration(SERVICE_WORKER_OK, &called, &registration));
889 base::RunLoop().RunUntilIdle(); 872 base::RunLoop().RunUntilIdle();
890 EXPECT_TRUE(called); 873 EXPECT_TRUE(called);
891 EXPECT_TRUE(registration.get()); 874 EXPECT_TRUE(registration.get());
892 EXPECT_TRUE(registration->active_version()); 875 EXPECT_TRUE(registration->active_version());
893 EXPECT_FALSE(registration->installing_version()); 876 EXPECT_FALSE(registration->installing_version());
894 EXPECT_FALSE(registration->waiting_version()); 877 EXPECT_FALSE(registration->waiting_version());
895 registration_ = registration; 878 registration_ = registration;
896 return registration; 879 return registration;
897 } 880 }
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
1300 // Update should abort after it starts and sees uninstalling. 1283 // Update should abort after it starts and sees uninstalling.
1301 job_coordinator()->Update(registration.get(), false); 1284 job_coordinator()->Update(registration.get(), false);
1302 1285
1303 EXPECT_FALSE(called); 1286 EXPECT_FALSE(called);
1304 base::RunLoop().RunUntilIdle(); 1287 base::RunLoop().RunUntilIdle();
1305 EXPECT_TRUE(called); 1288 EXPECT_TRUE(called);
1306 1289
1307 // Verify the registration was not modified by the Update. 1290 // Verify the registration was not modified by the Update.
1308 EXPECT_TRUE(registration->is_uninstalling()); 1291 EXPECT_TRUE(registration->is_uninstalling());
1309 EXPECT_EQ(active_version, registration->active_version()); 1292 EXPECT_EQ(active_version, registration->active_version());
1310 EXPECT_EQ(NULL, registration->waiting_version()); 1293 EXPECT_EQ(nullptr, registration->waiting_version());
1311 EXPECT_EQ(NULL, registration->installing_version()); 1294 EXPECT_EQ(nullptr, registration->installing_version());
1312 } 1295 }
1313 1296
1314 TEST_F(ServiceWorkerJobTest, RegisterWhileUninstalling) { 1297 TEST_F(ServiceWorkerJobTest, RegisterWhileUninstalling) {
1315 GURL pattern("http://www.example.com/one/"); 1298 GURL pattern("http://www.example.com/one/");
1316 GURL script1("http://www.example.com/service_worker.js"); 1299 GURL script1("http://www.example.com/service_worker.js");
1317 GURL script2("http://www.example.com/service_worker.js?new"); 1300 GURL script2("http://www.example.com/service_worker.js?new");
1318 1301
1319 scoped_refptr<ServiceWorkerRegistration> registration = 1302 scoped_refptr<ServiceWorkerRegistration> registration =
1320 RunRegisterJob(pattern, script1); 1303 RunRegisterJob(pattern, script1);
1321 scoped_refptr<base::TestSimpleTaskRunner> runner( 1304 scoped_refptr<base::TestSimpleTaskRunner> runner(
(...skipping 10 matching lines...) Expand all
1332 // Register another script. 1315 // Register another script.
1333 EXPECT_EQ(registration, RunRegisterJob(pattern, script2)); 1316 EXPECT_EQ(registration, RunRegisterJob(pattern, script2));
1334 1317
1335 EXPECT_FALSE(registration->is_uninstalling()); 1318 EXPECT_FALSE(registration->is_uninstalling());
1336 EXPECT_EQ(old_version, registration->active_version()); 1319 EXPECT_EQ(old_version, registration->active_version());
1337 1320
1338 scoped_refptr<ServiceWorkerVersion> new_version = 1321 scoped_refptr<ServiceWorkerVersion> new_version =
1339 registration->waiting_version(); 1322 registration->waiting_version();
1340 1323
1341 // Verify the new version is installed but not activated yet. 1324 // Verify the new version is installed but not activated yet.
1342 EXPECT_EQ(NULL, registration->installing_version()); 1325 EXPECT_EQ(nullptr, registration->installing_version());
1343 EXPECT_TRUE(new_version); 1326 EXPECT_TRUE(new_version);
1344 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status()); 1327 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status());
1345 EXPECT_EQ(ServiceWorkerVersion::INSTALLED, new_version->status()); 1328 EXPECT_EQ(ServiceWorkerVersion::INSTALLED, new_version->status());
1346 1329
1347 old_version->RemoveControllee(host.get()); 1330 old_version->RemoveControllee(host.get());
1348 base::RunLoop().RunUntilIdle(); 1331 base::RunLoop().RunUntilIdle();
1349 1332
1350 EXPECT_FALSE(registration->is_uninstalling()); 1333 EXPECT_FALSE(registration->is_uninstalling());
1351 EXPECT_FALSE(registration->is_uninstalled()); 1334 EXPECT_FALSE(registration->is_uninstalled());
1352 1335
1353 // Verify the new version is activated. 1336 // Verify the new version is activated.
1354 EXPECT_EQ(NULL, registration->installing_version()); 1337 EXPECT_EQ(nullptr, registration->installing_version());
1355 EXPECT_EQ(NULL, registration->waiting_version()); 1338 EXPECT_EQ(nullptr, registration->waiting_version());
1356 EXPECT_EQ(new_version, registration->active_version()); 1339 EXPECT_EQ(new_version, registration->active_version());
1357 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status()); 1340 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status());
1358 1341
1359 runner->RunUntilIdle(); 1342 runner->RunUntilIdle();
1360 base::RunLoop().RunUntilIdle(); 1343 base::RunLoop().RunUntilIdle();
1361 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status()); 1344 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status());
1362 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status()); 1345 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status());
1363 } 1346 }
1364 1347
1365 TEST_F(ServiceWorkerJobTest, RegisterAndUnregisterWhileUninstalling) { 1348 TEST_F(ServiceWorkerJobTest, RegisterAndUnregisterWhileUninstalling) {
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1443 EXPECT_FALSE(registration->is_uninstalling()); 1426 EXPECT_FALSE(registration->is_uninstalling());
1444 EXPECT_EQ(new_version, registration->waiting_version()); 1427 EXPECT_EQ(new_version, registration->waiting_version());
1445 1428
1446 old_version->RemoveControllee(host.get()); 1429 old_version->RemoveControllee(host.get());
1447 base::RunLoop().RunUntilIdle(); 1430 base::RunLoop().RunUntilIdle();
1448 1431
1449 EXPECT_FALSE(registration->is_uninstalling()); 1432 EXPECT_FALSE(registration->is_uninstalling());
1450 EXPECT_FALSE(registration->is_uninstalled()); 1433 EXPECT_FALSE(registration->is_uninstalled());
1451 1434
1452 // Verify the new version is activated. 1435 // Verify the new version is activated.
1453 EXPECT_EQ(NULL, registration->installing_version()); 1436 EXPECT_EQ(nullptr, registration->installing_version());
1454 EXPECT_EQ(NULL, registration->waiting_version()); 1437 EXPECT_EQ(nullptr, registration->waiting_version());
1455 EXPECT_EQ(new_version, registration->active_version()); 1438 EXPECT_EQ(new_version, registration->active_version());
1456 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status()); 1439 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status());
1457 1440
1458 runner->RunUntilIdle(); 1441 runner->RunUntilIdle();
1459 base::RunLoop().RunUntilIdle(); 1442 base::RunLoop().RunUntilIdle();
1460 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status()); 1443 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status());
1461 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status()); 1444 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status());
1462 } 1445 }
1463 1446
1464 TEST_F(ServiceWorkerJobTest, RegisterMultipleTimesWhileUninstalling) { 1447 TEST_F(ServiceWorkerJobTest, RegisterMultipleTimesWhileUninstalling) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1499 EXPECT_FALSE(registration->is_uninstalling()); 1482 EXPECT_FALSE(registration->is_uninstalling());
1500 EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, second_version->status()); 1483 EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, second_version->status());
1501 1484
1502 first_version->RemoveControllee(host.get()); 1485 first_version->RemoveControllee(host.get());
1503 base::RunLoop().RunUntilIdle(); 1486 base::RunLoop().RunUntilIdle();
1504 1487
1505 EXPECT_FALSE(registration->is_uninstalling()); 1488 EXPECT_FALSE(registration->is_uninstalling());
1506 EXPECT_FALSE(registration->is_uninstalled()); 1489 EXPECT_FALSE(registration->is_uninstalled());
1507 1490
1508 // Verify the new version is activated. 1491 // Verify the new version is activated.
1509 EXPECT_EQ(NULL, registration->installing_version()); 1492 EXPECT_EQ(nullptr, registration->installing_version());
1510 EXPECT_EQ(NULL, registration->waiting_version()); 1493 EXPECT_EQ(nullptr, registration->waiting_version());
1511 EXPECT_EQ(third_version, registration->active_version()); 1494 EXPECT_EQ(third_version, registration->active_version());
1512 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, third_version->status()); 1495 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, third_version->status());
1513 1496
1514 runner->RunUntilIdle(); 1497 runner->RunUntilIdle();
1515 base::RunLoop().RunUntilIdle(); 1498 base::RunLoop().RunUntilIdle();
1516 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, third_version->running_status()); 1499 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, third_version->running_status());
1517 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, third_version->status()); 1500 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, third_version->status());
1518 } 1501 }
1519 1502
1520 class EventCallbackHelper : public EmbeddedWorkerTestHelper { 1503 class EventCallbackHelper : public EmbeddedWorkerTestHelper {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1585 old_version, host.get())); 1568 old_version, host.get()));
1586 EXPECT_EQ(registration, RunRegisterJob(pattern, script2)); 1569 EXPECT_EQ(registration, RunRegisterJob(pattern, script2));
1587 1570
1588 EXPECT_FALSE(registration->is_uninstalling()); 1571 EXPECT_FALSE(registration->is_uninstalling());
1589 EXPECT_FALSE(registration->is_uninstalled()); 1572 EXPECT_FALSE(registration->is_uninstalled());
1590 1573
1591 // Verify the new version is activated. 1574 // Verify the new version is activated.
1592 scoped_refptr<ServiceWorkerVersion> new_version = 1575 scoped_refptr<ServiceWorkerVersion> new_version =
1593 registration->active_version(); 1576 registration->active_version();
1594 EXPECT_NE(old_version, new_version); 1577 EXPECT_NE(old_version, new_version);
1595 EXPECT_EQ(NULL, registration->installing_version()); 1578 EXPECT_EQ(nullptr, registration->installing_version());
1596 EXPECT_EQ(NULL, registration->waiting_version()); 1579 EXPECT_EQ(nullptr, registration->waiting_version());
1597 EXPECT_EQ(new_version, registration->active_version()); 1580 EXPECT_EQ(new_version, registration->active_version());
1598 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status()); 1581 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, new_version->running_status());
1599 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status()); 1582 EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status());
1600 1583
1601 EXPECT_EQ(registration, FindRegistrationForPattern(pattern)); 1584 EXPECT_EQ(registration, FindRegistrationForPattern(pattern));
1602 } 1585 }
1603 1586
1604 TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringRejectedInstall) { 1587 TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringRejectedInstall) {
1605 EventCallbackHelper* helper = new EventCallbackHelper; 1588 EventCallbackHelper* helper = new EventCallbackHelper;
1606 helper_.reset(helper); 1589 helper_.reset(helper);
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1803 // should not be promoted to ACTIVATED because failure occur 1786 // should not be promoted to ACTIVATED because failure occur
1804 // during shutdown. 1787 // during shutdown.
1805 runner->RunPendingTasks(); 1788 runner->RunPendingTasks();
1806 base::RunLoop().RunUntilIdle(); 1789 base::RunLoop().RunUntilIdle();
1807 EXPECT_EQ(new_version.get(), registration->active_version()); 1790 EXPECT_EQ(new_version.get(), registration->active_version());
1808 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status()); 1791 EXPECT_EQ(ServiceWorkerVersion::ACTIVATING, new_version->status());
1809 registration->RemoveListener(update_helper); 1792 registration->RemoveListener(update_helper);
1810 } 1793 }
1811 1794
1812 } // namespace content 1795 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698