| Index: content/browser/service_worker/service_worker_version_unittest.cc
|
| diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
|
| index 53a36271e64207d1f5c38c87bac50849c95951ea..b5b1d67dc6e99e19ee106b583ec87b9d0593edd0 100644
|
| --- a/content/browser/service_worker/service_worker_version_unittest.cc
|
| +++ b/content/browser/service_worker/service_worker_version_unittest.cc
|
| @@ -38,8 +38,6 @@
|
| IPC_MESSAGE_CONTROL0(TestMsg_Message)
|
| IPC_MESSAGE_ROUTED1(TestMsg_MessageFromWorker, int)
|
|
|
| -IPC_MESSAGE_CONTROL1(TestMsg_TestEvent, int)
|
| -IPC_MESSAGE_CONTROL2(TestMsg_TestEvent_Multiple, int, int)
|
| IPC_MESSAGE_ROUTED2(TestMsg_TestEventResult, int, std::string)
|
|
|
| // ---------------------------------------------------------------------------
|
| @@ -50,27 +48,9 @@ namespace {
|
|
|
| class MessageReceiver : public EmbeddedWorkerTestHelper {
|
| public:
|
| - MessageReceiver()
|
| - : EmbeddedWorkerTestHelper(base::FilePath()),
|
| - current_embedded_worker_id_(0) {}
|
| + MessageReceiver() : EmbeddedWorkerTestHelper(base::FilePath()) {}
|
| ~MessageReceiver() override {}
|
|
|
| - bool OnMessageToWorker(int thread_id,
|
| - int embedded_worker_id,
|
| - const IPC::Message& message) override {
|
| - if (EmbeddedWorkerTestHelper::OnMessageToWorker(
|
| - thread_id, embedded_worker_id, message)) {
|
| - return true;
|
| - }
|
| - current_embedded_worker_id_ = embedded_worker_id;
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(MessageReceiver, message)
|
| - IPC_MESSAGE_HANDLER(TestMsg_Message, OnMessage)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| - }
|
| -
|
| void SimulateSendValueToBrowser(int embedded_worker_id, int value) {
|
| SimulateSend(new TestMsg_MessageFromWorker(embedded_worker_id, value));
|
| }
|
| @@ -87,7 +67,6 @@ class MessageReceiver : public EmbeddedWorkerTestHelper {
|
| // Do nothing.
|
| }
|
|
|
| - int current_embedded_worker_id_;
|
| DISALLOW_COPY_AND_ASSIGN(MessageReceiver);
|
| };
|
|
|
| @@ -1263,15 +1242,15 @@ TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
|
|
|
| // Invalid subscope, should kill worker (but in tests will only increase bad
|
| // message count).
|
| - version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, GURL()),
|
| - valid_origin_list);
|
| + version_->RegisterForeignFetchScopes(std::vector<GURL>(1, GURL()),
|
| + valid_origin_list);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(1, helper_->mock_render_process_host()->bad_msg_count());
|
| EXPECT_EQ(0u, version_->foreign_fetch_scopes_.size());
|
| EXPECT_EQ(0u, version_->foreign_fetch_origins_.size());
|
|
|
| // Subscope outside the scope of the worker.
|
| - version_->OnRegisterForeignFetchScopes(
|
| + version_->RegisterForeignFetchScopes(
|
| std::vector<GURL>(1, GURL("http://www.example.com/wrong")),
|
| valid_origin_list);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -1280,7 +1259,7 @@ TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
|
| EXPECT_EQ(0u, version_->foreign_fetch_origins_.size());
|
|
|
| // Subscope on wrong origin.
|
| - version_->OnRegisterForeignFetchScopes(
|
| + version_->RegisterForeignFetchScopes(
|
| std::vector<GURL>(1, GURL("http://example.com/test/")),
|
| valid_origin_list);
|
| base::RunLoop().RunUntilIdle();
|
| @@ -1289,7 +1268,7 @@ TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
|
| EXPECT_EQ(0u, version_->foreign_fetch_origins_.size());
|
|
|
| // Invalid origin.
|
| - version_->OnRegisterForeignFetchScopes(
|
| + version_->RegisterForeignFetchScopes(
|
| valid_scopes, std::vector<url::Origin>(1, url::Origin()));
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count());
|
| @@ -1297,8 +1276,8 @@ TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
|
| EXPECT_EQ(0u, version_->foreign_fetch_origins_.size());
|
|
|
| // Valid subscope, no origins.
|
| - version_->OnRegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_1),
|
| - all_origins);
|
| + version_->RegisterForeignFetchScopes(std::vector<GURL>(1, valid_scope_1),
|
| + all_origins);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count());
|
| EXPECT_EQ(1u, version_->foreign_fetch_scopes_.size());
|
| @@ -1306,7 +1285,7 @@ TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) {
|
| EXPECT_EQ(0u, version_->foreign_fetch_origins_.size());
|
|
|
| // Valid subscope, explicit origins.
|
| - version_->OnRegisterForeignFetchScopes(valid_scopes, valid_origin_list);
|
| + version_->RegisterForeignFetchScopes(valid_scopes, valid_origin_list);
|
| base::RunLoop().RunUntilIdle();
|
| EXPECT_EQ(4, helper_->mock_render_process_host()->bad_msg_count());
|
| EXPECT_EQ(2u, version_->foreign_fetch_scopes_.size());
|
| @@ -1348,7 +1327,7 @@ TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) {
|
| base::Time::Now()));
|
| }
|
|
|
| -TEST_F(ServiceWorkerVersionTest, DispatchEvent) {
|
| +TEST_F(ServiceWorkerVersionTest, RegisterRequestCallback) {
|
| ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
|
|
|
| // Activate and start worker.
|
| @@ -1369,13 +1348,6 @@ TEST_F(ServiceWorkerVersionTest, DispatchEvent) {
|
| version_->RegisterRequestCallback<TestMsg_TestEventResult>(
|
| request_id, base::Bind(&ReceiveTestEventResult, &received_request_id,
|
| &received_data, runner->QuitClosure()));
|
| - version_->DispatchEvent({request_id}, TestMsg_TestEvent(request_id));
|
| -
|
| - // Verify event got dispatched to worker.
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_EQ(1u, helper_->inner_ipc_sink()->message_count());
|
| - const IPC::Message* msg = helper_->inner_ipc_sink()->GetMessageAt(0);
|
| - EXPECT_EQ(TestMsg_TestEvent::ID, msg->type());
|
|
|
| // Simulate sending reply to event.
|
| std::string reply("foobar");
|
| @@ -1476,152 +1448,4 @@ TEST_F(ServiceWorkerFailToStartTest, RestartStalledWorker) {
|
| EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
|
| }
|
|
|
| -TEST_F(ServiceWorkerVersionTest, DispatchConcurrentEvent) {
|
| - ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
|
| -
|
| - // Activate and start worker.
|
| - version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
|
| - version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC,
|
| - CreateReceiverOnCurrentThread(&status));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(SERVICE_WORKER_OK, status);
|
| - EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
|
| -
|
| - // Start first request and dispatch test event.
|
| - scoped_refptr<MessageLoopRunner> runner1(new MessageLoopRunner);
|
| - ServiceWorkerStatusCode status1 = SERVICE_WORKER_OK; // dummy value
|
| - int request_id1 = version_->StartRequest(
|
| - ServiceWorkerMetrics::EventType::SYNC,
|
| - CreateReceiverOnCurrentThread(&status1, runner1->QuitClosure()));
|
| - int received_request_id1 = 0;
|
| - std::string received_data1;
|
| - version_->RegisterRequestCallback<TestMsg_TestEventResult>(
|
| - request_id1, base::Bind(&ReceiveTestEventResult, &received_request_id1,
|
| - &received_data1, runner1->QuitClosure()));
|
| - version_->DispatchEvent({request_id1}, TestMsg_TestEvent(request_id1));
|
| -
|
| - // Start second request and dispatch test event.
|
| - scoped_refptr<MessageLoopRunner> runner2(new MessageLoopRunner);
|
| - ServiceWorkerStatusCode status2 = SERVICE_WORKER_OK; // dummy value
|
| - int request_id2 = version_->StartRequest(
|
| - ServiceWorkerMetrics::EventType::SYNC,
|
| - CreateReceiverOnCurrentThread(&status2, runner2->QuitClosure()));
|
| - int received_request_id2 = 0;
|
| - std::string received_data2;
|
| - version_->RegisterRequestCallback<TestMsg_TestEventResult>(
|
| - request_id2, base::Bind(&ReceiveTestEventResult, &received_request_id2,
|
| - &received_data2, runner2->QuitClosure()));
|
| - version_->DispatchEvent({request_id2}, TestMsg_TestEvent(request_id2));
|
| -
|
| - // Make sure events got dispatched in same order.
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_EQ(2u, helper_->inner_ipc_sink()->message_count());
|
| - const IPC::Message* msg = helper_->inner_ipc_sink()->GetMessageAt(0);
|
| - ASSERT_EQ(TestMsg_TestEvent::ID, msg->type());
|
| - TestMsg_TestEvent::Param params;
|
| - TestMsg_TestEvent::Read(msg, ¶ms);
|
| - EXPECT_EQ(request_id1, std::get<0>(params));
|
| - msg = helper_->inner_ipc_sink()->GetMessageAt(1);
|
| - ASSERT_EQ(TestMsg_TestEvent::ID, msg->type());
|
| - TestMsg_TestEvent::Read(msg, ¶ms);
|
| - EXPECT_EQ(request_id2, std::get<0>(params));
|
| -
|
| - // Reply to second event.
|
| - std::string reply2("foobar");
|
| - helper_->SimulateSendEventResult(
|
| - version_->embedded_worker()->embedded_worker_id(), request_id2, reply2);
|
| - runner2->Run();
|
| -
|
| - // Verify correct message callback got called with correct reply.
|
| - EXPECT_EQ(0, received_request_id1);
|
| - EXPECT_EQ(request_id2, received_request_id2);
|
| - EXPECT_EQ(reply2, received_data2);
|
| - EXPECT_EQ(SERVICE_WORKER_OK, status2);
|
| - EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */,
|
| - base::Time::Now()));
|
| -
|
| - // Reply to first event.
|
| - std::string reply1("hello world");
|
| - helper_->SimulateSendEventResult(
|
| - version_->embedded_worker()->embedded_worker_id(), request_id1, reply1);
|
| - runner1->Run();
|
| -
|
| - // Verify correct response was received.
|
| - EXPECT_EQ(request_id1, received_request_id1);
|
| - EXPECT_EQ(request_id2, received_request_id2);
|
| - EXPECT_EQ(reply1, received_data1);
|
| - EXPECT_EQ(SERVICE_WORKER_OK, status1);
|
| - EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */,
|
| - base::Time::Now()));
|
| -}
|
| -
|
| -TEST_F(ServiceWorkerVersionTest, DispatchEvent_MultipleResponse) {
|
| - ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE;
|
| -
|
| - // Activate and start worker.
|
| - version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
|
| - version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN,
|
| - CreateReceiverOnCurrentThread(&status));
|
| - base::RunLoop().RunUntilIdle();
|
| - EXPECT_EQ(SERVICE_WORKER_OK, status);
|
| - EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
|
| -
|
| - // Start request and dispatch test event.
|
| - scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
|
| - int request_id1 = version_->StartRequest(
|
| - ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
|
| - CreateReceiverOnCurrentThread(&status, runner->QuitClosure()));
|
| - int request_id2 = version_->StartRequest(
|
| - ServiceWorkerMetrics::EventType::FETCH_WAITUNTIL,
|
| - CreateReceiverOnCurrentThread(&status, runner->QuitClosure()));
|
| - int received_request_id1 = 0;
|
| - int received_request_id2 = 0;
|
| - std::string received_data1;
|
| - std::string received_data2;
|
| - version_->RegisterRequestCallback<TestMsg_TestEventResult>(
|
| - request_id1, base::Bind(&ReceiveTestEventResult, &received_request_id1,
|
| - &received_data1, runner->QuitClosure()));
|
| - version_->RegisterRequestCallback<TestMsg_TestEventResult>(
|
| - request_id2, base::Bind(&ReceiveTestEventResult, &received_request_id2,
|
| - &received_data2, runner->QuitClosure()));
|
| - version_->DispatchEvent({request_id1, request_id2},
|
| - TestMsg_TestEvent_Multiple(request_id1, request_id2));
|
| -
|
| - // Verify event got dispatched to worker.
|
| - base::RunLoop().RunUntilIdle();
|
| - ASSERT_EQ(1u, helper_->inner_ipc_sink()->message_count());
|
| - const IPC::Message* msg = helper_->inner_ipc_sink()->GetMessageAt(0);
|
| - EXPECT_EQ(TestMsg_TestEvent_Multiple::ID, msg->type());
|
| -
|
| - // Simulate sending reply to event.
|
| - std::string reply1("foobar1");
|
| - std::string reply2("foobar2");
|
| - helper_->SimulateSendEventResult(
|
| - version_->embedded_worker()->embedded_worker_id(), request_id1, reply1);
|
| - runner->Run();
|
| -
|
| - // Verify message callback got called with correct reply.
|
| - EXPECT_EQ(request_id1, received_request_id1);
|
| - EXPECT_EQ(reply1, received_data1);
|
| - EXPECT_NE(request_id2, received_request_id2);
|
| - EXPECT_NE(reply2, received_data2);
|
| -
|
| - // Simulate sending reply to event.
|
| - helper_->SimulateSendEventResult(
|
| - version_->embedded_worker()->embedded_worker_id(), request_id2, reply2);
|
| - runner->Run();
|
| -
|
| - // Verify message callback got called with correct reply.
|
| - EXPECT_EQ(request_id2, received_request_id2);
|
| - EXPECT_EQ(reply2, received_data2);
|
| -
|
| - // Should not have timed out, so error callback should not have been
|
| - // called and FinishRequest should return true.
|
| - EXPECT_EQ(SERVICE_WORKER_OK, status);
|
| - EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */,
|
| - base::Time::Now()));
|
| - EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */,
|
| - base::Time::Now()));
|
| -}
|
| -
|
| } // namespace content
|
|
|