| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/shared_worker/shared_worker_service_impl.h" | 5 #include "content/browser/shared_worker/shared_worker_service_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 &local_port_route_id_, | 280 &local_port_route_id_, |
| 281 &local_port_id_); | 281 &local_port_id_); |
| 282 PostCreateWorker(renderer_host_, url, name, document_id, | 282 PostCreateWorker(renderer_host_, url, name, document_id, |
| 283 render_frame_route_id, &create_worker_reply_); | 283 render_frame_route_id, &create_worker_reply_); |
| 284 } | 284 } |
| 285 void SendQueueMessages() { | 285 void SendQueueMessages() { |
| 286 EXPECT_TRUE(renderer_host_->OnMessageReceived( | 286 EXPECT_TRUE(renderer_host_->OnMessageReceived( |
| 287 new MessagePortHostMsg_QueueMessages(remote_port_id_))); | 287 new MessagePortHostMsg_QueueMessages(remote_port_id_))); |
| 288 } | 288 } |
| 289 void SendPostMessage(const std::string& data) { | 289 void SendPostMessage(const std::string& data) { |
| 290 const std::vector<TransferredMessagePort> empty_ports; | 290 const std::vector<int> empty_ports; |
| 291 EXPECT_TRUE( | 291 EXPECT_TRUE( |
| 292 renderer_host_->OnMessageReceived(new MessagePortHostMsg_PostMessage( | 292 renderer_host_->OnMessageReceived(new MessagePortHostMsg_PostMessage( |
| 293 local_port_id_, | 293 local_port_id_, base::ASCIIToUTF16(data), empty_ports))); |
| 294 MessagePortMessage(base::ASCIIToUTF16(data)), empty_ports))); | |
| 295 } | 294 } |
| 296 void SendConnect() { | 295 void SendConnect() { |
| 297 EXPECT_TRUE( | 296 EXPECT_TRUE( |
| 298 renderer_host_->OnMessageReceived(new ViewHostMsg_ForwardToWorker( | 297 renderer_host_->OnMessageReceived(new ViewHostMsg_ForwardToWorker( |
| 299 WorkerMsg_Connect(create_worker_reply_.route_id, remote_port_id_, | 298 WorkerMsg_Connect(create_worker_reply_.route_id, remote_port_id_, |
| 300 MSG_ROUTING_NONE)))); | 299 MSG_ROUTING_NONE)))); |
| 301 } | 300 } |
| 302 void SendSendQueuedMessages( | 301 void SendSendQueuedMessages( |
| 303 const std::vector<QueuedMessage>& queued_messages) { | 302 const std::vector<QueuedMessage>& queued_messages) { |
| 304 EXPECT_TRUE(renderer_host_->OnMessageReceived( | 303 EXPECT_TRUE(renderer_host_->OnMessageReceived( |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 371 } | 370 } |
| 372 | 371 |
| 373 void CheckMessagePortMsgMessage(MockRendererProcessHost* renderer_host, | 372 void CheckMessagePortMsgMessage(MockRendererProcessHost* renderer_host, |
| 374 int expected_msg_route_id, | 373 int expected_msg_route_id, |
| 375 std::string expected_data) { | 374 std::string expected_data) { |
| 376 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage()); | 375 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage()); |
| 377 EXPECT_EQ(MessagePortMsg_Message::ID, msg->type()); | 376 EXPECT_EQ(MessagePortMsg_Message::ID, msg->type()); |
| 378 EXPECT_EQ(expected_msg_route_id, msg->routing_id()); | 377 EXPECT_EQ(expected_msg_route_id, msg->routing_id()); |
| 379 MessagePortMsg_Message::Param params; | 378 MessagePortMsg_Message::Param params; |
| 380 EXPECT_TRUE(MessagePortMsg_Message::Read(msg.get(), ¶ms)); | 379 EXPECT_TRUE(MessagePortMsg_Message::Read(msg.get(), ¶ms)); |
| 381 base::string16 data = base::get<0>(params).message_as_string; | 380 base::string16 data = base::get<0>(params); |
| 382 EXPECT_EQ(base::ASCIIToUTF16(expected_data), data); | 381 EXPECT_EQ(base::ASCIIToUTF16(expected_data), data); |
| 383 } | 382 } |
| 384 | 383 |
| 385 void CheckViewMsgWorkerConnected(MockRendererProcessHost* renderer_host, | 384 void CheckViewMsgWorkerConnected(MockRendererProcessHost* renderer_host, |
| 386 MockSharedWorkerConnector* connector) { | 385 MockSharedWorkerConnector* connector) { |
| 387 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage()); | 386 std::unique_ptr<IPC::Message> msg(renderer_host->PopMessage()); |
| 388 EXPECT_EQ(ViewMsg_WorkerConnected::ID, msg->type()); | 387 EXPECT_EQ(ViewMsg_WorkerConnected::ID, msg->type()); |
| 389 EXPECT_EQ(connector->route_id(), msg->routing_id()); | 388 EXPECT_EQ(connector->route_id(), msg->routing_id()); |
| 390 } | 389 } |
| 391 | 390 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 | 466 |
| 468 // When SharedWorkerConnector side sends MessagePortHostMsg_PostMessage, | 467 // When SharedWorkerConnector side sends MessagePortHostMsg_PostMessage, |
| 469 // SharedWorker side shuold receive MessagePortMsg_Message. | 468 // SharedWorker side shuold receive MessagePortMsg_Message. |
| 470 connector->SendPostMessage("test1"); | 469 connector->SendPostMessage("test1"); |
| 471 EXPECT_EQ(1U, renderer_host->QueuedMessageCount()); | 470 EXPECT_EQ(1U, renderer_host->QueuedMessageCount()); |
| 472 CheckMessagePortMsgMessage( | 471 CheckMessagePortMsgMessage( |
| 473 renderer_host.get(), worker_msg_port_route_id, "test1"); | 472 renderer_host.get(), worker_msg_port_route_id, "test1"); |
| 474 | 473 |
| 475 // When SharedWorker side sends MessagePortHostMsg_PostMessage, | 474 // When SharedWorker side sends MessagePortHostMsg_PostMessage, |
| 476 // SharedWorkerConnector side shuold receive MessagePortMsg_Message. | 475 // SharedWorkerConnector side shuold receive MessagePortMsg_Message. |
| 477 const std::vector<TransferredMessagePort> empty_ports; | 476 const std::vector<int> empty_ports; |
| 478 EXPECT_TRUE( | 477 EXPECT_TRUE( |
| 479 renderer_host->OnMessageReceived(new MessagePortHostMsg_PostMessage( | 478 renderer_host->OnMessageReceived(new MessagePortHostMsg_PostMessage( |
| 480 connector->remote_port_id(), | 479 connector->remote_port_id(), |
| 481 MessagePortMessage(base::ASCIIToUTF16("test2")), empty_ports))); | 480 base::ASCIIToUTF16("test2"), empty_ports))); |
| 482 EXPECT_EQ(1U, renderer_host->QueuedMessageCount()); | 481 EXPECT_EQ(1U, renderer_host->QueuedMessageCount()); |
| 483 CheckMessagePortMsgMessage( | 482 CheckMessagePortMsgMessage( |
| 484 renderer_host.get(), connector->local_port_route_id(), "test2"); | 483 renderer_host.get(), connector->local_port_route_id(), "test2"); |
| 485 | 484 |
| 486 // UpdateWorkerDependency should not be called. | 485 // UpdateWorkerDependency should not be called. |
| 487 EXPECT_EQ(0, s_update_worker_dependency_call_count_); | 486 EXPECT_EQ(0, s_update_worker_dependency_call_count_); |
| 488 } | 487 } |
| 489 | 488 |
| 490 TEST_F(SharedWorkerServiceImplTest, TwoRendererTest) { | 489 TEST_F(SharedWorkerServiceImplTest, TwoRendererTest) { |
| 491 // The first renderer host. | 490 // The first renderer host. |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 | 563 |
| 565 // When SharedWorkerConnector side sends MessagePortHostMsg_PostMessage, | 564 // When SharedWorkerConnector side sends MessagePortHostMsg_PostMessage, |
| 566 // SharedWorker side shuold receive MessagePortMsg_Message. | 565 // SharedWorker side shuold receive MessagePortMsg_Message. |
| 567 connector0->SendPostMessage("test1"); | 566 connector0->SendPostMessage("test1"); |
| 568 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); | 567 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); |
| 569 CheckMessagePortMsgMessage( | 568 CheckMessagePortMsgMessage( |
| 570 renderer_host0.get(), worker_msg_port_route_id1, "test1"); | 569 renderer_host0.get(), worker_msg_port_route_id1, "test1"); |
| 571 | 570 |
| 572 // When SharedWorker side sends MessagePortHostMsg_PostMessage, | 571 // When SharedWorker side sends MessagePortHostMsg_PostMessage, |
| 573 // SharedWorkerConnector side shuold receive MessagePortMsg_Message. | 572 // SharedWorkerConnector side shuold receive MessagePortMsg_Message. |
| 574 const std::vector<TransferredMessagePort> empty_ports; | 573 const std::vector<int> empty_ports; |
| 575 EXPECT_TRUE( | 574 EXPECT_TRUE( |
| 576 renderer_host0->OnMessageReceived(new MessagePortHostMsg_PostMessage( | 575 renderer_host0->OnMessageReceived(new MessagePortHostMsg_PostMessage( |
| 577 connector0->remote_port_id(), | 576 connector0->remote_port_id(), |
| 578 MessagePortMessage(base::ASCIIToUTF16("test2")), empty_ports))); | 577 base::ASCIIToUTF16("test2"), empty_ports))); |
| 579 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); | 578 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); |
| 580 CheckMessagePortMsgMessage( | 579 CheckMessagePortMsgMessage( |
| 581 renderer_host0.get(), connector0->local_port_route_id(), "test2"); | 580 renderer_host0.get(), connector0->local_port_route_id(), "test2"); |
| 582 | 581 |
| 583 // The second renderer host. | 582 // The second renderer host. |
| 584 std::unique_ptr<MockRendererProcessHost> renderer_host1( | 583 std::unique_ptr<MockRendererProcessHost> renderer_host1( |
| 585 new MockRendererProcessHost(kProcessIDs[1], | 584 new MockRendererProcessHost(kProcessIDs[1], |
| 586 browser_context_->GetResourceContext(), | 585 browser_context_->GetResourceContext(), |
| 587 *partition_.get())); | 586 *partition_.get())); |
| 588 std::unique_ptr<MockSharedWorkerConnector> connector1( | 587 std::unique_ptr<MockSharedWorkerConnector> connector1( |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 647 connector1->SendPostMessage("test3"); | 646 connector1->SendPostMessage("test3"); |
| 648 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); | 647 EXPECT_EQ(1U, renderer_host0->QueuedMessageCount()); |
| 649 CheckMessagePortMsgMessage( | 648 CheckMessagePortMsgMessage( |
| 650 renderer_host0.get(), worker_msg_port_route_id2, "test3"); | 649 renderer_host0.get(), worker_msg_port_route_id2, "test3"); |
| 651 | 650 |
| 652 // When SharedWorker side sends MessagePortHostMsg_PostMessage, | 651 // When SharedWorker side sends MessagePortHostMsg_PostMessage, |
| 653 // SharedWorkerConnector side shuold receive MessagePortMsg_Message. | 652 // SharedWorkerConnector side shuold receive MessagePortMsg_Message. |
| 654 EXPECT_TRUE( | 653 EXPECT_TRUE( |
| 655 renderer_host0->OnMessageReceived(new MessagePortHostMsg_PostMessage( | 654 renderer_host0->OnMessageReceived(new MessagePortHostMsg_PostMessage( |
| 656 connector1->remote_port_id(), | 655 connector1->remote_port_id(), |
| 657 MessagePortMessage(base::ASCIIToUTF16("test4")), empty_ports))); | 656 base::ASCIIToUTF16("test4"), empty_ports))); |
| 658 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount()); | 657 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount()); |
| 659 CheckMessagePortMsgMessage( | 658 CheckMessagePortMsgMessage( |
| 660 renderer_host1.get(), connector1->local_port_route_id(), "test4"); | 659 renderer_host1.get(), connector1->local_port_route_id(), "test4"); |
| 661 | 660 |
| 662 EXPECT_EQ(1, s_update_worker_dependency_call_count_); | 661 EXPECT_EQ(1, s_update_worker_dependency_call_count_); |
| 663 renderer_host1.reset(); | 662 renderer_host1.reset(); |
| 664 // UpdateWorkerDependency should be called. | 663 // UpdateWorkerDependency should be called. |
| 665 EXPECT_EQ(2, s_update_worker_dependency_call_count_); | 664 EXPECT_EQ(2, s_update_worker_dependency_call_count_); |
| 666 EXPECT_EQ(0U, s_worker_dependency_added_ids_.size()); | 665 EXPECT_EQ(0U, s_worker_dependency_added_ids_.size()); |
| 667 EXPECT_EQ(1U, s_worker_dependency_removed_ids_.size()); | 666 EXPECT_EQ(1U, s_worker_dependency_removed_ids_.size()); |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 918 kDocumentIDs[2], | 917 kDocumentIDs[2], |
| 919 kRenderFrameRouteIDs[2]); | 918 kRenderFrameRouteIDs[2]); |
| 920 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id()); | 919 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id()); |
| 921 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount()); | 920 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount()); |
| 922 RunAllPendingInMessageLoop(); | 921 RunAllPendingInMessageLoop(); |
| 923 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount()); | 922 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount()); |
| 924 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get()); | 923 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get()); |
| 925 } | 924 } |
| 926 | 925 |
| 927 } // namespace content | 926 } // namespace content |
| OLD | NEW |