Chromium Code Reviews| Index: content/browser/service_worker/embedded_worker_instance_unittest.cc |
| diff --git a/content/browser/service_worker/embedded_worker_instance_unittest.cc b/content/browser/service_worker/embedded_worker_instance_unittest.cc |
| index 450fbeb3e1ab57d909f78b0c261d75f5f913a7b2..e17133779908e46802b79366163b56af3129cf8d 100644 |
| --- a/content/browser/service_worker/embedded_worker_instance_unittest.cc |
| +++ b/content/browser/service_worker/embedded_worker_instance_unittest.cc |
| @@ -44,6 +44,31 @@ void SaveStatusAndCall(ServiceWorkerStatusCode* out, |
| } // namespace |
| +class ProviderHostEndpoints : public mojom::ServiceWorkerProviderHost { |
| + public: |
| + ProviderHostEndpoints() : binding_(this) {} |
| + |
| + ~ProviderHostEndpoints() override {} |
| + |
| + mojom::ServiceWorkerProviderInfoForStartWorkerPtr |
| + CreateProviderClientInfoPtr() { |
| + DCHECK(!binding_.is_bound()); |
| + DCHECK(!client_.is_bound()); |
| + // Just keep the endpoints. |
| + mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info = |
| + mojom::ServiceWorkerProviderInfoForStartWorker::New(); |
| + binding_.Bind(mojo::MakeRequest(&provider_info->host_ptr_info)); |
| + provider_info->client_request = mojo::MakeRequest(&client_); |
| + return provider_info; |
| + } |
| + |
| + private: |
| + mojom::ServiceWorkerProviderAssociatedPtr client_; |
| + mojo::AssociatedBinding<mojom::ServiceWorkerProviderHost> binding_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ProviderHostEndpoints); |
| +}; |
| + |
| class EmbeddedWorkerInstanceTest : public testing::Test, |
| public EmbeddedWorkerInstance::Listener { |
| protected: |
| @@ -82,7 +107,7 @@ class EmbeddedWorkerInstanceTest : public testing::Test, |
| RecordEvent(DETACHED, old_status); |
| } |
| - bool OnMessageReceived(const IPC::Message& message) override { return false; } |
| + bool OnMessageReceived(const IPC::Message&) override { return false; } |
| void SetUp() override { |
| helper_.reset(new EmbeddedWorkerTestHelper(base::FilePath())); |
| @@ -98,7 +123,8 @@ class EmbeddedWorkerInstanceTest : public testing::Test, |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(id, pattern, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
|
falken
2017/06/19 07:50:40
CreateProviderInfoGetter
shimazu
2017/06/19 10:41:25
Done.
|
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| run_loop.Run(); |
| return status; |
| @@ -116,6 +142,19 @@ class EmbeddedWorkerInstanceTest : public testing::Test, |
| return params; |
| } |
| + mojom::ServiceWorkerProviderInfoForStartWorkerPtr CreateProviderClientInfo( |
|
falken
2017/06/19 07:50:40
rename
shimazu
2017/06/19 10:41:25
Done.
|
| + int /* process_id */) { |
| + provider_host_endpoints_.emplace_back( |
| + base::MakeUnique<ProviderHostEndpoints>()); |
| + return provider_host_endpoints_.back()->CreateProviderClientInfoPtr(); |
| + } |
| + |
| + EmbeddedWorkerInstance::ProviderClientInfoGetter |
| + CreateProviderClientInfoGetter() { |
| + return base::BindOnce(&EmbeddedWorkerInstanceTest::CreateProviderClientInfo, |
| + base::Unretained(this)); |
| + } |
| + |
| mojom::ServiceWorkerEventDispatcherRequest CreateEventDispatcher() { |
| dispatchers_.emplace_back(); |
| return mojo::MakeRequest(&dispatchers_.back()); |
| @@ -137,6 +176,7 @@ class EmbeddedWorkerInstanceTest : public testing::Test, |
| } |
| std::vector<mojom::ServiceWorkerEventDispatcherPtr> dispatchers_; |
| + std::vector<std::unique_ptr<ProviderHostEndpoints>> provider_host_endpoints_; |
| TestBrowserThreadBundle thread_bundle_; |
| std::unique_ptr<EmbeddedWorkerTestHelper> helper_; |
| @@ -153,14 +193,16 @@ class StalledInStartWorkerHelper : public EmbeddedWorkerTestHelper { |
| StalledInStartWorkerHelper() : EmbeddedWorkerTestHelper(base::FilePath()) {} |
| ~StalledInStartWorkerHelper() override {} |
| - 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 { |
| + 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, |
| + mojom::ServiceWorkerProviderInfoForStartWorkerPtr provider_info) |
| + override { |
| if (force_stall_in_start_) { |
| // Prepare for OnStopWorker(). |
| instance_host_ptr_map_[embedded_worker_id].Bind(std::move(instance_host)); |
| @@ -169,7 +211,8 @@ class StalledInStartWorkerHelper : public EmbeddedWorkerTestHelper { |
| } |
| EmbeddedWorkerTestHelper::OnStartWorker( |
| embedded_worker_id, service_worker_version_id, scope, script_url, |
| - pause_after_download, std::move(request), std::move(instance_host)); |
| + pause_after_download, std::move(request), std::move(instance_host), |
| + std::move(provider_info)); |
| } |
| void OnStopWorker(int embedded_worker_id) override { |
| @@ -214,7 +257,8 @@ TEST_F(EmbeddedWorkerInstanceTest, StartAndStop) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(service_worker_version_id, pattern, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| run_loop.Run(); |
| @@ -271,7 +315,8 @@ TEST_F(EmbeddedWorkerInstanceTest, ForceNewProcess) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(service_worker_version_id, pattern, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| run_loop.Run(); |
| EXPECT_EQ(SERVICE_WORKER_OK, status); |
| @@ -296,7 +341,8 @@ TEST_F(EmbeddedWorkerInstanceTest, ForceNewProcess) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(service_worker_version_id, pattern, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| EXPECT_EQ(EmbeddedWorkerStatus::STARTING, worker->status()); |
| run_loop.Run(); |
| @@ -377,7 +423,8 @@ TEST_F(EmbeddedWorkerInstanceTest, RemoveWorkerInSharedProcess) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id1, pattern, url); |
| worker1->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| run_loop.Run(); |
| EXPECT_EQ(SERVICE_WORKER_OK, status); |
| @@ -390,7 +437,8 @@ TEST_F(EmbeddedWorkerInstanceTest, RemoveWorkerInSharedProcess) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id2, pattern, url); |
| worker2->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| run_loop.Run(); |
| EXPECT_EQ(SERVICE_WORKER_OK, status); |
| @@ -428,7 +476,8 @@ TEST_F(EmbeddedWorkerInstanceTest, DetachDuringProcessAllocation) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, scope, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); |
| worker->Detach(); |
| base::RunLoop().RunUntilIdle(); |
| @@ -461,7 +510,8 @@ TEST_F(EmbeddedWorkerInstanceTest, DetachAfterSendingStartWorkerMessage) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, scope, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); |
| base::RunLoop().RunUntilIdle(); |
| @@ -501,7 +551,8 @@ TEST_F(EmbeddedWorkerInstanceTest, StopDuringProcessAllocation) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, scope, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); |
| worker->Stop(); |
| base::RunLoop().RunUntilIdle(); |
| @@ -524,7 +575,8 @@ TEST_F(EmbeddedWorkerInstanceTest, StopDuringProcessAllocation) { |
| std::unique_ptr<base::RunLoop> run_loop(new base::RunLoop); |
| params = CreateStartParams(version_id, scope, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop->QuitClosure())); |
| run_loop->Run(); |
| @@ -576,7 +628,8 @@ TEST_F(EmbeddedWorkerInstanceTest, StopDuringPausedAfterDownload) { |
| CreateStartParams(version_id, scope, url); |
| params->pause_after_download = true; |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); |
| base::RunLoop().RunUntilIdle(); |
| @@ -606,7 +659,8 @@ TEST_F(EmbeddedWorkerInstanceTest, StopAfterSendingStartWorkerMessage) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, scope, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); |
| base::RunLoop().RunUntilIdle(); |
| @@ -639,7 +693,8 @@ TEST_F(EmbeddedWorkerInstanceTest, StopAfterSendingStartWorkerMessage) { |
| params = CreateStartParams(version_id, scope, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop->QuitClosure())); |
| run_loop->Run(); |
| @@ -670,7 +725,8 @@ TEST_F(EmbeddedWorkerInstanceTest, Detach) { |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, pattern, url); |
| worker->Start( |
| - std::move(params), CreateEventDispatcher(), |
| + std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure())); |
| run_loop.Run(); |
| @@ -704,7 +760,8 @@ TEST_F(EmbeddedWorkerInstanceTest, FailToSendStartIPC) { |
| // Attempt to start the worker. |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, pattern, url); |
| - worker->Start(std::move(params), CreateEventDispatcher(), |
| + worker->Start(std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| base::RunLoop().RunUntilIdle(); |
| @@ -723,11 +780,10 @@ class FailEmbeddedWorkerInstanceClientImpl |
| : EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper) {} |
| private: |
| - void StartWorker( |
| - const EmbeddedWorkerStartParams& /* unused */, |
| - mojom::ServiceWorkerEventDispatcherRequest /* unused */, |
| - mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo /* unused */) |
| - override { |
| + void StartWorker(const EmbeddedWorkerStartParams&, |
| + mojom::ServiceWorkerEventDispatcherRequest, |
| + mojom::EmbeddedWorkerInstanceHostAssociatedPtrInfo, |
| + mojom::ServiceWorkerProviderInfoForStartWorkerPtr) override { |
| helper_->mock_instance_clients()->clear(); |
| } |
| }; |
| @@ -752,7 +808,8 @@ TEST_F(EmbeddedWorkerInstanceTest, RemoveRemoteInterface) { |
| // Attempt to start the worker. |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, pattern, url); |
| - worker->Start(std::move(params), CreateEventDispatcher(), |
| + worker->Start(std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| base::RunLoop().RunUntilIdle(); |
| @@ -808,7 +865,8 @@ TEST_F(EmbeddedWorkerInstanceTest, AddMessageToConsole) { |
| std::make_pair(blink::WebConsoleMessage::kLevelVerbose, ""); |
| std::unique_ptr<EmbeddedWorkerStartParams> params = |
| CreateStartParams(version_id, pattern, url); |
| - worker->Start(std::move(params), CreateEventDispatcher(), |
| + worker->Start(std::move(params), CreateProviderClientInfoGetter(), |
| + CreateEventDispatcher(), |
| base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| worker->AddMessageToConsole(test_message.first, test_message.second); |
| base::RunLoop().RunUntilIdle(); |