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_url_request_job.h" | 5 #include "content/browser/service_worker/service_worker_url_request_job.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 #include <utility> | 10 #include <utility> |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 TEST_P(ServiceWorkerURLRequestJobTestP, Simple) { | 348 TEST_P(ServiceWorkerURLRequestJobTestP, Simple) { |
349 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 349 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
350 TestRequest(200, "OK", std::string(), true /* expect_valid_ssl */); | 350 TestRequest(200, "OK", std::string(), true /* expect_valid_ssl */); |
351 | 351 |
352 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 352 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
353 ServiceWorkerResponseInfo* info = | 353 ServiceWorkerResponseInfo* info = |
354 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 354 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
355 ASSERT_TRUE(info); | 355 ASSERT_TRUE(info); |
356 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 356 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
357 EXPECT_FALSE(info->was_fallback_required()); | 357 EXPECT_FALSE(info->was_fallback_required()); |
358 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 358 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
359 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 359 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
360 info->response_type_via_service_worker()); | 360 info->response_type_via_service_worker()); |
361 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 361 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
362 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 362 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
363 EXPECT_FALSE(info->response_is_in_cache_storage()); | 363 EXPECT_FALSE(info->response_is_in_cache_storage()); |
364 EXPECT_EQ(std::string(), info->response_cache_storage_cache_name()); | 364 EXPECT_EQ(std::string(), info->response_cache_storage_cache_name()); |
365 } | 365 } |
366 | 366 |
367 TEST_P(ServiceWorkerURLRequestJobTestP, CustomTimeout) { | 367 TEST_P(ServiceWorkerURLRequestJobTestP, CustomTimeout) { |
368 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 368 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
(...skipping 17 matching lines...) Expand all Loading... |
386 void OnFetchEvent(int embedded_worker_id, | 386 void OnFetchEvent(int embedded_worker_id, |
387 int fetch_event_id, | 387 int fetch_event_id, |
388 const ServiceWorkerFetchRequest& request, | 388 const ServiceWorkerFetchRequest& request, |
389 mojom::FetchEventPreloadHandlePtr preload_handle, | 389 mojom::FetchEventPreloadHandlePtr preload_handle, |
390 const FetchCallback& callback) override { | 390 const FetchCallback& callback) override { |
391 context()->RemoveProviderHost(mock_render_process_id(), kProviderID); | 391 context()->RemoveProviderHost(mock_render_process_id(), kProviderID); |
392 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( | 392 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( |
393 embedded_worker_id, fetch_event_id, | 393 embedded_worker_id, fetch_event_id, |
394 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 394 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
395 ServiceWorkerResponse( | 395 ServiceWorkerResponse( |
396 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, | 396 base::MakeUnique<std::vector<GURL>>(), 200, "OK", |
397 ServiceWorkerHeaderMap(), std::string(), 0, GURL(), | 397 blink::WebServiceWorkerResponseTypeDefault, |
398 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), | 398 base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0, |
| 399 GURL(), blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
399 false /* response_is_in_cache_storage */, | 400 false /* response_is_in_cache_storage */, |
400 std::string() /* response_cache_storage_cache_name */, | 401 std::string() /* response_cache_storage_cache_name */, |
401 ServiceWorkerHeaderList() /* cors_exposed_header_names */), | 402 base::MakeUnique< |
| 403 ServiceWorkerHeaderList>() /* cors_exposed_header_names */), |
402 base::Time::Now())); | 404 base::Time::Now())); |
403 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); | 405 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); |
404 } | 406 } |
405 | 407 |
406 private: | 408 private: |
407 DISALLOW_COPY_AND_ASSIGN(ProviderDeleteHelper); | 409 DISALLOW_COPY_AND_ASSIGN(ProviderDeleteHelper); |
408 }; | 410 }; |
409 | 411 |
410 TEST_P(ServiceWorkerURLRequestJobTestP, DeletedProviderHostOnFetchEvent) { | 412 TEST_P(ServiceWorkerURLRequestJobTestP, DeletedProviderHostOnFetchEvent) { |
411 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 413 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
412 // Shouldn't crash if the ProviderHost is deleted prior to completion of | 414 // Shouldn't crash if the ProviderHost is deleted prior to completion of |
413 // the fetch event. | 415 // the fetch event. |
414 SetUpWithHelper(new ProviderDeleteHelper); | 416 SetUpWithHelper(new ProviderDeleteHelper); |
415 | 417 |
416 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 418 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
417 TestRequest(500, "Service Worker Response Error", std::string(), | 419 TestRequest(500, "Service Worker Response Error", std::string(), |
418 false /* expect_valid_ssl */); | 420 false /* expect_valid_ssl */); |
419 | 421 |
420 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 422 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
421 ServiceWorkerResponseInfo* info = | 423 ServiceWorkerResponseInfo* info = |
422 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 424 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
423 ASSERT_TRUE(info); | 425 ASSERT_TRUE(info); |
424 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 426 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
425 EXPECT_FALSE(info->was_fallback_required()); | 427 EXPECT_FALSE(info->was_fallback_required()); |
426 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 428 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
427 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 429 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
428 info->response_type_via_service_worker()); | 430 info->response_type_via_service_worker()); |
429 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 431 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
430 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 432 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
431 } | 433 } |
432 | 434 |
433 TEST_P(ServiceWorkerURLRequestJobTestP, DeletedProviderHostBeforeFetchEvent) { | 435 TEST_P(ServiceWorkerURLRequestJobTestP, DeletedProviderHostBeforeFetchEvent) { |
434 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 436 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
435 request_ = url_request_context_.CreateRequest( | 437 request_ = url_request_context_.CreateRequest( |
436 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, | 438 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
437 &url_request_delegate_); | 439 &url_request_delegate_); |
438 | 440 |
439 request_->set_method("GET"); | 441 request_->set_method("GET"); |
440 request_->Start(); | 442 request_->Start(); |
441 helper_->context()->RemoveProviderHost(helper_->mock_render_process_id(), | 443 helper_->context()->RemoveProviderHost(helper_->mock_render_process_id(), |
442 kProviderID); | 444 kProviderID); |
443 base::RunLoop().RunUntilIdle(); | 445 base::RunLoop().RunUntilIdle(); |
444 TestRequestResult(500, "Service Worker Response Error", std::string(), | 446 TestRequestResult(500, "Service Worker Response Error", std::string(), |
445 false /* expect_valid_ssl */); | 447 false /* expect_valid_ssl */); |
446 | 448 |
447 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 449 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
448 ServiceWorkerResponseInfo* info = | 450 ServiceWorkerResponseInfo* info = |
449 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 451 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
450 ASSERT_TRUE(info); | 452 ASSERT_TRUE(info); |
451 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 453 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
452 EXPECT_FALSE(info->was_fallback_required()); | 454 EXPECT_FALSE(info->was_fallback_required()); |
453 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 455 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
454 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 456 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
455 info->response_type_via_service_worker()); | 457 info->response_type_via_service_worker()); |
456 EXPECT_TRUE(info->service_worker_start_time().is_null()); | 458 EXPECT_TRUE(info->service_worker_start_time().is_null()); |
457 EXPECT_TRUE(info->service_worker_ready_time().is_null()); | 459 EXPECT_TRUE(info->service_worker_ready_time().is_null()); |
458 } | 460 } |
459 | 461 |
460 // Responds to fetch events with a blob. | 462 // Responds to fetch events with a blob. |
461 class BlobResponder : public EmbeddedWorkerTestHelper { | 463 class BlobResponder : public EmbeddedWorkerTestHelper { |
462 public: | 464 public: |
463 BlobResponder(const std::string& blob_uuid, uint64_t blob_size) | 465 BlobResponder(const std::string& blob_uuid, uint64_t blob_size) |
464 : EmbeddedWorkerTestHelper(base::FilePath()), | 466 : EmbeddedWorkerTestHelper(base::FilePath()), |
465 blob_uuid_(blob_uuid), | 467 blob_uuid_(blob_uuid), |
466 blob_size_(blob_size) {} | 468 blob_size_(blob_size) {} |
467 ~BlobResponder() override {} | 469 ~BlobResponder() override {} |
468 | 470 |
469 protected: | 471 protected: |
470 void OnFetchEvent(int embedded_worker_id, | 472 void OnFetchEvent(int embedded_worker_id, |
471 int fetch_event_id, | 473 int fetch_event_id, |
472 const ServiceWorkerFetchRequest& request, | 474 const ServiceWorkerFetchRequest& request, |
473 mojom::FetchEventPreloadHandlePtr preload_handle, | 475 mojom::FetchEventPreloadHandlePtr preload_handle, |
474 const FetchCallback& callback) override { | 476 const FetchCallback& callback) override { |
475 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( | 477 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( |
476 embedded_worker_id, fetch_event_id, | 478 embedded_worker_id, fetch_event_id, |
477 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 479 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
478 ServiceWorkerResponse( | 480 ServiceWorkerResponse( |
479 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, | 481 base::MakeUnique<std::vector<GURL>>(), 200, "OK", |
480 ServiceWorkerHeaderMap(), blob_uuid_, blob_size_, GURL(), | 482 blink::WebServiceWorkerResponseTypeDefault, |
481 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), | 483 base::MakeUnique<ServiceWorkerHeaderMap>(), blob_uuid_, blob_size_, |
| 484 GURL(), blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
482 false /* response_is_in_cache_storage */, | 485 false /* response_is_in_cache_storage */, |
483 std::string() /* response_cache_storage_cache_name */, | 486 std::string() /* response_cache_storage_cache_name */, |
484 ServiceWorkerHeaderList() /* cors_exposed_header_names */), | 487 base::MakeUnique< |
| 488 ServiceWorkerHeaderList>() /* cors_exposed_header_names */), |
485 base::Time::Now())); | 489 base::Time::Now())); |
486 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); | 490 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); |
487 } | 491 } |
488 | 492 |
489 std::string blob_uuid_; | 493 std::string blob_uuid_; |
490 uint64_t blob_size_; | 494 uint64_t blob_size_; |
491 | 495 |
492 private: | 496 private: |
493 DISALLOW_COPY_AND_ASSIGN(BlobResponder); | 497 DISALLOW_COPY_AND_ASSIGN(BlobResponder); |
494 }; | 498 }; |
(...skipping 14 matching lines...) Expand all Loading... |
509 | 513 |
510 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 514 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
511 TestRequest(200, "OK", expected_response, true /* expect_valid_ssl */); | 515 TestRequest(200, "OK", expected_response, true /* expect_valid_ssl */); |
512 | 516 |
513 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 517 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
514 ServiceWorkerResponseInfo* info = | 518 ServiceWorkerResponseInfo* info = |
515 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 519 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
516 ASSERT_TRUE(info); | 520 ASSERT_TRUE(info); |
517 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 521 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
518 EXPECT_FALSE(info->was_fallback_required()); | 522 EXPECT_FALSE(info->was_fallback_required()); |
519 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 523 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
520 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 524 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
521 info->response_type_via_service_worker()); | 525 info->response_type_via_service_worker()); |
522 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 526 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
523 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 527 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
524 } | 528 } |
525 | 529 |
526 TEST_P(ServiceWorkerURLRequestJobTestP, NonExistentBlobUUIDResponse) { | 530 TEST_P(ServiceWorkerURLRequestJobTestP, NonExistentBlobUUIDResponse) { |
527 SetUpWithHelper(new BlobResponder("blob-id:nothing-is-here", 0)); | 531 SetUpWithHelper(new BlobResponder("blob-id:nothing-is-here", 0)); |
528 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 532 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
529 TestRequest(500, "Service Worker Response Error", std::string(), | 533 TestRequest(500, "Service Worker Response Error", std::string(), |
530 true /* expect_valid_ssl */); | 534 true /* expect_valid_ssl */); |
531 | 535 |
532 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 536 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
533 ServiceWorkerResponseInfo* info = | 537 ServiceWorkerResponseInfo* info = |
534 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 538 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
535 ASSERT_TRUE(info); | 539 ASSERT_TRUE(info); |
536 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 540 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
537 EXPECT_FALSE(info->was_fallback_required()); | 541 EXPECT_FALSE(info->was_fallback_required()); |
538 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 542 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
539 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 543 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
540 info->response_type_via_service_worker()); | 544 info->response_type_via_service_worker()); |
541 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 545 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
542 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 546 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
543 } | 547 } |
544 | 548 |
545 // Responds to fetch events with a stream. | 549 // Responds to fetch events with a stream. |
546 class StreamResponder : public EmbeddedWorkerTestHelper { | 550 class StreamResponder : public EmbeddedWorkerTestHelper { |
547 public: | 551 public: |
548 explicit StreamResponder(const GURL& stream_url) | 552 explicit StreamResponder(const GURL& stream_url) |
549 : EmbeddedWorkerTestHelper(base::FilePath()), stream_url_(stream_url) {} | 553 : EmbeddedWorkerTestHelper(base::FilePath()), stream_url_(stream_url) {} |
550 ~StreamResponder() override {} | 554 ~StreamResponder() override {} |
551 | 555 |
552 protected: | 556 protected: |
553 void OnFetchEvent(int embedded_worker_id, | 557 void OnFetchEvent(int embedded_worker_id, |
554 int fetch_event_id, | 558 int fetch_event_id, |
555 const ServiceWorkerFetchRequest& request, | 559 const ServiceWorkerFetchRequest& request, |
556 mojom::FetchEventPreloadHandlePtr preload_handle, | 560 mojom::FetchEventPreloadHandlePtr preload_handle, |
557 const FetchCallback& callback) override { | 561 const FetchCallback& callback) override { |
558 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( | 562 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( |
559 embedded_worker_id, fetch_event_id, | 563 embedded_worker_id, fetch_event_id, |
560 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 564 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
561 ServiceWorkerResponse( | 565 ServiceWorkerResponse( |
562 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, | 566 base::MakeUnique<std::vector<GURL>>(), 200, "OK", |
563 ServiceWorkerHeaderMap(), "", 0, stream_url_, | 567 blink::WebServiceWorkerResponseTypeDefault, |
| 568 base::MakeUnique<ServiceWorkerHeaderMap>(), "", 0, stream_url_, |
564 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), | 569 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
565 false /* response_is_in_cache_storage */, | 570 false /* response_is_in_cache_storage */, |
566 std::string() /* response_cache_storage_cache_name */, | 571 std::string() /* response_cache_storage_cache_name */, |
567 ServiceWorkerHeaderList() /* cors_exposed_header_names */), | 572 base::MakeUnique< |
| 573 ServiceWorkerHeaderList>() /* cors_exposed_header_names */), |
568 base::Time::Now())); | 574 base::Time::Now())); |
569 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); | 575 callback.Run(SERVICE_WORKER_OK, base::Time::Now()); |
570 } | 576 } |
571 | 577 |
572 const GURL stream_url_; | 578 const GURL stream_url_; |
573 | 579 |
574 private: | 580 private: |
575 DISALLOW_COPY_AND_ASSIGN(StreamResponder); | 581 DISALLOW_COPY_AND_ASSIGN(StreamResponder); |
576 }; | 582 }; |
577 | 583 |
(...skipping 29 matching lines...) Expand all Loading... |
607 EXPECT_EQ("OK", | 613 EXPECT_EQ("OK", |
608 request_->response_headers()->GetStatusText()); | 614 request_->response_headers()->GetStatusText()); |
609 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); | 615 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); |
610 | 616 |
611 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 617 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
612 ServiceWorkerResponseInfo* info = | 618 ServiceWorkerResponseInfo* info = |
613 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 619 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
614 ASSERT_TRUE(info); | 620 ASSERT_TRUE(info); |
615 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 621 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
616 EXPECT_FALSE(info->was_fallback_required()); | 622 EXPECT_FALSE(info->was_fallback_required()); |
617 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 623 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
618 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 624 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
619 info->response_type_via_service_worker()); | 625 info->response_type_via_service_worker()); |
620 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 626 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
621 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 627 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
622 | 628 |
623 request_.reset(); | 629 request_.reset(); |
624 EXPECT_FALSE(HasWork()); | 630 EXPECT_FALSE(HasWork()); |
625 } | 631 } |
626 | 632 |
627 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponse_DelayedRegistration) { | 633 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponse_DelayedRegistration) { |
(...skipping 29 matching lines...) Expand all Loading... |
657 EXPECT_EQ("OK", | 663 EXPECT_EQ("OK", |
658 request_->response_headers()->GetStatusText()); | 664 request_->response_headers()->GetStatusText()); |
659 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); | 665 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); |
660 | 666 |
661 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 667 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
662 ServiceWorkerResponseInfo* info = | 668 ServiceWorkerResponseInfo* info = |
663 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 669 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
664 ASSERT_TRUE(info); | 670 ASSERT_TRUE(info); |
665 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 671 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
666 EXPECT_FALSE(info->was_fallback_required()); | 672 EXPECT_FALSE(info->was_fallback_required()); |
667 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 673 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
668 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 674 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
669 info->response_type_via_service_worker()); | 675 info->response_type_via_service_worker()); |
670 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 676 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
671 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 677 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
672 | 678 |
673 request_.reset(); | 679 request_.reset(); |
674 EXPECT_FALSE(HasWork()); | 680 EXPECT_FALSE(HasWork()); |
675 } | 681 } |
676 | 682 |
677 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponse_QuickFinalize) { | 683 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponse_QuickFinalize) { |
(...skipping 27 matching lines...) Expand all Loading... |
705 EXPECT_EQ("OK", | 711 EXPECT_EQ("OK", |
706 request_->response_headers()->GetStatusText()); | 712 request_->response_headers()->GetStatusText()); |
707 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); | 713 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); |
708 | 714 |
709 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 715 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
710 ServiceWorkerResponseInfo* info = | 716 ServiceWorkerResponseInfo* info = |
711 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 717 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
712 ASSERT_TRUE(info); | 718 ASSERT_TRUE(info); |
713 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 719 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
714 EXPECT_FALSE(info->was_fallback_required()); | 720 EXPECT_FALSE(info->was_fallback_required()); |
715 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 721 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
716 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 722 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
717 info->response_type_via_service_worker()); | 723 info->response_type_via_service_worker()); |
718 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 724 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
719 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 725 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
720 | 726 |
721 request_.reset(); | 727 request_.reset(); |
722 EXPECT_FALSE(HasWork()); | 728 EXPECT_FALSE(HasWork()); |
723 } | 729 } |
724 | 730 |
725 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponse_Flush) { | 731 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponse_Flush) { |
(...skipping 28 matching lines...) Expand all Loading... |
754 EXPECT_EQ("OK", | 760 EXPECT_EQ("OK", |
755 request_->response_headers()->GetStatusText()); | 761 request_->response_headers()->GetStatusText()); |
756 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); | 762 EXPECT_EQ(expected_response, url_request_delegate_.response_data()); |
757 | 763 |
758 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 764 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
759 ServiceWorkerResponseInfo* info = | 765 ServiceWorkerResponseInfo* info = |
760 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 766 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
761 ASSERT_TRUE(info); | 767 ASSERT_TRUE(info); |
762 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 768 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
763 EXPECT_FALSE(info->was_fallback_required()); | 769 EXPECT_FALSE(info->was_fallback_required()); |
764 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 770 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
765 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 771 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
766 info->response_type_via_service_worker()); | 772 info->response_type_via_service_worker()); |
767 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 773 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
768 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 774 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
769 } | 775 } |
770 | 776 |
771 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponseAndCancel) { | 777 TEST_P(ServiceWorkerURLRequestJobTestP, StreamResponseAndCancel) { |
772 const GURL stream_url("blob://stream"); | 778 const GURL stream_url("blob://stream"); |
773 StreamContext* stream_context = | 779 StreamContext* stream_context = |
774 GetStreamContextForResourceContext( | 780 GetStreamContextForResourceContext( |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 | 813 |
808 base::RunLoop().RunUntilIdle(); | 814 base::RunLoop().RunUntilIdle(); |
809 EXPECT_FALSE(request_->status().is_success()); | 815 EXPECT_FALSE(request_->status().is_success()); |
810 | 816 |
811 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 817 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
812 ServiceWorkerResponseInfo* info = | 818 ServiceWorkerResponseInfo* info = |
813 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 819 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
814 ASSERT_TRUE(info); | 820 ASSERT_TRUE(info); |
815 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 821 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
816 EXPECT_FALSE(info->was_fallback_required()); | 822 EXPECT_FALSE(info->was_fallback_required()); |
817 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 823 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
818 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 824 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
819 info->response_type_via_service_worker()); | 825 info->response_type_via_service_worker()); |
820 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 826 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
821 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 827 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
822 } | 828 } |
823 | 829 |
824 TEST_P(ServiceWorkerURLRequestJobTestP, | 830 TEST_P(ServiceWorkerURLRequestJobTestP, |
825 StreamResponse_DelayedRegistrationAndCancel) { | 831 StreamResponse_DelayedRegistrationAndCancel) { |
826 const GURL stream_url("blob://stream"); | 832 const GURL stream_url("blob://stream"); |
827 StreamContext* stream_context = | 833 StreamContext* stream_context = |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
919 EXPECT_TRUE(request_->status().is_success()); | 925 EXPECT_TRUE(request_->status().is_success()); |
920 EXPECT_EQ(200, request_->GetResponseCode()); | 926 EXPECT_EQ(200, request_->GetResponseCode()); |
921 EXPECT_EQ("", url_request_delegate_.response_data()); | 927 EXPECT_EQ("", url_request_delegate_.response_data()); |
922 | 928 |
923 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 929 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
924 ServiceWorkerResponseInfo* info = | 930 ServiceWorkerResponseInfo* info = |
925 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 931 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
926 ASSERT_TRUE(info); | 932 ASSERT_TRUE(info); |
927 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 933 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
928 EXPECT_FALSE(info->was_fallback_required()); | 934 EXPECT_FALSE(info->was_fallback_required()); |
929 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 935 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
930 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 936 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
931 info->response_type_via_service_worker()); | 937 info->response_type_via_service_worker()); |
932 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 938 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
933 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 939 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
934 } | 940 } |
935 | 941 |
936 TEST_P(ServiceWorkerURLRequestJobTestP, FailToActivate_MainResource) { | 942 TEST_P(ServiceWorkerURLRequestJobTestP, FailToActivate_MainResource) { |
937 RunFailToActivateTest(RESOURCE_TYPE_MAIN_FRAME); | 943 RunFailToActivateTest(RESOURCE_TYPE_MAIN_FRAME); |
938 | 944 |
939 // The load should fail and we should have fallen back to network because | 945 // The load should fail and we should have fallen back to network because |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
979 void OnFetchEvent(int embedded_worker_id, | 985 void OnFetchEvent(int embedded_worker_id, |
980 int fetch_event_id, | 986 int fetch_event_id, |
981 const ServiceWorkerFetchRequest& request, | 987 const ServiceWorkerFetchRequest& request, |
982 mojom::FetchEventPreloadHandlePtr preload_handle, | 988 mojom::FetchEventPreloadHandlePtr preload_handle, |
983 const FetchCallback& callback) override { | 989 const FetchCallback& callback) override { |
984 callback_ = callback; | 990 callback_ = callback; |
985 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( | 991 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( |
986 embedded_worker_id, fetch_event_id, | 992 embedded_worker_id, fetch_event_id, |
987 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 993 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
988 ServiceWorkerResponse( | 994 ServiceWorkerResponse( |
989 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, | 995 base::MakeUnique<std::vector<GURL>>(), 200, "OK", |
990 ServiceWorkerHeaderMap(), std::string(), 0, GURL(), | 996 blink::WebServiceWorkerResponseTypeDefault, |
991 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), | 997 base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0, |
| 998 GURL(), blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
992 false /* response_is_in_cache_storage */, | 999 false /* response_is_in_cache_storage */, |
993 std::string() /* response_cache_storage_cache_name */, | 1000 std::string() /* response_cache_storage_cache_name */, |
994 ServiceWorkerHeaderList() /* cors_exposed_header_names */), | 1001 base::MakeUnique< |
| 1002 ServiceWorkerHeaderList>() /* cors_exposed_header_names */), |
995 base::Time::Now())); | 1003 base::Time::Now())); |
996 } | 1004 } |
997 | 1005 |
998 private: | 1006 private: |
999 FetchCallback callback_; | 1007 FetchCallback callback_; |
1000 DISALLOW_COPY_AND_ASSIGN(EarlyResponseHelper); | 1008 DISALLOW_COPY_AND_ASSIGN(EarlyResponseHelper); |
1001 }; | 1009 }; |
1002 | 1010 |
1003 // This simulates the case when a response is returned and the fetch event is | 1011 // This simulates the case when a response is returned and the fetch event is |
1004 // still in flight. | 1012 // still in flight. |
1005 TEST_P(ServiceWorkerURLRequestJobTestP, EarlyResponse) { | 1013 TEST_P(ServiceWorkerURLRequestJobTestP, EarlyResponse) { |
1006 EarlyResponseHelper* helper = new EarlyResponseHelper; | 1014 EarlyResponseHelper* helper = new EarlyResponseHelper; |
1007 SetUpWithHelper(helper); | 1015 SetUpWithHelper(helper); |
1008 | 1016 |
1009 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 1017 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
1010 TestRequest(200, "OK", std::string(), true /* expect_valid_ssl */); | 1018 TestRequest(200, "OK", std::string(), true /* expect_valid_ssl */); |
1011 | 1019 |
1012 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 1020 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
1013 ServiceWorkerResponseInfo* info = | 1021 ServiceWorkerResponseInfo* info = |
1014 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 1022 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
1015 ASSERT_TRUE(info); | 1023 ASSERT_TRUE(info); |
1016 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 1024 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
1017 EXPECT_FALSE(info->was_fallback_required()); | 1025 EXPECT_FALSE(info->was_fallback_required()); |
1018 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 1026 EXPECT_EQ(0u, info->url_list_via_service_worker().size()); |
1019 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 1027 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
1020 info->response_type_via_service_worker()); | 1028 info->response_type_via_service_worker()); |
1021 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 1029 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
1022 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 1030 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
1023 EXPECT_FALSE(info->response_is_in_cache_storage()); | 1031 EXPECT_FALSE(info->response_is_in_cache_storage()); |
1024 EXPECT_EQ(std::string(), info->response_cache_storage_cache_name()); | 1032 EXPECT_EQ(std::string(), info->response_cache_storage_cache_name()); |
1025 | 1033 |
1026 EXPECT_TRUE(version_->HasWork()); | 1034 EXPECT_TRUE(version_->HasWork()); |
1027 helper->FinishWaitUntil(); | 1035 helper->FinishWaitUntil(); |
1028 base::RunLoop().RunUntilIdle(); | 1036 base::RunLoop().RunUntilIdle(); |
1029 EXPECT_FALSE(version_->HasWork()); | 1037 EXPECT_FALSE(version_->HasWork()); |
1030 } | 1038 } |
1031 | 1039 |
1032 // Helper for controlling when to respond to a fetch event. | 1040 // Helper for controlling when to respond to a fetch event. |
1033 class DelayedResponseHelper : public EmbeddedWorkerTestHelper { | 1041 class DelayedResponseHelper : public EmbeddedWorkerTestHelper { |
1034 public: | 1042 public: |
1035 DelayedResponseHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {} | 1043 DelayedResponseHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {} |
1036 ~DelayedResponseHelper() override {} | 1044 ~DelayedResponseHelper() override {} |
1037 | 1045 |
1038 void Respond() { | 1046 void Respond() { |
1039 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( | 1047 SimulateSend(new ServiceWorkerHostMsg_FetchEventResponse( |
1040 embedded_worker_id_, fetch_event_id_, | 1048 embedded_worker_id_, fetch_event_id_, |
1041 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, | 1049 SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE, |
1042 ServiceWorkerResponse( | 1050 ServiceWorkerResponse( |
1043 GURL(), 200, "OK", blink::WebServiceWorkerResponseTypeDefault, | 1051 base::MakeUnique<std::vector<GURL>>(), 200, "OK", |
1044 ServiceWorkerHeaderMap(), std::string(), 0, GURL(), | 1052 blink::WebServiceWorkerResponseTypeDefault, |
1045 blink::WebServiceWorkerResponseErrorUnknown, base::Time(), | 1053 base::MakeUnique<ServiceWorkerHeaderMap>(), std::string(), 0, |
| 1054 GURL(), blink::WebServiceWorkerResponseErrorUnknown, base::Time(), |
1046 false /* response_is_in_cache_storage */, | 1055 false /* response_is_in_cache_storage */, |
1047 std::string() /* response_cache_storage_cache_name */, | 1056 std::string() /* response_cache_storage_cache_name */, |
1048 ServiceWorkerHeaderList() /* cors_exposed_header_names */), | 1057 base::MakeUnique< |
| 1058 ServiceWorkerHeaderList>() /* cors_exposed_header_names */), |
1049 base::Time::Now())); | 1059 base::Time::Now())); |
1050 callback_.Run(SERVICE_WORKER_OK, base::Time::Now()); | 1060 callback_.Run(SERVICE_WORKER_OK, base::Time::Now()); |
1051 } | 1061 } |
1052 | 1062 |
1053 protected: | 1063 protected: |
1054 void OnFetchEvent(int embedded_worker_id, | 1064 void OnFetchEvent(int embedded_worker_id, |
1055 int fetch_event_id, | 1065 int fetch_event_id, |
1056 const ServiceWorkerFetchRequest& request, | 1066 const ServiceWorkerFetchRequest& request, |
1057 mojom::FetchEventPreloadHandlePtr preload_handle, | 1067 mojom::FetchEventPreloadHandlePtr preload_handle, |
1058 const FetchCallback& callback) override { | 1068 const FetchCallback& callback) override { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 } | 1107 } |
1098 | 1108 |
1099 // TODO(kinuko): Add more tests with different response data and also for | 1109 // TODO(kinuko): Add more tests with different response data and also for |
1100 // FallbackToNetwork case. | 1110 // FallbackToNetwork case. |
1101 | 1111 |
1102 INSTANTIATE_TEST_CASE_P(ServiceWorkerURLRequestJobTest, | 1112 INSTANTIATE_TEST_CASE_P(ServiceWorkerURLRequestJobTest, |
1103 ServiceWorkerURLRequestJobTestP, | 1113 ServiceWorkerURLRequestJobTestP, |
1104 testing::Bool()); | 1114 testing::Bool()); |
1105 | 1115 |
1106 } // namespace content | 1116 } // namespace content |
OLD | NEW |