| Index: content/browser/service_worker/service_worker_job_unittest.cc
|
| diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
|
| index 50ed74f0556acac3d53aa4d02cd68d9c9ee55cc7..5ea9d11a0724baac9a6ef88b1157dee414d3094b 100644
|
| --- a/content/browser/service_worker/service_worker_job_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_job_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/files/scoped_temp_dir.h"
|
| #include "base/logging.h"
|
| #include "base/macros.h"
|
| +#include "base/optional.h"
|
| #include "base/run_loop.h"
|
| #include "base/test/test_simple_task_runner.h"
|
| #include "base/time/time.h"
|
| @@ -142,6 +143,9 @@ class ServiceWorkerJobTest : public testing::Test {
|
| std::unique_ptr<EmbeddedWorkerTestHelper> helper_;
|
| };
|
|
|
| +class ServiceWorkerJobTestP
|
| + : public MojoServiceWorkerTestP<ServiceWorkerJobTest> {};
|
| +
|
| scoped_refptr<ServiceWorkerRegistration> ServiceWorkerJobTest::RunRegisterJob(
|
| const GURL& pattern,
|
| const GURL& script_url,
|
| @@ -195,7 +199,7 @@ ServiceWorkerJobTest::CreateControllee() {
|
| helper_->context()->AsWeakPtr(), NULL));
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, SameDocumentSameRegistration) {
|
| +TEST_P(ServiceWorkerJobTestP, SameDocumentSameRegistration) {
|
| scoped_refptr<ServiceWorkerRegistration> original_registration =
|
| RunRegisterJob(GURL("http://www.example.com/"),
|
| GURL("http://www.example.com/service_worker.js"));
|
| @@ -215,7 +219,7 @@ TEST_F(ServiceWorkerJobTest, SameDocumentSameRegistration) {
|
| ASSERT_EQ(registration1, registration2);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, SameMatchSameRegistration) {
|
| +TEST_P(ServiceWorkerJobTestP, SameMatchSameRegistration) {
|
| bool called;
|
| scoped_refptr<ServiceWorkerRegistration> original_registration =
|
| RunRegisterJob(GURL("http://www.example.com/"),
|
| @@ -240,7 +244,7 @@ TEST_F(ServiceWorkerJobTest, SameMatchSameRegistration) {
|
| ASSERT_EQ(registration1, registration2);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, DifferentMatchDifferentRegistration) {
|
| +TEST_P(ServiceWorkerJobTestP, DifferentMatchDifferentRegistration) {
|
| bool called1;
|
| scoped_refptr<ServiceWorkerRegistration> original_registration1;
|
| job_coordinator()->Register(
|
| @@ -279,7 +283,7 @@ TEST_F(ServiceWorkerJobTest, DifferentMatchDifferentRegistration) {
|
| }
|
|
|
| // Make sure basic registration is working.
|
| -TEST_F(ServiceWorkerJobTest, Register) {
|
| +TEST_P(ServiceWorkerJobTestP, Register) {
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| RunRegisterJob(GURL("http://www.example.com/"),
|
| GURL("http://www.example.com/service_worker.js"));
|
| @@ -290,7 +294,7 @@ TEST_F(ServiceWorkerJobTest, Register) {
|
| }
|
|
|
| // Make sure registrations are cleaned up when they are unregistered.
|
| -TEST_F(ServiceWorkerJobTest, Unregister) {
|
| +TEST_P(ServiceWorkerJobTestP, Unregister) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| @@ -306,7 +310,7 @@ TEST_F(ServiceWorkerJobTest, Unregister) {
|
| ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(NULL), registration);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) {
|
| +TEST_P(ServiceWorkerJobTestP, Unregister_NothingRegistered) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| RunUnregisterJob(pattern, SERVICE_WORKER_ERROR_NOT_FOUND);
|
| @@ -314,7 +318,7 @@ TEST_F(ServiceWorkerJobTest, Unregister_NothingRegistered) {
|
|
|
| // Make sure registering a new script creates a new version and shares an
|
| // existing registration.
|
| -TEST_F(ServiceWorkerJobTest, RegisterNewScript) {
|
| +TEST_P(ServiceWorkerJobTestP, RegisterNewScript) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| scoped_refptr<ServiceWorkerRegistration> old_registration =
|
| @@ -340,7 +344,7 @@ TEST_F(ServiceWorkerJobTest, RegisterNewScript) {
|
|
|
| // Make sure that when registering a duplicate pattern+script_url
|
| // combination, that the same registration is used.
|
| -TEST_F(ServiceWorkerJobTest, RegisterDuplicateScript) {
|
| +TEST_P(ServiceWorkerJobTestP, RegisterDuplicateScript) {
|
| GURL pattern("http://www.example.com/");
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| @@ -379,7 +383,7 @@ class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
|
| }
|
| };
|
|
|
| -TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) {
|
| +TEST_P(ServiceWorkerJobTestP, Register_FailToStartWorker) {
|
| helper_.reset(new FailToStartWorkerTestHelper);
|
|
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| @@ -392,7 +396,7 @@ TEST_F(ServiceWorkerJobTest, Register_FailToStartWorker) {
|
|
|
| // Register and then unregister the pattern, in parallel. Job coordinator should
|
| // process jobs until the last job.
|
| -TEST_F(ServiceWorkerJobTest, ParallelRegUnreg) {
|
| +TEST_P(ServiceWorkerJobTestP, ParallelRegUnreg) {
|
| GURL pattern("http://www.example.com/");
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| @@ -424,7 +428,7 @@ TEST_F(ServiceWorkerJobTest, ParallelRegUnreg) {
|
| // Register conflicting scripts for the same pattern. The most recent
|
| // registration should win, and the old registration should have been
|
| // shutdown.
|
| -TEST_F(ServiceWorkerJobTest, ParallelRegNewScript) {
|
| +TEST_P(ServiceWorkerJobTestP, ParallelRegNewScript) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| GURL script_url1("http://www.example.com/service_worker1.js");
|
| @@ -462,7 +466,7 @@ TEST_F(ServiceWorkerJobTest, ParallelRegNewScript) {
|
| // Register the exact same pattern + script. Requests should be
|
| // coalesced such that both callers get the exact same registration
|
| // object.
|
| -TEST_F(ServiceWorkerJobTest, ParallelRegSameScript) {
|
| +TEST_P(ServiceWorkerJobTestP, ParallelRegSameScript) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| GURL script_url("http://www.example.com/service_worker1.js");
|
| @@ -499,7 +503,7 @@ TEST_F(ServiceWorkerJobTest, ParallelRegSameScript) {
|
| }
|
|
|
| // Call simulataneous unregister calls.
|
| -TEST_F(ServiceWorkerJobTest, ParallelUnreg) {
|
| +TEST_P(ServiceWorkerJobTestP, ParallelUnreg) {
|
| GURL pattern("http://www.example.com/");
|
|
|
| GURL script_url("http://www.example.com/service_worker.js");
|
| @@ -530,7 +534,7 @@ TEST_F(ServiceWorkerJobTest, ParallelUnreg) {
|
| ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, AbortAll_Register) {
|
| +TEST_P(ServiceWorkerJobTestP, AbortAll_Register) {
|
| GURL pattern1("http://www1.example.com/");
|
| GURL pattern2("http://www2.example.com/");
|
| GURL script_url1("http://www1.example.com/service_worker.js");
|
| @@ -581,7 +585,7 @@ TEST_F(ServiceWorkerJobTest, AbortAll_Register) {
|
| EXPECT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration2);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, AbortAll_Unregister) {
|
| +TEST_P(ServiceWorkerJobTestP, AbortAll_Unregister) {
|
| GURL pattern1("http://www1.example.com/");
|
| GURL pattern2("http://www2.example.com/");
|
|
|
| @@ -607,7 +611,7 @@ TEST_F(ServiceWorkerJobTest, AbortAll_Unregister) {
|
| ASSERT_TRUE(unregistration_called2);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, AbortAll_RegUnreg) {
|
| +TEST_P(ServiceWorkerJobTestP, AbortAll_RegUnreg) {
|
| GURL pattern("http://www.example.com/");
|
| GURL script_url("http://www.example.com/service_worker.js");
|
|
|
| @@ -642,7 +646,7 @@ TEST_F(ServiceWorkerJobTest, AbortAll_RegUnreg) {
|
|
|
| // Tests that the waiting worker enters the 'redundant' state upon
|
| // unregistration.
|
| -TEST_F(ServiceWorkerJobTest, UnregisterWaitingSetsRedundant) {
|
| +TEST_P(ServiceWorkerJobTestP, UnregisterWaitingSetsRedundant) {
|
| GURL script_url("http://www.example.com/service_worker.js");
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| RunRegisterJob(GURL("http://www.example.com/"), script_url);
|
| @@ -675,7 +679,7 @@ TEST_F(ServiceWorkerJobTest, UnregisterWaitingSetsRedundant) {
|
|
|
| // Tests that the active worker enters the 'redundant' state upon
|
| // unregistration.
|
| -TEST_F(ServiceWorkerJobTest, UnregisterActiveSetsRedundant) {
|
| +TEST_P(ServiceWorkerJobTestP, UnregisterActiveSetsRedundant) {
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| RunRegisterJob(GURL("http://www.example.com/"),
|
| GURL("http://www.example.com/service_worker.js"));
|
| @@ -695,7 +699,7 @@ TEST_F(ServiceWorkerJobTest, UnregisterActiveSetsRedundant) {
|
|
|
| // Tests that the active worker enters the 'redundant' state upon
|
| // unregistration.
|
| -TEST_F(ServiceWorkerJobTest,
|
| +TEST_P(ServiceWorkerJobTestP,
|
| UnregisterActiveSetsRedundant_WaitForNoControllee) {
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| RunRegisterJob(GURL("http://www.example.com/"),
|
| @@ -961,7 +965,7 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
|
|
|
| } // namespace
|
|
|
| -TEST_F(ServiceWorkerJobTest, Update_NoChange) {
|
| +TEST_P(ServiceWorkerJobTestP, Update_NoChange) {
|
| UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
|
| helper_.reset(update_helper);
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| @@ -999,7 +1003,7 @@ TEST_F(ServiceWorkerJobTest, Update_NoChange) {
|
| EXPECT_FALSE(update_helper->update_found_);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, Update_BumpLastUpdateCheckTime) {
|
| +TEST_P(ServiceWorkerJobTestP, Update_BumpLastUpdateCheckTime) {
|
| const base::Time kToday = base::Time::Now();
|
| const base::Time kYesterday =
|
| kToday - base::TimeDelta::FromDays(1) - base::TimeDelta::FromHours(1);
|
| @@ -1048,7 +1052,7 @@ TEST_F(ServiceWorkerJobTest, Update_BumpLastUpdateCheckTime) {
|
| EXPECT_LT(kYesterday, registration->last_update_check());
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, Update_NewVersion) {
|
| +TEST_P(ServiceWorkerJobTestP, Update_NewVersion) {
|
| UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
|
| helper_.reset(update_helper);
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| @@ -1140,7 +1144,7 @@ TEST_F(ServiceWorkerJobTest, Update_NewVersion) {
|
|
|
| // Test that the update job uses the script URL of the newest worker when the
|
| // job starts, rather than when it is scheduled.
|
| -TEST_F(ServiceWorkerJobTest, Update_ScriptUrlChanged) {
|
| +TEST_P(ServiceWorkerJobTestP, Update_ScriptUrlChanged) {
|
| // Create a registration with an active version.
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| RunRegisterJob(GURL("http://www.example.com/one/"),
|
| @@ -1168,7 +1172,7 @@ TEST_F(ServiceWorkerJobTest, Update_ScriptUrlChanged) {
|
|
|
| // Test that update succeeds if the incumbent worker was evicted
|
| // during the update job (this can happen on disk cache failure).
|
| -TEST_F(ServiceWorkerJobTest, Update_EvictedIncumbent) {
|
| +TEST_P(ServiceWorkerJobTestP, Update_EvictedIncumbent) {
|
| EvictIncumbentVersionHelper* update_helper = new EvictIncumbentVersionHelper;
|
| helper_.reset(update_helper);
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| @@ -1197,7 +1201,7 @@ TEST_F(ServiceWorkerJobTest, Update_EvictedIncumbent) {
|
| EXPECT_FALSE(registration->is_uninstalled());
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, Update_UninstallingRegistration) {
|
| +TEST_P(ServiceWorkerJobTestP, Update_UninstallingRegistration) {
|
| bool called;
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| RunRegisterJob(GURL("http://www.example.com/one/"),
|
| @@ -1224,7 +1228,7 @@ TEST_F(ServiceWorkerJobTest, Update_UninstallingRegistration) {
|
| EXPECT_EQ(NULL, registration->installing_version());
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, RegisterWhileUninstalling) {
|
| +TEST_P(ServiceWorkerJobTestP, RegisterWhileUninstalling) {
|
| GURL pattern("http://www.example.com/one/");
|
| GURL script1("http://www.example.com/service_worker.js");
|
| GURL script2("http://www.example.com/service_worker.js?new");
|
| @@ -1275,7 +1279,7 @@ TEST_F(ServiceWorkerJobTest, RegisterWhileUninstalling) {
|
| EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status());
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, RegisterAndUnregisterWhileUninstalling) {
|
| +TEST_P(ServiceWorkerJobTestP, RegisterAndUnregisterWhileUninstalling) {
|
| GURL pattern("http://www.example.com/one/");
|
| GURL script1("http://www.example.com/service_worker.js");
|
| GURL script2("http://www.example.com/service_worker.js?new");
|
| @@ -1323,7 +1327,8 @@ TEST_F(ServiceWorkerJobTest, RegisterAndUnregisterWhileUninstalling) {
|
| EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, new_version->status());
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, RegisterSameScriptMultipleTimesWhileUninstalling) {
|
| +TEST_P(ServiceWorkerJobTestP,
|
| + RegisterSameScriptMultipleTimesWhileUninstalling) {
|
| GURL pattern("http://www.example.com/one/");
|
| GURL script1("http://www.example.com/service_worker.js");
|
| GURL script2("http://www.example.com/service_worker.js?new");
|
| @@ -1374,7 +1379,7 @@ TEST_F(ServiceWorkerJobTest, RegisterSameScriptMultipleTimesWhileUninstalling) {
|
| EXPECT_EQ(ServiceWorkerVersion::ACTIVATED, new_version->status());
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, RegisterMultipleTimesWhileUninstalling) {
|
| +TEST_P(ServiceWorkerJobTestP, RegisterMultipleTimesWhileUninstalling) {
|
| GURL pattern("http://www.example.com/one/");
|
| GURL script1("http://www.example.com/service_worker.js?first");
|
| GURL script2("http://www.example.com/service_worker.js?second");
|
| @@ -1471,7 +1476,7 @@ class EventCallbackHelper : public EmbeddedWorkerTestHelper {
|
| bool has_fetch_handler_ = true;
|
| };
|
|
|
| -TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall) {
|
| +TEST_P(ServiceWorkerJobTestP, RemoveControlleeDuringInstall) {
|
| EventCallbackHelper* helper = new EventCallbackHelper;
|
| helper_.reset(helper);
|
|
|
| @@ -1511,7 +1516,7 @@ TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall) {
|
| EXPECT_EQ(registration, FindRegistrationForPattern(pattern));
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringRejectedInstall) {
|
| +TEST_P(ServiceWorkerJobTestP, RemoveControlleeDuringRejectedInstall) {
|
| EventCallbackHelper* helper = new EventCallbackHelper;
|
| helper_.reset(helper);
|
|
|
| @@ -1547,7 +1552,7 @@ TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringRejectedInstall) {
|
| FindRegistrationForPattern(pattern, SERVICE_WORKER_ERROR_NOT_FOUND);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall_RejectActivate) {
|
| +TEST_P(ServiceWorkerJobTestP, RemoveControlleeDuringInstall_RejectActivate) {
|
| EventCallbackHelper* helper = new EventCallbackHelper;
|
| helper_.reset(helper);
|
|
|
| @@ -1583,7 +1588,7 @@ TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall_RejectActivate) {
|
| FindRegistrationForPattern(pattern, SERVICE_WORKER_OK);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, HasFetchHandler) {
|
| +TEST_P(ServiceWorkerJobTestP, HasFetchHandler) {
|
| EventCallbackHelper* helper = new EventCallbackHelper;
|
| helper_.reset(helper);
|
|
|
| @@ -1606,15 +1611,59 @@ TEST_F(ServiceWorkerJobTest, HasFetchHandler) {
|
| RunUnregisterJob(pattern);
|
| }
|
|
|
| -TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) {
|
| +class CheckPauseAfterDownloadEmbeddedWorkerInstanceClient
|
| + : public EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient {
|
| + public:
|
| + explicit CheckPauseAfterDownloadEmbeddedWorkerInstanceClient(
|
| + base::WeakPtr<EmbeddedWorkerTestHelper> helper)
|
| + : EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper) {}
|
| + int num_of_startworker() const { return num_of_startworker_; }
|
| + void set_next_pause_after_download(bool expectation) {
|
| + next_pause_after_download_ = expectation;
|
| + }
|
| +
|
| + protected:
|
| + void StartWorker(
|
| + const EmbeddedWorkerStartParams& params,
|
| + service_manager::mojom::InterfaceProviderPtr browser_interfaces,
|
| + service_manager::mojom::InterfaceProviderRequest renderer_request)
|
| + override {
|
| + ASSERT_TRUE(next_pause_after_download_.has_value());
|
| + EXPECT_EQ(next_pause_after_download_.value(), params.pause_after_download);
|
| + num_of_startworker_++;
|
| + EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker(
|
| + params, std::move(browser_interfaces), std::move(renderer_request));
|
| + }
|
| +
|
| + private:
|
| + base::Optional<bool> next_pause_after_download_;
|
| + int num_of_startworker_ = 0;
|
| + DISALLOW_COPY_AND_ASSIGN(CheckPauseAfterDownloadEmbeddedWorkerInstanceClient);
|
| +};
|
| +
|
| +TEST_P(ServiceWorkerJobTestP, Update_PauseAfterDownload) {
|
| UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
|
| helper_.reset(update_helper);
|
| IPC::TestSink* sink = update_helper->ipc_sink();
|
|
|
| + std::vector<CheckPauseAfterDownloadEmbeddedWorkerInstanceClient*> clients;
|
| + if (is_mojo_enabled()) {
|
| + clients.push_back(helper_->CreateAndRegisterMockInstanceClient<
|
| + CheckPauseAfterDownloadEmbeddedWorkerInstanceClient>(
|
| + helper_->AsWeakPtr()));
|
| + clients.push_back(helper_->CreateAndRegisterMockInstanceClient<
|
| + CheckPauseAfterDownloadEmbeddedWorkerInstanceClient>(
|
| + helper_->AsWeakPtr()));
|
| + }
|
| +
|
| // The initial version should not pause after download.
|
| + if (is_mojo_enabled())
|
| + clients[0]->set_next_pause_after_download(false);
|
| scoped_refptr<ServiceWorkerRegistration> registration =
|
| update_helper->SetupInitialRegistration(kNewVersionOrigin);
|
| - {
|
| + if (is_mojo_enabled()) {
|
| + ASSERT_EQ(1, clients[0]->num_of_startworker());
|
| + } else {
|
| const IPC::Message* start_msg =
|
| sink->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID);
|
| ASSERT_TRUE(start_msg);
|
| @@ -1626,10 +1675,14 @@ TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) {
|
| }
|
|
|
| // The updated version should pause after download.
|
| + if (is_mojo_enabled())
|
| + clients[1]->set_next_pause_after_download(true);
|
| registration->AddListener(update_helper);
|
| registration->active_version()->StartUpdate();
|
| base::RunLoop().RunUntilIdle();
|
| - {
|
| + if (is_mojo_enabled()) {
|
| + ASSERT_EQ(1, clients[1]->num_of_startworker());
|
| + } else {
|
| const IPC::Message* start_msg =
|
| sink->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID);
|
| ASSERT_TRUE(start_msg);
|
| @@ -1643,7 +1696,7 @@ TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) {
|
|
|
| // Test that activation doesn't complete if it's triggered by removing a
|
| // controllee and starting the worker failed due to shutdown.
|
| -TEST_F(ServiceWorkerJobTest, ActivateCancelsOnShutdown) {
|
| +TEST_P(ServiceWorkerJobTestP, ActivateCancelsOnShutdown) {
|
| UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
|
| helper_.reset(update_helper);
|
| GURL pattern("http://www.example.com/");
|
| @@ -1698,4 +1751,8 @@ TEST_F(ServiceWorkerJobTest, ActivateCancelsOnShutdown) {
|
| registration->RemoveListener(update_helper);
|
| }
|
|
|
| +INSTANTIATE_TEST_CASE_P(ServiceWorkerJobTest,
|
| + ServiceWorkerJobTestP,
|
| + ::testing::Values(false, true));
|
| +
|
| } // namespace content
|
|
|