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 |