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

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

Issue 2378073002: Reland of ServiceWorker: Implement StartWorker by using mojo (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 3 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 f2df6b57612e8242b411fa28ae93d1757f9ebd2b..1253a28f20ad9084945af84e807752833ee04f2f 100644
--- a/content/browser/service_worker/embedded_worker_instance_unittest.cc
+++ b/content/browser/service_worker/embedded_worker_instance_unittest.cc
@@ -8,6 +8,7 @@
#include <utility>
#include <vector>
+#include "base/command_line.h"
#include "base/macros.h"
#include "base/run_loop.h"
#include "base/stl_util.h"
@@ -16,9 +17,13 @@
#include "content/browser/service_worker/embedded_worker_test_helper.h"
#include "content/browser/service_worker/service_worker_context_core.h"
#include "content/browser/service_worker/service_worker_context_wrapper.h"
+#include "content/common/service_worker/embedded_worker.mojom.h"
#include "content/common/service_worker/embedded_worker_messages.h"
+#include "content/common/service_worker/embedded_worker_start_params.h"
#include "content/public/common/child_process_host.h"
+#include "content/public/common/content_switches.h"
#include "content/public/test/test_browser_thread_bundle.h"
+#include "mojo/public/cpp/bindings/strong_binding.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -33,14 +38,15 @@
callback.Run();
}
-std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params>
+std::unique_ptr<EmbeddedWorkerStartParams>
CreateStartParams(int version_id, const GURL& scope, const GURL& script_url) {
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
- new EmbeddedWorkerMsg_StartWorker_Params);
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
+ new EmbeddedWorkerStartParams);
params->service_worker_version_id = version_id;
params->scope = scope;
params->script_url = script_url;
params->pause_after_download = false;
+ params->is_installed = false;
return params;
}
@@ -97,7 +103,7 @@
const GURL& url) {
ServiceWorkerStatusCode status;
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params =
+ std::unique_ptr<EmbeddedWorkerStartParams> params =
CreateStartParams(id, pattern, url);
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -120,6 +126,24 @@
private:
DISALLOW_COPY_AND_ASSIGN(EmbeddedWorkerInstanceTest);
+};
+
+class EmbeddedWorkerInstanceTestP : public EmbeddedWorkerInstanceTest,
+ public testing::WithParamInterface<bool> {
+ protected:
+ void SetUp() override {
+ is_mojo_enabled_ = GetParam();
+ if (is_mojo_enabled()) {
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kMojoServiceWorker);
+ }
+ EmbeddedWorkerInstanceTest::SetUp();
+ }
+
+ bool is_mojo_enabled() { return is_mojo_enabled_; }
+
+ private:
+ bool is_mojo_enabled_ = false;
};
// A helper to simulate the start worker sequence is stalled in a worker
@@ -162,10 +186,11 @@
}
};
-TEST_F(EmbeddedWorkerInstanceTest, StartAndStop) {
- std::unique_ptr<EmbeddedWorkerInstance> worker =
- embedded_worker_registry()->CreateWorker();
- EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status());
+TEST_P(EmbeddedWorkerInstanceTestP, StartAndStop) {
+ std::unique_ptr<EmbeddedWorkerInstance> worker =
+ embedded_worker_registry()->CreateWorker();
+ EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status());
+ worker->AddListener(this);
const int64_t service_worker_version_id = 55L;
const GURL pattern("http://example.com/");
@@ -178,7 +203,7 @@
// Start should succeed.
ServiceWorkerStatusCode status;
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params =
+ std::unique_ptr<EmbeddedWorkerStartParams> params =
CreateStartParams(service_worker_version_id, pattern, url);
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -200,11 +225,21 @@
// EmbeddedWorkerTestHelper.
EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status());
- // Verify that we've sent two messages to start and terminate the worker.
- ASSERT_TRUE(
- ipc_sink()->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID));
+ if (!is_mojo_enabled()) {
+ // Verify that we've sent two messages to start and terminate the worker.
+ ASSERT_TRUE(ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StartWorker::ID));
+ }
+ // StopWorker should be sent in either case.
ASSERT_TRUE(ipc_sink()->GetUniqueMessageMatching(
EmbeddedWorkerMsg_StopWorker::ID));
+
+ // Check if the IPCs are fired in expected order.
+ ASSERT_EQ(4u, events_.size());
+ EXPECT_EQ(PROCESS_ALLOCATED, events_[0].type);
+ EXPECT_EQ(START_WORKER_MESSAGE_SENT, events_[1].type);
+ EXPECT_EQ(STARTED, events_[2].type);
+ EXPECT_EQ(STOPPED, events_[3].type);
}
// Test that a worker that failed twice will use a new render process
@@ -233,7 +268,7 @@
// Start once normally.
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(service_worker_version_id, pattern, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -257,7 +292,7 @@
// Start again.
ServiceWorkerStatusCode status;
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(service_worker_version_id, pattern, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -337,7 +372,7 @@
// Start worker1.
ServiceWorkerStatusCode status;
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id1, pattern, url));
worker1->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -349,7 +384,7 @@
// Start worker2.
ServiceWorkerStatusCode status;
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id2, pattern, url));
worker2->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -386,7 +421,7 @@
// Run the start worker sequence and detach during process allocation.
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, scope, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
base::Bind(&base::DoNothing)));
@@ -418,7 +453,7 @@
// Run the start worker sequence until a start worker message is sent.
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, scope, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
base::Bind(&base::DoNothing)));
@@ -457,7 +492,7 @@
// Stop the start worker sequence before a process is allocated.
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, scope, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
base::Bind(&base::DoNothing)));
@@ -507,7 +542,7 @@
// Run the start worker sequence until pause after download.
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, scope, url));
params->pause_after_download = true;
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
@@ -538,7 +573,7 @@
// Run the start worker sequence until a start worker message is sent.
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, scope, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
base::Bind(&base::DoNothing)));
@@ -600,7 +635,7 @@
// Start the worker.
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, pattern, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -635,7 +670,7 @@
// Attempt to start the worker.
base::RunLoop run_loop;
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params(
+ std::unique_ptr<EmbeddedWorkerStartParams> params(
CreateStartParams(version_id, pattern, url));
worker->Start(std::move(params), base::Bind(&SaveStatusAndCall, &status,
run_loop.QuitClosure()));
@@ -649,4 +684,8 @@
EXPECT_EQ(EmbeddedWorkerStatus::STARTING, events_[1].status);
}
+INSTANTIATE_TEST_CASE_P(EmbeddedWorkerInstanceTest,
+ EmbeddedWorkerInstanceTestP,
+ ::testing::Values(false, true));
+
} // namespace content
« no previous file with comments | « content/browser/service_worker/embedded_worker_instance.cc ('k') | content/browser/service_worker/embedded_worker_registry.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698