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(); |
} |
}; |