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

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

Issue 2432083002: Mojofy unittests: ServiceWorkerContextTest (Closed)
Patch Set: Check if StopWorker/StartWorker is called Created 4 years, 2 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/service_worker/service_worker_context_unittest.cc
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 6c72fab2cab200307246278801a3f93195f486b2..5e50bb55a55cce625564161988d175aa0dfba381 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -20,6 +20,7 @@
#include "content/browser/service_worker/service_worker_provider_host.h"
#include "content/browser/service_worker/service_worker_registration.h"
#include "content/browser/service_worker/service_worker_storage.h"
+#include "content/browser/service_worker/service_worker_test_utils.h"
#include "content/common/service_worker/embedded_worker_messages.h"
#include "content/common/service_worker/service_worker_messages.h"
#include "content/public/test/test_browser_thread_bundle.h"
@@ -161,11 +162,52 @@ class ServiceWorkerContextTest : public ServiceWorkerContextObserver,
std::vector<NotificationLog> notifications_;
};
+class ServiceWorkerContextTestP
+ : public MojoServiceWorkerTestP<ServiceWorkerContextTest> {};
+
+class RecordableEmbeddedWorkerInstanceClient
+ : public EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient {
+ public:
+ enum class Message { StartWorker, StopWorker };
+
+ RecordableEmbeddedWorkerInstanceClient(
horo 2016/10/20 07:33:00 nit: explicit
shimazu 2016/10/20 08:45:55 Done.
+ base::WeakPtr<EmbeddedWorkerTestHelper> helper)
+ : EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper) {}
+
+ const std::vector<Message>& events() const { return events_; }
+
+ protected:
+ void StartWorker(
+ const EmbeddedWorkerStartParams& params,
+ service_manager::mojom::InterfaceProviderPtr browser_interfaces,
+ service_manager::mojom::InterfaceProviderRequest renderer_request)
+ override {
+ events_.push_back(Message::StartWorker);
+ EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StartWorker(
+ params, std::move(browser_interfaces), std::move(renderer_request));
+ }
+
+ void StopWorker(const StopWorkerCallback& callback) override {
+ events_.push_back(Message::StopWorker);
+ EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient::StopWorker(
+ std::move(callback));
+ }
+
+ private:
+ std::vector<Message> events_;
horo 2016/10/20 07:33:00 nit: DISALLOW_COPY_AND_ASSIGN(RecordableEmbedded
shimazu 2016/10/20 08:45:55 Done.
+};
+
// Make sure basic registration is working.
-TEST_F(ServiceWorkerContextTest, Register) {
+TEST_P(ServiceWorkerContextTestP, Register) {
GURL pattern("http://www.example.com/");
GURL script_url("http://www.example.com/service_worker.js");
+ RecordableEmbeddedWorkerInstanceClient* client = nullptr;
+ if (is_mojo_enabled()) {
+ client = helper_->CreateAndRegisterMockInstanceClient<
+ RecordableEmbeddedWorkerInstanceClient>(helper_->AsWeakPtr());
+ }
+
int64_t registration_id = kInvalidServiceWorkerRegistrationId;
bool called = false;
context()->RegisterServiceWorker(
@@ -178,15 +220,28 @@ TEST_F(ServiceWorkerContextTest, Register) {
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(called);
- EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
- EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
- EmbeddedWorkerMsg_StartWorker::ID));
- EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
- ServiceWorkerMsg_InstallEvent::ID));
- EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
- ServiceWorkerMsg_ActivateEvent::ID));
- EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
- EmbeddedWorkerMsg_StopWorker::ID));
+ if (is_mojo_enabled()) {
+ EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
+ ASSERT_EQ(2UL, client->events().size());
+ EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StartWorker,
+ client->events()[0]);
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_InstallEvent::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_ActivateEvent::ID));
+ EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StopWorker,
+ client->events()[1]);
+ } else {
+ EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
+ EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StartWorker::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_InstallEvent::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_ActivateEvent::ID));
+ EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StopWorker::ID));
+ }
EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
ASSERT_EQ(1u, notifications_.size());
@@ -207,13 +262,20 @@ TEST_F(ServiceWorkerContextTest, Register) {
// Test registration when the service worker rejects the install event. The
// registration callback should indicate success, but there should be no waiting
// or active worker in the registration.
-TEST_F(ServiceWorkerContextTest, Register_RejectInstall) {
+TEST_P(ServiceWorkerContextTestP, Register_RejectInstall) {
GURL pattern("http://www.example.com/");
GURL script_url("http://www.example.com/service_worker.js");
helper_.reset(); // Make sure the process lookups stay overridden.
helper_.reset(new RejectInstallTestHelper);
helper_->context_wrapper()->AddObserver(this);
+
+ RecordableEmbeddedWorkerInstanceClient* client = nullptr;
+ if (is_mojo_enabled()) {
+ client = helper_->CreateAndRegisterMockInstanceClient<
+ RecordableEmbeddedWorkerInstanceClient>(helper_->AsWeakPtr());
+ }
+
int64_t registration_id = kInvalidServiceWorkerRegistrationId;
bool called = false;
context()->RegisterServiceWorker(
@@ -226,15 +288,28 @@ TEST_F(ServiceWorkerContextTest, Register_RejectInstall) {
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(called);
- EXPECT_EQ(3UL, helper_->ipc_sink()->message_count());
- EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
- EmbeddedWorkerMsg_StartWorker::ID));
- EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
- ServiceWorkerMsg_InstallEvent::ID));
- EXPECT_FALSE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
- ServiceWorkerMsg_ActivateEvent::ID));
- EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
- EmbeddedWorkerMsg_StopWorker::ID));
+ if (is_mojo_enabled()) {
+ EXPECT_EQ(1UL, helper_->ipc_sink()->message_count());
+ ASSERT_EQ(2UL, client->events().size());
+ EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StartWorker,
+ client->events()[0]);
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_InstallEvent::ID));
+ EXPECT_FALSE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_ActivateEvent::ID));
+ EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StopWorker,
+ client->events()[1]);
+ } else {
+ EXPECT_EQ(3UL, helper_->ipc_sink()->message_count());
+ EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StartWorker::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_InstallEvent::ID));
+ EXPECT_FALSE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_ActivateEvent::ID));
+ EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StopWorker::ID));
+ }
EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
ASSERT_EQ(1u, notifications_.size());
@@ -254,13 +329,20 @@ TEST_F(ServiceWorkerContextTest, Register_RejectInstall) {
// Test registration when the service worker rejects the activate event. The
// worker should be activated anyway.
-TEST_F(ServiceWorkerContextTest, Register_RejectActivate) {
+TEST_P(ServiceWorkerContextTestP, Register_RejectActivate) {
GURL pattern("http://www.example.com/");
GURL script_url("http://www.example.com/service_worker.js");
helper_.reset();
helper_.reset(new RejectActivateTestHelper);
helper_->context_wrapper()->AddObserver(this);
+
+ RecordableEmbeddedWorkerInstanceClient* client = nullptr;
+ if (is_mojo_enabled()) {
+ client = helper_->CreateAndRegisterMockInstanceClient<
+ RecordableEmbeddedWorkerInstanceClient>(helper_->AsWeakPtr());
+ }
+
int64_t registration_id = kInvalidServiceWorkerRegistrationId;
bool called = false;
context()->RegisterServiceWorker(
@@ -271,15 +353,28 @@ TEST_F(ServiceWorkerContextTest, Register_RejectActivate) {
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(called);
- EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
- EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
- EmbeddedWorkerMsg_StartWorker::ID));
- EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
- ServiceWorkerMsg_InstallEvent::ID));
- EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
- ServiceWorkerMsg_ActivateEvent::ID));
- EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
- EmbeddedWorkerMsg_StopWorker::ID));
+ if (is_mojo_enabled()) {
+ EXPECT_EQ(2UL, helper_->ipc_sink()->message_count());
+ ASSERT_EQ(2UL, client->events().size());
+ EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StartWorker,
+ client->events()[0]);
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_InstallEvent::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_ActivateEvent::ID));
+ EXPECT_EQ(RecordableEmbeddedWorkerInstanceClient::Message::StopWorker,
+ client->events()[1]);
+ } else {
+ EXPECT_EQ(4UL, helper_->ipc_sink()->message_count());
+ EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StartWorker::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_InstallEvent::ID));
+ EXPECT_TRUE(helper_->inner_ipc_sink()->GetUniqueMessageMatching(
+ ServiceWorkerMsg_ActivateEvent::ID));
+ EXPECT_TRUE(helper_->ipc_sink()->GetUniqueMessageMatching(
+ EmbeddedWorkerMsg_StopWorker::ID));
+ }
EXPECT_NE(kInvalidServiceWorkerRegistrationId, registration_id);
ASSERT_EQ(1u, notifications_.size());
@@ -295,7 +390,7 @@ TEST_F(ServiceWorkerContextTest, Register_RejectActivate) {
}
// Make sure registrations are cleaned up when they are unregistered.
-TEST_F(ServiceWorkerContextTest, Unregister) {
+TEST_P(ServiceWorkerContextTestP, Unregister) {
GURL pattern("http://www.example.com/");
bool called = false;
@@ -338,7 +433,7 @@ TEST_F(ServiceWorkerContextTest, Unregister) {
}
// Make sure registrations are cleaned up when they are unregistered in bulk.
-TEST_F(ServiceWorkerContextTest, UnregisterMultiple) {
+TEST_P(ServiceWorkerContextTestP, UnregisterMultiple) {
GURL origin1_p1("http://www.example.com/test");
GURL origin1_p2("http://www.example.com/hello");
GURL origin2_p1("http://www.example.com:8080/again");
@@ -441,7 +536,7 @@ TEST_F(ServiceWorkerContextTest, UnregisterMultiple) {
}
// Make sure registering a new script shares an existing registration.
-TEST_F(ServiceWorkerContextTest, RegisterNewScript) {
+TEST_P(ServiceWorkerContextTestP, RegisterNewScript) {
GURL pattern("http://www.example.com/");
bool called = false;
@@ -483,7 +578,7 @@ TEST_F(ServiceWorkerContextTest, RegisterNewScript) {
// Make sure that when registering a duplicate pattern+script_url
// combination, that the same registration is used.
-TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) {
+TEST_P(ServiceWorkerContextTestP, RegisterDuplicateScript) {
GURL pattern("http://www.example.com/");
GURL script_url("http://www.example.com/service_worker.js");
@@ -522,7 +617,7 @@ TEST_F(ServiceWorkerContextTest, RegisterDuplicateScript) {
EXPECT_EQ(old_registration_id, notifications_[1].registration_id);
}
-TEST_F(ServiceWorkerContextTest, ProviderHostIterator) {
+TEST_P(ServiceWorkerContextTestP, ProviderHostIterator) {
const int kRenderProcessId1 = 1;
const int kRenderProcessId2 = 2;
const GURL kOrigin1 = GURL("http://www.example.com/");
@@ -606,22 +701,29 @@ TEST_F(ServiceWorkerContextTest, ProviderHostIterator) {
class ServiceWorkerContextRecoveryTest
: public ServiceWorkerContextTest,
- public testing::WithParamInterface<bool> {
+ public testing::WithParamInterface<testing::tuple<bool, bool>> {
public:
ServiceWorkerContextRecoveryTest() {}
virtual ~ServiceWorkerContextRecoveryTest() {}
-};
-INSTANTIATE_TEST_CASE_P(ServiceWorkerContextRecoveryTest,
- ServiceWorkerContextRecoveryTest,
- testing::Values(true, false));
+ protected:
+ void SetUp() override {
+ if (is_mojo_enabled()) {
+ base::CommandLine::ForCurrentProcess()->AppendSwitch(
+ switches::kMojoServiceWorker);
+ }
+ ServiceWorkerContextTest::SetUp();
+ }
+
+ bool is_mojo_enabled() const { return testing::get<0>(GetParam()); }
+ bool is_storage_on_disk() const { return testing::get<1>(GetParam()); }
+};
TEST_P(ServiceWorkerContextRecoveryTest, DeleteAndStartOver) {
GURL pattern("http://www.example.com/");
GURL script_url("http://www.example.com/service_worker.js");
- bool is_storage_on_disk = GetParam();
- if (is_storage_on_disk) {
+ if (is_storage_on_disk()) {
// Reinitialize the helper to test on-disk storage.
base::ScopedTempDir user_data_directory;
ASSERT_TRUE(user_data_directory.CreateUniqueTempDir());
@@ -709,5 +811,12 @@ TEST_P(ServiceWorkerContextRecoveryTest, DeleteAndStartOver) {
EXPECT_EQ(registration_id, notifications_[2].registration_id);
}
+INSTANTIATE_TEST_CASE_P(ServiceWorkerContextTest,
+ ServiceWorkerContextTestP,
+ testing::Bool());
+
+INSTANTIATE_TEST_CASE_P(ServiceWorkerContextRecoveryTest,
+ ServiceWorkerContextRecoveryTest,
+ testing::Combine(testing::Bool(), testing::Bool()));
} // namespace content
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698