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

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

Issue 2516353002: Introduce url_list to the Response scheme of CacheStorage. (Closed)
Patch Set: implicit conversion WebURL <-> GURL and WebVector <- vector Created 4 years 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 "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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_url_request_job.cc ('k') | content/child/web_url_loader_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698