| 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..fe88df72e077511d2a395542956cc120844464dd 100644 | 
| --- a/content/browser/service_worker/embedded_worker_instance_unittest.cc | 
| +++ b/content/browser/service_worker/embedded_worker_instance_unittest.cc | 
| @@ -44,6 +44,38 @@ void SaveStatusAndCall(ServiceWorkerStatusCode* out, | 
|  | 
| }  // namespace | 
|  | 
| +class MockServiceWorkerProviderHost : public ServiceWorkerProviderHost { | 
| + public: | 
| +  MockServiceWorkerProviderHost(base::WeakPtr<ServiceWorkerContextCore> context) | 
| +      : ServiceWorkerProviderHost(ChildProcessHost::kInvalidUniqueID, | 
| +                                  ServiceWorkerProviderHostInfo( | 
| +                                      kInvalidServiceWorkerProviderId, | 
| +                                      MSG_ROUTING_NONE, | 
| +                                      SERVICE_WORKER_PROVIDER_FOR_CONTROLLER, | 
| +                                      false), | 
| +                                  context, | 
| +                                  nullptr), | 
| +        binding_(this) {} | 
| + | 
| +  ~MockServiceWorkerProviderHost() override {} | 
| + | 
| +  void CompleteStartWorkerPreparation(int process_id, | 
| +                                      mojom::ServiceWorkerProviderClientInfoPtr* | 
| +                                          provider_client_info) override { | 
| +    // Nothing to do. | 
| +    DCHECK(!binding_.is_bound()); | 
| +    DCHECK(!client_.is_bound()); | 
| +    binding_.Bind(mojo::MakeRequest(&(*provider_client_info)->host_ptr_info)); | 
| +    (*provider_client_info)->client_request = mojo::MakeRequest(&client_); | 
| +  } | 
| + | 
| + private: | 
| +  mojom::ServiceWorkerProviderAssociatedPtr client_; | 
| +  mojo::AssociatedBinding<mojom::ServiceWorkerProviderHost> binding_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(MockServiceWorkerProviderHost); | 
| +}; | 
| + | 
| class EmbeddedWorkerInstanceTest : public testing::Test, | 
| public EmbeddedWorkerInstance::Listener { | 
| protected: | 
| @@ -82,7 +114,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())); | 
| @@ -113,6 +145,10 @@ class EmbeddedWorkerInstanceTest : public testing::Test, | 
| params->script_url = script_url; | 
| params->pause_after_download = false; | 
| params->is_installed = false; | 
| +    mock_providers_.emplace_back( | 
| +        base::MakeUnique<MockServiceWorkerProviderHost>( | 
| +            helper_->context()->AsWeakPtr())); | 
| +    params->controller_provider = mock_providers_.back().get(); | 
| return params; | 
| } | 
|  | 
| @@ -137,6 +173,7 @@ class EmbeddedWorkerInstanceTest : public testing::Test, | 
| } | 
|  | 
| std::vector<mojom::ServiceWorkerEventDispatcherPtr> dispatchers_; | 
| +  std::vector<std::unique_ptr<MockServiceWorkerProviderHost>> mock_providers_; | 
|  | 
| TestBrowserThreadBundle thread_bundle_; | 
| std::unique_ptr<EmbeddedWorkerTestHelper> helper_; | 
| @@ -153,14 +190,15 @@ 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::ServiceWorkerProviderClientInfoPtr provider_client_info) override { | 
| if (force_stall_in_start_) { | 
| // Prepare for OnStopWorker(). | 
| instance_host_ptr_map_[embedded_worker_id].Bind(std::move(instance_host)); | 
| @@ -169,7 +207,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_client_info)); | 
| } | 
|  | 
| void OnStopWorker(int embedded_worker_id) override { | 
| @@ -723,11 +762,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::ServiceWorkerProviderClientInfoPtr) override { | 
| helper_->mock_instance_clients()->clear(); | 
| } | 
| }; | 
|  |