Index: content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
index 37330150cf04cd9b1f4d01a96483d190486b95c7..5582f6491943c9b3561db5fb174602654d7b9c48 100644 |
--- a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
+++ b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc |
@@ -131,6 +131,7 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, DisallowServiceWorker) { |
// Store an activated worker. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
+ version_->set_has_fetch_handler(true); |
registration_->SetActiveVersion(version_); |
context()->storage()->StoreRegistration( |
registration_.get(), |
@@ -171,6 +172,7 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, DisallowServiceWorker) { |
TEST_F(ServiceWorkerControlleeRequestHandlerTest, ActivateWaitingVersion) { |
// Store a registration that is installed but not activated yet. |
version_->SetStatus(ServiceWorkerVersion::INSTALLED); |
+ version_->set_has_fetch_handler(true); |
registration_->SetWaitingVersion(version_); |
context()->storage()->StoreRegistration( |
registration_.get(), |
@@ -216,6 +218,7 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, ActivateWaitingVersion) { |
TEST_F(ServiceWorkerControlleeRequestHandlerTest, InstallingRegistration) { |
// Create an installing registration. |
version_->SetStatus(ServiceWorkerVersion::INSTALLING); |
+ version_->set_has_fetch_handler(true); |
registration_->SetInstallingVersion(version_); |
context()->storage()->NotifyInstallingRegistration(registration_.get()); |
@@ -250,6 +253,7 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, DeletedProviderHost) { |
// Store a registration so the call to FindRegistrationForDocument will read |
// from the database. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
+ version_->set_has_fetch_handler(true); |
registration_->SetActiveVersion(version_); |
context()->storage()->StoreRegistration( |
registration_.get(), |
@@ -289,4 +293,41 @@ TEST_F(ServiceWorkerControlleeRequestHandlerTest, DeletedProviderHost) { |
EXPECT_FALSE(sw_job->ShouldForwardToServiceWorker()); |
} |
+TEST_F(ServiceWorkerControlleeRequestHandlerTest, FallbackWithNoFetchHandler) { |
+ version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
+ version_->set_has_fetch_handler(false); |
+ registration_->SetActiveVersion(version_); |
+ context()->storage()->StoreRegistration( |
+ registration_.get(), version_.get(), |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ // Conduct a main resource load. |
+ const GURL kDocUrl("http://host/scope/doc"); |
+ std::unique_ptr<net::URLRequest> request = url_request_context_.CreateRequest( |
+ kDocUrl, net::DEFAULT_PRIORITY, &url_request_delegate_); |
+ std::unique_ptr<ServiceWorkerControlleeRequestHandler> handler( |
+ new ServiceWorkerControlleeRequestHandler( |
+ context()->AsWeakPtr(), provider_host_, |
+ base::WeakPtr<storage::BlobStorageContext>(), |
+ FETCH_REQUEST_MODE_NO_CORS, FETCH_CREDENTIALS_MODE_OMIT, |
+ FetchRedirectMode::FOLLOW_MODE, RESOURCE_TYPE_MAIN_FRAME, |
+ REQUEST_CONTEXT_TYPE_HYPERLINK, REQUEST_CONTEXT_FRAME_TYPE_TOP_LEVEL, |
+ scoped_refptr<ResourceRequestBody>())); |
+ std::unique_ptr<net::URLRequestJob> job( |
+ handler->MaybeCreateJob(request.get(), nullptr, &mock_resource_context_)); |
+ ServiceWorkerURLRequestJob* sw_job = |
+ static_cast<ServiceWorkerURLRequestJob*>(job.get()); |
+ |
+ EXPECT_FALSE(sw_job->ShouldFallbackToNetwork()); |
+ EXPECT_FALSE(sw_job->ShouldForwardToServiceWorker()); |
+ EXPECT_FALSE(version_->HasControllee()); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ EXPECT_TRUE(sw_job->ShouldFallbackToNetwork()); |
+ EXPECT_FALSE(sw_job->ShouldForwardToServiceWorker()); |
+ EXPECT_TRUE(version_->HasControllee()); |
+ EXPECT_EQ(version_, provider_host_->controlling_version()); |
falken
2016/05/30 06:11:29
Would it be possible to add a test for the subreso
shimazu
2016/05/30 09:45:33
Done.
Could you take a look if this null check is
|
+} |
falken
2016/05/30 06:11:29
We usually add a blink line here, but I won't comp
shimazu
2016/05/30 09:45:33
git-cl format accepts w/ and w/o a blank line.
Ad
|
} // namespace content |