Index: content/browser/service_worker/service_worker_registration_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc |
index e06387b3f76d0851ff701227aeb8088b9ae5cb73..c7924b63f720f8b48de3de3be1f71f3d0c8c7374 100644 |
--- a/content/browser/service_worker/service_worker_registration_unittest.cc |
+++ b/content/browser/service_worker/service_worker_registration_unittest.cc |
@@ -184,6 +184,42 @@ TEST_P(ServiceWorkerRegistrationTestP, FailedRegistrationNoCrash) { |
// Don't crash when handle gets destructed. |
} |
+TEST_P(ServiceWorkerRegistrationTestP, NavigationPreload) { |
+ const GURL kScope("http://www.example.not/"); |
+ const GURL kScript("https://www.example.not/service_worker.js"); |
+ // Setup. |
+ scoped_refptr<ServiceWorkerRegistration> registration = |
+ new ServiceWorkerRegistration(kScope, storage()->NewRegistrationId(), |
+ context()->AsWeakPtr()); |
+ scoped_refptr<ServiceWorkerVersion> version_1 = new ServiceWorkerVersion( |
+ registration.get(), kScript, storage()->NewVersionId(), |
+ context()->AsWeakPtr()); |
+ version_1->set_fetch_handler_existence( |
+ ServiceWorkerVersion::FetchHandlerExistence::EXISTS); |
+ registration->SetActiveVersion(version_1); |
+ version_1->SetStatus(ServiceWorkerVersion::ACTIVATED); |
+ scoped_refptr<ServiceWorkerVersion> version_2 = new ServiceWorkerVersion( |
+ registration.get(), kScript, storage()->NewVersionId(), |
+ context()->AsWeakPtr()); |
+ version_2->set_fetch_handler_existence( |
+ ServiceWorkerVersion::FetchHandlerExistence::EXISTS); |
+ registration->SetWaitingVersion(version_2); |
+ version_2->SetStatus(ServiceWorkerVersion::INSTALLED); |
+ |
+ // Navigation preload is disabled by default. |
+ EXPECT_FALSE(version_1->navigation_preload_enabled()); |
+ // Enabling it sets the flag on the active version. |
+ registration->EnableNavigationPreload(true); |
+ EXPECT_TRUE(version_1->navigation_preload_enabled()); |
+ // A new active version gets the flag. |
+ registration->SetActiveVersion(version_2); |
+ version_2->SetStatus(ServiceWorkerVersion::ACTIVATING); |
+ EXPECT_TRUE(version_2->navigation_preload_enabled()); |
+ // Disabling it unsets the flag on the active version. |
+ registration->EnableNavigationPreload(false); |
+ EXPECT_FALSE(version_2->navigation_preload_enabled()); |
+} |
+ |
// Sets up a registration with a waiting worker, and an active worker |
// with a controllee and an inflight request. |
class ServiceWorkerActivationTest : public ServiceWorkerRegistrationTestP { |