| 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 0d235ec0b3461f666ec53a2d4398b6570c7d4637..021069000ddd5317842a616b8a1602dc9cb34b38 100644
|
| --- a/content/browser/service_worker/service_worker_job_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_job_unittest.cc
|
| @@ -118,6 +118,12 @@ ServiceWorkerStatusCode EventResultToStatus(
|
| return SERVICE_WORKER_ERROR_FAILED;
|
| }
|
|
|
| +void NestedLoopRunUntilIdle() {
|
| + base::MessageLoop::ScopedNestableTaskAllower nestable_allower(
|
| + base::MessageLoop::current());
|
| + base::RunLoop().RunUntilIdle();
|
| +}
|
| +
|
| } // namespace
|
|
|
| class ServiceWorkerJobTest : public testing::Test {
|
| @@ -379,15 +385,18 @@ class FailToStartWorkerTestHelper : public EmbeddedWorkerTestHelper {
|
| public:
|
| FailToStartWorkerTestHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {}
|
|
|
| - void OnStartWorker(
|
| - int embedded_worker_id,
|
| - int64_t service_worker_version_id,
|
| - const GURL& scope,
|
| - const GURL& script_url,
|
| - bool pause_after_download,
|
| - mojom::ServiceWorkerEventDispatcherRequest request) override {
|
| - EmbeddedWorkerInstance* worker = registry()->GetWorker(embedded_worker_id);
|
| - registry()->OnWorkerStopped(worker->process_id(), embedded_worker_id);
|
| + void OnStartWorker(int embedded_worker_id,
|
| + int64_t service_worker_version_id,
|
| + const GURL& scope,
|
| + const GURL& script_url,
|
| + bool pause_after_download,
|
| + mojom::ServiceWorkerEventDispatcherRequest request,
|
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
|
| + instance_host) override {
|
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtr instance_host_ptr;
|
| + instance_host_ptr.Bind(std::move(instance_host));
|
| + instance_host_ptr->OnStopped();
|
| + NestedLoopRunUntilIdle();
|
| }
|
| };
|
|
|
| @@ -840,13 +849,14 @@ class UpdateJobTestHelper
|
| }
|
|
|
| // EmbeddedWorkerTestHelper overrides
|
| - void OnStartWorker(
|
| - int embedded_worker_id,
|
| - int64_t version_id,
|
| - const GURL& scope,
|
| - const GURL& script,
|
| - bool pause_after_download,
|
| - mojom::ServiceWorkerEventDispatcherRequest request) override {
|
| + void OnStartWorker(int embedded_worker_id,
|
| + int64_t version_id,
|
| + const GURL& scope,
|
| + const GURL& script,
|
| + bool pause_after_download,
|
| + mojom::ServiceWorkerEventDispatcherRequest request,
|
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
|
| + instance_host) override {
|
| const std::string kMockScriptBody = "mock_script";
|
| const uint64_t kMockScriptSize = 19284;
|
| ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
|
| @@ -884,7 +894,11 @@ class UpdateJobTestHelper
|
| script, kMockScriptSize, net::ERR_FILE_EXISTS, std::string());
|
| version->SetMainScriptHttpResponseInfo(
|
| EmbeddedWorkerTestHelper::CreateHttpResponseInfo());
|
| - SimulateWorkerScriptLoaded(embedded_worker_id);
|
| +
|
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtr instance_host_ptr;
|
| + instance_host_ptr.Bind(std::move(instance_host));
|
| + instance_host_ptr->OnScriptLoaded();
|
| + NestedLoopRunUntilIdle();
|
| return;
|
| }
|
|
|
| @@ -896,16 +910,17 @@ class UpdateJobTestHelper
|
| EmbeddedWorkerTestHelper::CreateHttpResponseInfo());
|
| }
|
|
|
| - EmbeddedWorkerTestHelper::OnStartWorker(embedded_worker_id, version_id,
|
| - scope, script, pause_after_download,
|
| - std::move(request));
|
| + EmbeddedWorkerTestHelper::OnStartWorker(
|
| + embedded_worker_id, version_id, scope, script, pause_after_download,
|
| + std::move(request), std::move(instance_host));
|
| }
|
|
|
| void OnResumeAfterDownload(int embedded_worker_id) override {
|
| if (!force_start_worker_failure_) {
|
| EmbeddedWorkerTestHelper::OnResumeAfterDownload(embedded_worker_id);
|
| } else {
|
| - SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id);
|
| + SimulateWorkerThreadStarted(GetNextThreadId(), embedded_worker_id,
|
| + GetNextProviderId());
|
| SimulateWorkerScriptEvaluated(embedded_worker_id, false);
|
| }
|
| }
|
| @@ -953,13 +968,14 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
|
| EvictIncumbentVersionHelper() {}
|
| ~EvictIncumbentVersionHelper() override {}
|
|
|
| - void OnStartWorker(
|
| - int embedded_worker_id,
|
| - int64_t version_id,
|
| - const GURL& scope,
|
| - const GURL& script,
|
| - bool pause_after_download,
|
| - mojom::ServiceWorkerEventDispatcherRequest request) override {
|
| + void OnStartWorker(int embedded_worker_id,
|
| + int64_t version_id,
|
| + const GURL& scope,
|
| + const GURL& script,
|
| + bool pause_after_download,
|
| + mojom::ServiceWorkerEventDispatcherRequest request,
|
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
|
| + instance_host) override {
|
| ServiceWorkerVersion* version = context()->GetLiveVersion(version_id);
|
| ServiceWorkerRegistration* registration =
|
| context()->GetLiveRegistration(version->registration_id());
|
| @@ -971,9 +987,9 @@ class EvictIncumbentVersionHelper : public UpdateJobTestHelper {
|
| registration->DeleteVersion(
|
| make_scoped_refptr(registration->active_version()));
|
| }
|
| - UpdateJobTestHelper::OnStartWorker(embedded_worker_id, version_id, scope,
|
| - script, pause_after_download,
|
| - std::move(request));
|
| + UpdateJobTestHelper::OnStartWorker(
|
| + embedded_worker_id, version_id, scope, script, pause_after_download,
|
| + std::move(request), std::move(instance_host));
|
| }
|
|
|
| void OnRegistrationFailed(ServiceWorkerRegistration* registration) override {
|
| @@ -1644,14 +1660,15 @@ class CheckPauseAfterDownloadEmbeddedWorkerInstanceClient
|
| }
|
|
|
| protected:
|
| - void StartWorker(
|
| - const EmbeddedWorkerStartParams& params,
|
| - mojom::ServiceWorkerEventDispatcherRequest request) override {
|
| + void StartWorker(const EmbeddedWorkerStartParams& params,
|
| + mojom::ServiceWorkerEventDispatcherRequest request,
|
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo
|
| + instance_host) 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(request));
|
| + params, std::move(request), std::move(instance_host));
|
| }
|
|
|
| private:
|
|
|