Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1399)

Unified Diff: content/browser/service_worker/embedded_worker_instance_unittest.cc

Issue 2779763004: Create ServiceWorkerProviderHost before starting worker (Closed)
Patch Set: Rebased Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
}
};

Powered by Google App Engine
This is Rietveld 408576698