| 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 e97dccc352b040e758f198305acf15c030f027f0..0cbe471ff32e2fafb6306c3d7753174092f05b6f 100644
|
| --- a/content/browser/service_worker/service_worker_job_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_job_unittest.cc
|
| @@ -17,6 +17,7 @@
|
| #include "content/browser/service_worker/service_worker_registration.h"
|
| #include "content/browser/service_worker/service_worker_registration_status.h"
|
| #include "content/browser/service_worker/service_worker_test_utils.h"
|
| +#include "content/common/service_worker/embedded_worker_messages.h"
|
| #include "content/common/service_worker/service_worker_messages.h"
|
| #include "content/public/test/test_browser_thread_bundle.h"
|
| #include "ipc/ipc_test_sink.h"
|
| @@ -361,7 +362,8 @@ class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
|
| void OnStartWorker(int embedded_worker_id,
|
| int64_t service_worker_version_id,
|
| const GURL& scope,
|
| - const GURL& script_url) override {
|
| + const GURL& script_url,
|
| + bool pause_after_download) override {
|
| EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
|
| registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id);
|
| }
|
| @@ -824,7 +826,8 @@ class UpdateJobTestHelper
|
| void OnStartWorker(int embedded_worker_id,
|
| int64_t version_id,
|
| const GURL& scope,
|
| - const GURL& script) override {
|
| + const GURL& script,
|
| + bool pause_after_download) override {
|
| const std::string kMockScriptBody = "mock_script";
|
| const uint64_t kMockScriptSize = 19284;
|
| ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
|
| @@ -838,6 +841,7 @@ class UpdateJobTestHelper
|
|
|
| if (force_bypass_cache_for_scripts())
|
| version->set_force_bypass_cache_for_scripts(true);
|
| +
|
| if (!is_update) {
|
| // Spoof caching the script for the initial version.
|
| int64_t resource_id = storage()->NewResourceId();
|
| @@ -859,15 +863,15 @@ class UpdateJobTestHelper
|
| version->script_cache_map()->NotifyFinishedCaching(
|
| script, kMockScriptSize, net::URLRequestStatus(), std::string());
|
| }
|
| +
|
| + EmbeddedWorkerTestHelper::OnStartWorker(
|
| + embedded_worker_id, version_id, scope, script, pause_after_download);
|
| + }
|
| +
|
| + void OnResumeAfterDownload(int embedded_worker_id) override {
|
| if (!force_start_worker_failure_) {
|
| - EmbeddedWorkerTestHelper::OnStartWorker(embedded_worker_id, version_id,
|
| - scope, script);
|
| + EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id);
|
| } else {
|
| - (embedded_worker_id_service_worker_version_id_map())[embedded_worker_id] =
|
| - version_id;
|
| - SimulateWorkerReadyForInspection(embedded_worker_id);
|
| - SimulateWorkerScriptCached(embedded_worker_id);
|
| - SimulateWorkerScriptLoaded(embedded_worker_id);
|
| SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id);
|
| SimulateWorkerScriptEvaluated(embedded_worker_id, false);
|
| }
|
| @@ -920,7 +924,8 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
|
| void OnStartWorker(int embedded_worker_id,
|
| int64_t version_id,
|
| const GURL& scope,
|
| - const GURL& script) override {
|
| + const GURL& script,
|
| + bool pause_after_download) override {
|
| ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
|
| ServiceWorkerRegistration* registration =
|
| context()->GetLiveRegistration(version->registration_id());
|
| @@ -933,7 +938,7 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
|
| make_scoped_refptr(registration->active_version()));
|
| }
|
| UpdateJobTestHelper::OnStartWorker(embedded_worker_id, version_id, scope,
|
| - script);
|
| + script, pause_after_download);
|
| }
|
|
|
| void OnRegistrationFailed(ServiceWorkerRegistration* registration) override {
|
| @@ -1533,4 +1538,39 @@ TEST_F(ServiceWorkerJobTest, RemoveControlleeDuringInstall_RejectActivate) {
|
| FindRegistrationForPattern(pattern, SERVICE_WORKER_OK);
|
| }
|
|
|
| +TEST_F(ServiceWorkerJobTest, Update_PauseAfterDownload) {
|
| + UpdateJobTestHelper* update_helper = new UpdateJobTestHelper;
|
| + helper_.reset(update_helper);
|
| + IPC::TestSink* sink = update_helper->ipc_sink();
|
| +
|
| + // The initial version should not pause after download.
|
| + scoped_refptr<ServiceWorkerRegistration> registration =
|
| + update_helper->SetupInitialRegistration(kNewVersionOrigin);
|
| + {
|
| + const IPC::Message* start_msg =
|
| + sink->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID);
|
| + ASSERT_TRUE(start_msg);
|
| + EmbeddedWorkerMsg_StartWorker::Param param;
|
| + EmbeddedWorkerMsg_StartWorker::Read(start_msg, ¶m);
|
| + EmbeddedWorkerMsg_StartWorker_Params start_params = base::get<0>(param);
|
| + EXPECT_FALSE(start_params.pause_after_download);
|
| + sink->ClearMessages();
|
| + }
|
| +
|
| + // The updated version should pause after download.
|
| + registration->AddListener(update_helper);
|
| + registration->active_version()->StartUpdate();
|
| + base::RunLoop().RunUntilIdle();
|
| + {
|
| + const IPC::Message* start_msg =
|
| + sink->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID);
|
| + ASSERT_TRUE(start_msg);
|
| + EmbeddedWorkerMsg_StartWorker::Param param;
|
| + EmbeddedWorkerMsg_StartWorker::Read(start_msg, ¶m);
|
| + EmbeddedWorkerMsg_StartWorker_Params start_params = base::get<0>(param);
|
| + EXPECT_TRUE(start_params.pause_after_download);
|
| + sink->ClearMessages();
|
| + }
|
| +}
|
| +
|
| } // namespace content
|
|
|