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 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 browser_context_.reset(new TestBrowserContext); | 136 browser_context_.reset(new TestBrowserContext); |
137 InitializeResourceContext(browser_context_.get()); | 137 InitializeResourceContext(browser_context_.get()); |
138 SetUpWithHelper(new EmbeddedWorkerTestHelper(base::FilePath())); | 138 SetUpWithHelper(new EmbeddedWorkerTestHelper(base::FilePath())); |
139 } | 139 } |
140 | 140 |
141 void SetUpWithHelper(EmbeddedWorkerTestHelper* helper, | 141 void SetUpWithHelper(EmbeddedWorkerTestHelper* helper, |
142 bool set_main_script_http_response_info = true) { | 142 bool set_main_script_http_response_info = true) { |
143 helper_.reset(helper); | 143 helper_.reset(helper); |
144 | 144 |
145 registration_ = new ServiceWorkerRegistration( | 145 registration_ = new ServiceWorkerRegistration( |
146 GURL("http://example.com/"), | 146 GURL("https://example.com/"), 1L, helper_->context()->AsWeakPtr()); |
147 1L, | |
148 helper_->context()->AsWeakPtr()); | |
149 version_ = new ServiceWorkerVersion( | 147 version_ = new ServiceWorkerVersion( |
150 registration_.get(), | 148 registration_.get(), GURL("https://example.com/service_worker.js"), 1L, |
151 GURL("http://example.com/service_worker.js"), | |
152 1L, | |
153 helper_->context()->AsWeakPtr()); | 149 helper_->context()->AsWeakPtr()); |
154 std::vector<ServiceWorkerDatabase::ResourceRecord> records; | 150 std::vector<ServiceWorkerDatabase::ResourceRecord> records; |
155 records.push_back( | 151 records.push_back( |
156 ServiceWorkerDatabase::ResourceRecord(10, version_->script_url(), 100)); | 152 ServiceWorkerDatabase::ResourceRecord(10, version_->script_url(), 100)); |
157 version_->script_cache_map()->SetResources(records); | 153 version_->script_cache_map()->SetResources(records); |
158 | 154 |
159 // Make the registration findable via storage functions. | 155 // Make the registration findable via storage functions. |
160 helper_->context()->storage()->LazyInitialize(base::Bind(&base::DoNothing)); | 156 helper_->context()->storage()->LazyInitialize(base::Bind(&base::DoNothing)); |
161 base::RunLoop().RunUntilIdle(); | 157 base::RunLoop().RunUntilIdle(); |
162 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 158 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
(...skipping 11 matching lines...) Expand all Loading... |
174 EXPECT_TRUE(http_info.ssl_info.is_valid()); | 170 EXPECT_TRUE(http_info.ssl_info.is_valid()); |
175 http_info.ssl_info.security_bits = 0x100; | 171 http_info.ssl_info.security_bits = 0x100; |
176 // SSL3 TLS_DHE_RSA_WITH_AES_256_CBC_SHA | 172 // SSL3 TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
177 http_info.ssl_info.connection_status = 0x300039; | 173 http_info.ssl_info.connection_status = 0x300039; |
178 version_->SetMainScriptHttpResponseInfo(http_info); | 174 version_->SetMainScriptHttpResponseInfo(http_info); |
179 } | 175 } |
180 | 176 |
181 std::unique_ptr<ServiceWorkerProviderHost> provider_host( | 177 std::unique_ptr<ServiceWorkerProviderHost> provider_host( |
182 new ServiceWorkerProviderHost( | 178 new ServiceWorkerProviderHost( |
183 helper_->mock_render_process_id(), MSG_ROUTING_NONE, kProviderID, | 179 helper_->mock_render_process_id(), MSG_ROUTING_NONE, kProviderID, |
184 SERVICE_WORKER_PROVIDER_FOR_WINDOW, helper_->context()->AsWeakPtr(), | 180 SERVICE_WORKER_PROVIDER_FOR_WINDOW, |
185 nullptr)); | 181 ServiceWorkerProviderHost::FrameSecurityLevel::SECURE, |
| 182 helper_->context()->AsWeakPtr(), nullptr)); |
186 provider_host_ = provider_host->AsWeakPtr(); | 183 provider_host_ = provider_host->AsWeakPtr(); |
187 provider_host->SetDocumentUrl(GURL("http://example.com/")); | 184 provider_host->SetDocumentUrl(GURL("https://example.com/")); |
188 registration_->SetActiveVersion(version_); | 185 registration_->SetActiveVersion(version_); |
189 provider_host->AssociateRegistration(registration_.get(), | 186 provider_host->AssociateRegistration(registration_.get(), |
190 false /* notify_controllerchange */); | 187 false /* notify_controllerchange */); |
191 | 188 |
192 ChromeBlobStorageContext* chrome_blob_storage_context = | 189 ChromeBlobStorageContext* chrome_blob_storage_context = |
193 ChromeBlobStorageContext::GetFor(browser_context_.get()); | 190 ChromeBlobStorageContext::GetFor(browser_context_.get()); |
194 // Wait for chrome_blob_storage_context to finish initializing. | 191 // Wait for chrome_blob_storage_context to finish initializing. |
195 base::RunLoop().RunUntilIdle(); | 192 base::RunLoop().RunUntilIdle(); |
196 storage::BlobStorageContext* blob_storage_context = | 193 storage::BlobStorageContext* blob_storage_context = |
197 chrome_blob_storage_context->context(); | 194 chrome_blob_storage_context->context(); |
198 | 195 |
199 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl); | 196 url_request_job_factory_.reset(new net::URLRequestJobFactoryImpl); |
200 url_request_job_factory_->SetProtocolHandler( | 197 url_request_job_factory_->SetProtocolHandler( |
201 "http", | 198 "https", |
202 base::WrapUnique(new MockHttpProtocolHandler( | 199 base::WrapUnique(new MockHttpProtocolHandler( |
203 provider_host->AsWeakPtr(), browser_context_->GetResourceContext(), | 200 provider_host->AsWeakPtr(), browser_context_->GetResourceContext(), |
204 blob_storage_context->AsWeakPtr(), this))); | 201 blob_storage_context->AsWeakPtr(), this))); |
205 url_request_job_factory_->SetProtocolHandler( | 202 url_request_job_factory_->SetProtocolHandler( |
206 "blob", CreateMockBlobProtocolHandler(blob_storage_context)); | 203 "blob", CreateMockBlobProtocolHandler(blob_storage_context)); |
207 url_request_context_.set_job_factory(url_request_job_factory_.get()); | 204 url_request_context_.set_job_factory(url_request_job_factory_.get()); |
208 | 205 |
209 helper_->context()->AddProviderHost(std::move(provider_host)); | 206 helper_->context()->AddProviderHost(std::move(provider_host)); |
210 } | 207 } |
211 | 208 |
(...skipping 21 matching lines...) Expand all Loading... |
233 } else { | 230 } else { |
234 EXPECT_FALSE(ssl_info.is_valid()); | 231 EXPECT_FALSE(ssl_info.is_valid()); |
235 } | 232 } |
236 } | 233 } |
237 | 234 |
238 void TestRequest(int expected_status_code, | 235 void TestRequest(int expected_status_code, |
239 const std::string& expected_status_text, | 236 const std::string& expected_status_text, |
240 const std::string& expected_response, | 237 const std::string& expected_response, |
241 bool expect_valid_ssl) { | 238 bool expect_valid_ssl) { |
242 request_ = url_request_context_.CreateRequest( | 239 request_ = url_request_context_.CreateRequest( |
243 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 240 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
244 &url_request_delegate_); | 241 &url_request_delegate_); |
245 | 242 |
246 request_->set_method("GET"); | 243 request_->set_method("GET"); |
247 request_->Start(); | 244 request_->Start(); |
248 base::RunLoop().RunUntilIdle(); | 245 base::RunLoop().RunUntilIdle(); |
249 TestRequestResult(expected_status_code, expected_status_text, | 246 TestRequestResult(expected_status_code, expected_status_text, |
250 expected_response, expect_valid_ssl); | 247 expected_response, expect_valid_ssl); |
251 } | 248 } |
252 | 249 |
253 bool HasInflightRequests() { | 250 bool HasInflightRequests() { |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 367 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); |
371 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 368 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
372 info->response_type_via_service_worker()); | 369 info->response_type_via_service_worker()); |
373 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 370 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
374 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 371 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
375 } | 372 } |
376 | 373 |
377 TEST_F(ServiceWorkerURLRequestJobTest, DeletedProviderHostBeforeFetchEvent) { | 374 TEST_F(ServiceWorkerURLRequestJobTest, DeletedProviderHostBeforeFetchEvent) { |
378 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 375 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
379 request_ = url_request_context_.CreateRequest( | 376 request_ = url_request_context_.CreateRequest( |
380 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 377 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
381 &url_request_delegate_); | 378 &url_request_delegate_); |
382 | 379 |
383 request_->set_method("GET"); | 380 request_->set_method("GET"); |
384 request_->Start(); | 381 request_->Start(); |
385 helper_->context()->RemoveProviderHost(helper_->mock_render_process_id(), | 382 helper_->context()->RemoveProviderHost(helper_->mock_render_process_id(), |
386 kProviderID); | 383 kProviderID); |
387 base::RunLoop().RunUntilIdle(); | 384 base::RunLoop().RunUntilIdle(); |
388 TestRequestResult(500, "Service Worker Response Error", std::string(), | 385 TestRequestResult(500, "Service Worker Response Error", std::string(), |
389 false /* expect_valid_ssl */); | 386 false /* expect_valid_ssl */); |
390 | 387 |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 TEST_F(ServiceWorkerURLRequestJobTest, StreamResponse) { | 511 TEST_F(ServiceWorkerURLRequestJobTest, StreamResponse) { |
515 const GURL stream_url("blob://stream"); | 512 const GURL stream_url("blob://stream"); |
516 StreamContext* stream_context = | 513 StreamContext* stream_context = |
517 GetStreamContextForResourceContext( | 514 GetStreamContextForResourceContext( |
518 browser_context_->GetResourceContext()); | 515 browser_context_->GetResourceContext()); |
519 scoped_refptr<Stream> stream = | 516 scoped_refptr<Stream> stream = |
520 new Stream(stream_context->registry(), nullptr, stream_url); | 517 new Stream(stream_context->registry(), nullptr, stream_url); |
521 SetUpWithHelper(new StreamResponder(stream_url)); | 518 SetUpWithHelper(new StreamResponder(stream_url)); |
522 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 519 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
523 request_ = url_request_context_.CreateRequest( | 520 request_ = url_request_context_.CreateRequest( |
524 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 521 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
525 &url_request_delegate_); | 522 &url_request_delegate_); |
526 request_->set_method("GET"); | 523 request_->set_method("GET"); |
527 request_->Start(); | 524 request_->Start(); |
528 | 525 |
529 std::string expected_response; | 526 std::string expected_response; |
530 expected_response.reserve((sizeof(kTestData) - 1) * 1024); | 527 expected_response.reserve((sizeof(kTestData) - 1) * 1024); |
531 for (int i = 0; i < 1024; ++i) { | 528 for (int i = 0; i < 1024; ++i) { |
532 expected_response += kTestData; | 529 expected_response += kTestData; |
533 stream->AddData(kTestData, sizeof(kTestData) - 1); | 530 stream->AddData(kTestData, sizeof(kTestData) - 1); |
534 } | 531 } |
(...skipping 27 matching lines...) Expand all Loading... |
562 | 559 |
563 TEST_F(ServiceWorkerURLRequestJobTest, StreamResponse_DelayedRegistration) { | 560 TEST_F(ServiceWorkerURLRequestJobTest, StreamResponse_DelayedRegistration) { |
564 const GURL stream_url("blob://stream"); | 561 const GURL stream_url("blob://stream"); |
565 StreamContext* stream_context = | 562 StreamContext* stream_context = |
566 GetStreamContextForResourceContext( | 563 GetStreamContextForResourceContext( |
567 browser_context_->GetResourceContext()); | 564 browser_context_->GetResourceContext()); |
568 SetUpWithHelper(new StreamResponder(stream_url)); | 565 SetUpWithHelper(new StreamResponder(stream_url)); |
569 | 566 |
570 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 567 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
571 request_ = url_request_context_.CreateRequest( | 568 request_ = url_request_context_.CreateRequest( |
572 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 569 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
573 &url_request_delegate_); | 570 &url_request_delegate_); |
574 request_->set_method("GET"); | 571 request_->set_method("GET"); |
575 request_->Start(); | 572 request_->Start(); |
576 | 573 |
577 scoped_refptr<Stream> stream = | 574 scoped_refptr<Stream> stream = |
578 new Stream(stream_context->registry(), nullptr, stream_url); | 575 new Stream(stream_context->registry(), nullptr, stream_url); |
579 std::string expected_response; | 576 std::string expected_response; |
580 expected_response.reserve((sizeof(kTestData) - 1) * 1024); | 577 expected_response.reserve((sizeof(kTestData) - 1) * 1024); |
581 for (int i = 0; i < 1024; ++i) { | 578 for (int i = 0; i < 1024; ++i) { |
582 expected_response += kTestData; | 579 expected_response += kTestData; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 expected_response.reserve((sizeof(kTestData) - 1) * 1024); | 619 expected_response.reserve((sizeof(kTestData) - 1) * 1024); |
623 for (int i = 0; i < 1024; ++i) { | 620 for (int i = 0; i < 1024; ++i) { |
624 expected_response += kTestData; | 621 expected_response += kTestData; |
625 stream->AddData(kTestData, sizeof(kTestData) - 1); | 622 stream->AddData(kTestData, sizeof(kTestData) - 1); |
626 } | 623 } |
627 stream->Finalize(); | 624 stream->Finalize(); |
628 SetUpWithHelper(new StreamResponder(stream_url)); | 625 SetUpWithHelper(new StreamResponder(stream_url)); |
629 | 626 |
630 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 627 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
631 request_ = url_request_context_.CreateRequest( | 628 request_ = url_request_context_.CreateRequest( |
632 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 629 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
633 &url_request_delegate_); | 630 &url_request_delegate_); |
634 request_->set_method("GET"); | 631 request_->set_method("GET"); |
635 request_->Start(); | 632 request_->Start(); |
636 EXPECT_FALSE(HasInflightRequests()); | 633 EXPECT_FALSE(HasInflightRequests()); |
637 base::RunLoop().RunUntilIdle(); | 634 base::RunLoop().RunUntilIdle(); |
638 EXPECT_TRUE(HasInflightRequests()); | 635 EXPECT_TRUE(HasInflightRequests()); |
639 EXPECT_TRUE(request_->status().is_success()); | 636 EXPECT_TRUE(request_->status().is_success()); |
640 EXPECT_EQ(200, | 637 EXPECT_EQ(200, |
641 request_->response_headers()->response_code()); | 638 request_->response_headers()->response_code()); |
642 EXPECT_EQ("OK", | 639 EXPECT_EQ("OK", |
(...skipping 21 matching lines...) Expand all Loading... |
664 const GURL stream_url("blob://stream"); | 661 const GURL stream_url("blob://stream"); |
665 StreamContext* stream_context = | 662 StreamContext* stream_context = |
666 GetStreamContextForResourceContext( | 663 GetStreamContextForResourceContext( |
667 browser_context_->GetResourceContext()); | 664 browser_context_->GetResourceContext()); |
668 scoped_refptr<Stream> stream = | 665 scoped_refptr<Stream> stream = |
669 new Stream(stream_context->registry(), nullptr, stream_url); | 666 new Stream(stream_context->registry(), nullptr, stream_url); |
670 SetUpWithHelper(new StreamResponder(stream_url)); | 667 SetUpWithHelper(new StreamResponder(stream_url)); |
671 | 668 |
672 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 669 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
673 request_ = url_request_context_.CreateRequest( | 670 request_ = url_request_context_.CreateRequest( |
674 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 671 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
675 &url_request_delegate_); | 672 &url_request_delegate_); |
676 request_->set_method("GET"); | 673 request_->set_method("GET"); |
677 request_->Start(); | 674 request_->Start(); |
678 std::string expected_response; | 675 std::string expected_response; |
679 expected_response.reserve((sizeof(kTestData) - 1) * 1024); | 676 expected_response.reserve((sizeof(kTestData) - 1) * 1024); |
680 for (int i = 0; i < 1024; ++i) { | 677 for (int i = 0; i < 1024; ++i) { |
681 expected_response += kTestData; | 678 expected_response += kTestData; |
682 stream->AddData(kTestData, sizeof(kTestData) - 1); | 679 stream->AddData(kTestData, sizeof(kTestData) - 1); |
683 stream->Flush(); | 680 stream->Flush(); |
684 base::RunLoop().RunUntilIdle(); | 681 base::RunLoop().RunUntilIdle(); |
(...skipping 27 matching lines...) Expand all Loading... |
712 GetStreamContextForResourceContext( | 709 GetStreamContextForResourceContext( |
713 browser_context_->GetResourceContext()); | 710 browser_context_->GetResourceContext()); |
714 scoped_refptr<Stream> stream = | 711 scoped_refptr<Stream> stream = |
715 new Stream(stream_context->registry(), nullptr, stream_url); | 712 new Stream(stream_context->registry(), nullptr, stream_url); |
716 ASSERT_EQ(stream.get(), | 713 ASSERT_EQ(stream.get(), |
717 stream_context->registry()->GetStream(stream_url).get()); | 714 stream_context->registry()->GetStream(stream_url).get()); |
718 SetUpWithHelper(new StreamResponder(stream_url)); | 715 SetUpWithHelper(new StreamResponder(stream_url)); |
719 | 716 |
720 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 717 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
721 request_ = url_request_context_.CreateRequest( | 718 request_ = url_request_context_.CreateRequest( |
722 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 719 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
723 &url_request_delegate_); | 720 &url_request_delegate_); |
724 request_->set_method("GET"); | 721 request_->set_method("GET"); |
725 request_->Start(); | 722 request_->Start(); |
726 EXPECT_FALSE(HasInflightRequests()); | 723 EXPECT_FALSE(HasInflightRequests()); |
727 base::RunLoop().RunUntilIdle(); | 724 base::RunLoop().RunUntilIdle(); |
728 EXPECT_TRUE(HasInflightRequests()); | 725 EXPECT_TRUE(HasInflightRequests()); |
729 | 726 |
730 std::string expected_response; | 727 std::string expected_response; |
731 expected_response.reserve((sizeof(kTestData) - 1) * 1024); | 728 expected_response.reserve((sizeof(kTestData) - 1) * 1024); |
732 for (int i = 0; i < 512; ++i) { | 729 for (int i = 0; i < 512; ++i) { |
(...skipping 29 matching lines...) Expand all Loading... |
762 TEST_F(ServiceWorkerURLRequestJobTest, | 759 TEST_F(ServiceWorkerURLRequestJobTest, |
763 StreamResponse_DelayedRegistrationAndCancel) { | 760 StreamResponse_DelayedRegistrationAndCancel) { |
764 const GURL stream_url("blob://stream"); | 761 const GURL stream_url("blob://stream"); |
765 StreamContext* stream_context = | 762 StreamContext* stream_context = |
766 GetStreamContextForResourceContext( | 763 GetStreamContextForResourceContext( |
767 browser_context_->GetResourceContext()); | 764 browser_context_->GetResourceContext()); |
768 SetUpWithHelper(new StreamResponder(stream_url)); | 765 SetUpWithHelper(new StreamResponder(stream_url)); |
769 | 766 |
770 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 767 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
771 request_ = url_request_context_.CreateRequest( | 768 request_ = url_request_context_.CreateRequest( |
772 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 769 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
773 &url_request_delegate_); | 770 &url_request_delegate_); |
774 request_->set_method("GET"); | 771 request_->set_method("GET"); |
775 request_->Start(); | 772 request_->Start(); |
776 EXPECT_FALSE(HasInflightRequests()); | 773 EXPECT_FALSE(HasInflightRequests()); |
777 base::RunLoop().RunUntilIdle(); | 774 base::RunLoop().RunUntilIdle(); |
778 EXPECT_TRUE(HasInflightRequests()); | 775 EXPECT_TRUE(HasInflightRequests()); |
779 request_->Cancel(); | 776 request_->Cancel(); |
780 EXPECT_FALSE(HasInflightRequests()); | 777 EXPECT_FALSE(HasInflightRequests()); |
781 | 778 |
782 scoped_refptr<Stream> stream = | 779 scoped_refptr<Stream> stream = |
(...skipping 26 matching lines...) Expand all Loading... |
809 | 806 |
810 private: | 807 private: |
811 DISALLOW_COPY_AND_ASSIGN(FailFetchHelper); | 808 DISALLOW_COPY_AND_ASSIGN(FailFetchHelper); |
812 }; | 809 }; |
813 | 810 |
814 TEST_F(ServiceWorkerURLRequestJobTest, FailFetchDispatch) { | 811 TEST_F(ServiceWorkerURLRequestJobTest, FailFetchDispatch) { |
815 SetUpWithHelper(new FailFetchHelper); | 812 SetUpWithHelper(new FailFetchHelper); |
816 | 813 |
817 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 814 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
818 request_ = url_request_context_.CreateRequest( | 815 request_ = url_request_context_.CreateRequest( |
819 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 816 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
820 &url_request_delegate_); | 817 &url_request_delegate_); |
821 request_->set_method("GET"); | 818 request_->set_method("GET"); |
822 request_->Start(); | 819 request_->Start(); |
823 | 820 |
824 base::RunLoop().RunUntilIdle(); | 821 base::RunLoop().RunUntilIdle(); |
825 EXPECT_TRUE(request_->status().is_success()); | 822 EXPECT_TRUE(request_->status().is_success()); |
826 // We should have fallen back to network. | 823 // We should have fallen back to network. |
827 EXPECT_EQ(200, request_->GetResponseCode()); | 824 EXPECT_EQ(200, request_->GetResponseCode()); |
828 EXPECT_EQ("PASS", url_request_delegate_.response_data()); | 825 EXPECT_EQ("PASS", url_request_delegate_.response_data()); |
829 EXPECT_FALSE(HasInflightRequests()); | 826 EXPECT_FALSE(HasInflightRequests()); |
830 ServiceWorkerProviderHost* host = helper_->context()->GetProviderHost( | 827 ServiceWorkerProviderHost* host = helper_->context()->GetProviderHost( |
831 helper_->mock_render_process_id(), kProviderID); | 828 helper_->mock_render_process_id(), kProviderID); |
832 ASSERT_TRUE(host); | 829 ASSERT_TRUE(host); |
833 EXPECT_EQ(host->controlling_version(), nullptr); | 830 EXPECT_EQ(host->controlling_version(), nullptr); |
834 | 831 |
835 EXPECT_EQ(1, times_prepare_to_restart_invoked_); | 832 EXPECT_EQ(1, times_prepare_to_restart_invoked_); |
836 ServiceWorkerResponseInfo* info = | 833 ServiceWorkerResponseInfo* info = |
837 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 834 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
838 ASSERT_TRUE(info); | 835 ASSERT_TRUE(info); |
839 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 836 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
840 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 837 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
841 } | 838 } |
842 | 839 |
843 // TODO(horo): Remove this test when crbug.com/485900 is fixed. | 840 // TODO(horo): Remove this test when crbug.com/485900 is fixed. |
844 TEST_F(ServiceWorkerURLRequestJobTest, MainScriptHTTPResponseInfoNotSet) { | 841 TEST_F(ServiceWorkerURLRequestJobTest, MainScriptHTTPResponseInfoNotSet) { |
845 // Shouldn't crash if MainScriptHttpResponseInfo is not set. | 842 // Shouldn't crash if MainScriptHttpResponseInfo is not set. |
846 SetUpWithHelper(new EmbeddedWorkerTestHelper(base::FilePath()), false); | 843 SetUpWithHelper(new EmbeddedWorkerTestHelper(base::FilePath()), false); |
847 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 844 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
848 request_ = url_request_context_.CreateRequest( | 845 request_ = url_request_context_.CreateRequest( |
849 GURL("http://example.com/foo.html"), net::DEFAULT_PRIORITY, | 846 GURL("https://example.com/foo.html"), net::DEFAULT_PRIORITY, |
850 &url_request_delegate_); | 847 &url_request_delegate_); |
851 request_->set_method("GET"); | 848 request_->set_method("GET"); |
852 request_->Start(); | 849 request_->Start(); |
853 base::RunLoop().RunUntilIdle(); | 850 base::RunLoop().RunUntilIdle(); |
854 EXPECT_TRUE(request_->status().is_success()); | 851 EXPECT_TRUE(request_->status().is_success()); |
855 EXPECT_EQ(200, request_->GetResponseCode()); | 852 EXPECT_EQ(200, request_->GetResponseCode()); |
856 EXPECT_EQ("", url_request_delegate_.response_data()); | 853 EXPECT_EQ("", url_request_delegate_.response_data()); |
857 | 854 |
858 EXPECT_EQ(0, times_prepare_to_restart_invoked_); | 855 EXPECT_EQ(0, times_prepare_to_restart_invoked_); |
859 ServiceWorkerResponseInfo* info = | 856 ServiceWorkerResponseInfo* info = |
860 ServiceWorkerResponseInfo::ForRequest(request_.get()); | 857 ServiceWorkerResponseInfo::ForRequest(request_.get()); |
861 ASSERT_TRUE(info); | 858 ASSERT_TRUE(info); |
862 EXPECT_TRUE(info->was_fetched_via_service_worker()); | 859 EXPECT_TRUE(info->was_fetched_via_service_worker()); |
863 EXPECT_FALSE(info->was_fallback_required()); | 860 EXPECT_FALSE(info->was_fallback_required()); |
864 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); | 861 EXPECT_EQ(GURL(), info->original_url_via_service_worker()); |
865 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, | 862 EXPECT_EQ(blink::WebServiceWorkerResponseTypeDefault, |
866 info->response_type_via_service_worker()); | 863 info->response_type_via_service_worker()); |
867 EXPECT_FALSE(info->service_worker_start_time().is_null()); | 864 EXPECT_FALSE(info->service_worker_start_time().is_null()); |
868 EXPECT_FALSE(info->service_worker_ready_time().is_null()); | 865 EXPECT_FALSE(info->service_worker_ready_time().is_null()); |
869 } | 866 } |
870 | 867 |
871 // TODO(kinuko): Add more tests with different response data and also for | 868 // TODO(kinuko): Add more tests with different response data and also for |
872 // FallbackToNetwork case. | 869 // FallbackToNetwork case. |
873 | 870 |
874 } // namespace content | 871 } // namespace content |
OLD | NEW |