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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "content/browser/message_port_service.h" | 9 #include "content/browser/message_port_service.h" |
10 #include "content/browser/service_worker/embedded_worker_registry.h" | 10 #include "content/browser/service_worker/embedded_worker_registry.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 #define IPC_MESSAGE_IMPL | 26 #define IPC_MESSAGE_IMPL |
27 #include "ipc/ipc_message_macros.h" | 27 #include "ipc/ipc_message_macros.h" |
28 | 28 |
29 #define IPC_MESSAGE_START TestMsgStart | 29 #define IPC_MESSAGE_START TestMsgStart |
30 | 30 |
31 IPC_MESSAGE_CONTROL0(TestMsg_Message) | 31 IPC_MESSAGE_CONTROL0(TestMsg_Message) |
32 IPC_MESSAGE_ROUTED1(TestMsg_MessageFromWorker, int) | 32 IPC_MESSAGE_ROUTED1(TestMsg_MessageFromWorker, int) |
33 | 33 |
34 IPC_MESSAGE_CONTROL1(TestMsg_TestEvent, int) | 34 IPC_MESSAGE_CONTROL1(TestMsg_TestEvent, int) |
35 IPC_MESSAGE_ROUTED2(TestMsg_TestEventResult, int, std::string) | 35 IPC_MESSAGE_ROUTED2(TestMsg_TestEventResult, int, std::string) |
| 36 IPC_MESSAGE_ROUTED2(TestMsg_TestSimpleEventResult, |
| 37 int, |
| 38 blink::WebServiceWorkerEventResult) |
| 39 |
| 40 IPC_ENUM_TRAITS_MAX_VALUE(blink::WebServiceWorkerEventResult, |
| 41 blink::WebServiceWorkerEventResultLast) |
36 | 42 |
37 // --------------------------------------------------------------------------- | 43 // --------------------------------------------------------------------------- |
38 | 44 |
39 namespace content { | 45 namespace content { |
40 | 46 |
41 namespace { | 47 namespace { |
42 | 48 |
43 class MessageReceiver : public EmbeddedWorkerTestHelper { | 49 class MessageReceiver : public EmbeddedWorkerTestHelper { |
44 public: | 50 public: |
45 MessageReceiver() | 51 MessageReceiver() |
(...skipping 21 matching lines...) Expand all Loading... |
67 SimulateSend(new TestMsg_MessageFromWorker(embedded_worker_id, value)); | 73 SimulateSend(new TestMsg_MessageFromWorker(embedded_worker_id, value)); |
68 } | 74 } |
69 | 75 |
70 void SimulateSendEventResult(int embedded_worker_id, | 76 void SimulateSendEventResult(int embedded_worker_id, |
71 int request_id, | 77 int request_id, |
72 const std::string& reply) { | 78 const std::string& reply) { |
73 SimulateSend( | 79 SimulateSend( |
74 new TestMsg_TestEventResult(embedded_worker_id, request_id, reply)); | 80 new TestMsg_TestEventResult(embedded_worker_id, request_id, reply)); |
75 } | 81 } |
76 | 82 |
| 83 void SimulateSendSimpleEventResult(int embedded_worker_id, |
| 84 int request_id, |
| 85 blink::WebServiceWorkerEventResult reply) { |
| 86 SimulateSend(new TestMsg_TestSimpleEventResult(embedded_worker_id, |
| 87 request_id, reply)); |
| 88 } |
| 89 |
77 private: | 90 private: |
78 void OnMessage() { | 91 void OnMessage() { |
79 // Do nothing. | 92 // Do nothing. |
80 } | 93 } |
81 | 94 |
82 int current_embedded_worker_id_; | 95 int current_embedded_worker_id_; |
83 DISALLOW_COPY_AND_ASSIGN(MessageReceiver); | 96 DISALLOW_COPY_AND_ASSIGN(MessageReceiver); |
84 }; | 97 }; |
85 | 98 |
86 void VerifyCalled(bool* called) { | 99 void VerifyCalled(bool* called) { |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 virtual scoped_ptr<MessageReceiver> GetMessageReceiver() { | 246 virtual scoped_ptr<MessageReceiver> GetMessageReceiver() { |
234 return make_scoped_ptr(new MessageReceiver()); | 247 return make_scoped_ptr(new MessageReceiver()); |
235 } | 248 } |
236 | 249 |
237 void TearDown() override { | 250 void TearDown() override { |
238 version_ = 0; | 251 version_ = 0; |
239 registration_ = 0; | 252 registration_ = 0; |
240 helper_.reset(); | 253 helper_.reset(); |
241 } | 254 } |
242 | 255 |
| 256 void SimulateDispatchEvent() { |
| 257 ServiceWorkerStatusCode status = |
| 258 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value |
| 259 |
| 260 // Make sure worker is running. |
| 261 scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner); |
| 262 version_->RunAfterStartWorker(runner->QuitClosure(), |
| 263 CreateReceiverOnCurrentThread(&status)); |
| 264 runner->Run(); |
| 265 EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, status); |
| 266 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
| 267 |
| 268 // Start request, as if an event is being dispatched. |
| 269 int request_id = |
| 270 version_->StartRequest(ServiceWorkerMetrics::EventType::PUSH, |
| 271 CreateReceiverOnCurrentThread(&status)); |
| 272 base::RunLoop().RunUntilIdle(); |
| 273 |
| 274 // And finish request, as if a response to the event was received. |
| 275 EXPECT_TRUE(version_->FinishRequest(request_id)); |
| 276 base::RunLoop().RunUntilIdle(); |
| 277 EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, status); |
| 278 } |
| 279 |
243 TestBrowserThreadBundle thread_bundle_; | 280 TestBrowserThreadBundle thread_bundle_; |
244 scoped_ptr<MessageReceiver> helper_; | 281 scoped_ptr<MessageReceiver> helper_; |
245 scoped_refptr<ServiceWorkerRegistration> registration_; | 282 scoped_refptr<ServiceWorkerRegistration> registration_; |
246 scoped_refptr<ServiceWorkerVersion> version_; | 283 scoped_refptr<ServiceWorkerVersion> version_; |
247 GURL pattern_; | 284 GURL pattern_; |
248 | 285 |
249 private: | 286 private: |
250 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersionTest); | 287 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerVersionTest); |
251 }; | 288 }; |
252 | 289 |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 EXPECT_EQ(SERVICE_WORKER_OK, status); | 753 EXPECT_EQ(SERVICE_WORKER_OK, status); |
717 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); | 754 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
718 EXPECT_EQ(ServiceWorkerVersion::RUNNING, listener.last_status); | 755 EXPECT_EQ(ServiceWorkerVersion::RUNNING, listener.last_status); |
719 | 756 |
720 version_ = nullptr; | 757 version_ = nullptr; |
721 EXPECT_EQ(ServiceWorkerVersion::STOPPING, listener.last_status); | 758 EXPECT_EQ(ServiceWorkerVersion::STOPPING, listener.last_status); |
722 } | 759 } |
723 | 760 |
724 // Test that update isn't triggered for a non-stale worker. | 761 // Test that update isn't triggered for a non-stale worker. |
725 TEST_F(ServiceWorkerVersionTest, StaleUpdate_FreshWorker) { | 762 TEST_F(ServiceWorkerVersionTest, StaleUpdate_FreshWorker) { |
726 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | |
727 | |
728 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 763 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
729 registration_->SetActiveVersion(version_); | 764 registration_->SetActiveVersion(version_); |
730 registration_->set_last_update_check(base::Time::Now()); | 765 registration_->set_last_update_check(base::Time::Now()); |
731 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), | 766 SimulateDispatchEvent(); |
732 std::string()); | |
733 base::RunLoop().RunUntilIdle(); | |
734 | 767 |
735 EXPECT_EQ(SERVICE_WORKER_OK, status); | |
736 EXPECT_TRUE(version_->stale_time_.is_null()); | 768 EXPECT_TRUE(version_->stale_time_.is_null()); |
737 EXPECT_FALSE(version_->update_timer_.IsRunning()); | 769 EXPECT_FALSE(version_->update_timer_.IsRunning()); |
738 } | 770 } |
739 | 771 |
740 // Test that update isn't triggered for a non-active worker. | 772 // Test that update isn't triggered for a non-active worker. |
741 TEST_F(ServiceWorkerVersionTest, StaleUpdate_NonActiveWorker) { | 773 TEST_F(ServiceWorkerVersionTest, StaleUpdate_NonActiveWorker) { |
742 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 774 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
743 | 775 |
744 version_->SetStatus(ServiceWorkerVersion::INSTALLING); | 776 version_->SetStatus(ServiceWorkerVersion::INSTALLING); |
745 registration_->SetInstallingVersion(version_); | 777 registration_->SetInstallingVersion(version_); |
746 registration_->set_last_update_check(GetYesterday()); | 778 registration_->set_last_update_check(GetYesterday()); |
747 version_->DispatchInstallEvent(CreateReceiverOnCurrentThread(&status)); | 779 version_->DispatchInstallEvent(CreateReceiverOnCurrentThread(&status)); |
748 base::RunLoop().RunUntilIdle(); | 780 base::RunLoop().RunUntilIdle(); |
749 | 781 |
750 EXPECT_EQ(SERVICE_WORKER_OK, status); | 782 EXPECT_EQ(SERVICE_WORKER_OK, status); |
751 EXPECT_TRUE(version_->stale_time_.is_null()); | 783 EXPECT_TRUE(version_->stale_time_.is_null()); |
752 EXPECT_FALSE(version_->update_timer_.IsRunning()); | 784 EXPECT_FALSE(version_->update_timer_.IsRunning()); |
753 } | 785 } |
754 | 786 |
755 // Test that staleness is detected when starting a worker. | 787 // Test that staleness is detected when starting a worker. |
756 TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) { | 788 TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) { |
757 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 789 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
758 | 790 |
759 // Starting the worker marks it as stale. | 791 // Starting the worker marks it as stale. |
760 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 792 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
761 registration_->SetActiveVersion(version_); | 793 registration_->SetActiveVersion(version_); |
762 registration_->set_last_update_check(GetYesterday()); | 794 registration_->set_last_update_check(GetYesterday()); |
763 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), | 795 SimulateDispatchEvent(); |
764 std::string()); | |
765 base::RunLoop().RunUntilIdle(); | |
766 EXPECT_EQ(SERVICE_WORKER_OK, status); | |
767 EXPECT_FALSE(version_->stale_time_.is_null()); | 796 EXPECT_FALSE(version_->stale_time_.is_null()); |
768 EXPECT_FALSE(version_->update_timer_.IsRunning()); | 797 EXPECT_FALSE(version_->update_timer_.IsRunning()); |
769 | 798 |
770 // Update is actually scheduled after the worker stops. | 799 // Update is actually scheduled after the worker stops. |
771 version_->StopWorker(CreateReceiverOnCurrentThread(&status)); | 800 version_->StopWorker(CreateReceiverOnCurrentThread(&status)); |
772 base::RunLoop().RunUntilIdle(); | 801 base::RunLoop().RunUntilIdle(); |
773 EXPECT_EQ(SERVICE_WORKER_OK, status); | 802 EXPECT_EQ(SERVICE_WORKER_OK, status); |
774 EXPECT_TRUE(version_->stale_time_.is_null()); | 803 EXPECT_TRUE(version_->stale_time_.is_null()); |
775 EXPECT_TRUE(version_->update_timer_.IsRunning()); | 804 EXPECT_TRUE(version_->update_timer_.IsRunning()); |
776 } | 805 } |
777 | 806 |
778 // Test that staleness is detected on a running worker. | 807 // Test that staleness is detected on a running worker. |
779 TEST_F(ServiceWorkerVersionTest, StaleUpdate_RunningWorker) { | 808 TEST_F(ServiceWorkerVersionTest, StaleUpdate_RunningWorker) { |
780 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | |
781 | |
782 // Start a fresh worker. | 809 // Start a fresh worker. |
783 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 810 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
784 registration_->SetActiveVersion(version_); | 811 registration_->SetActiveVersion(version_); |
785 registration_->set_last_update_check(base::Time::Now()); | 812 registration_->set_last_update_check(base::Time::Now()); |
786 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), | 813 SimulateDispatchEvent(); |
787 std::string()); | |
788 base::RunLoop().RunUntilIdle(); | |
789 EXPECT_EQ(SERVICE_WORKER_OK, status); | |
790 EXPECT_TRUE(version_->stale_time_.is_null()); | 814 EXPECT_TRUE(version_->stale_time_.is_null()); |
791 | 815 |
792 // Simulate it running for a day. It will be marked stale. | 816 // Simulate it running for a day. It will be marked stale. |
793 registration_->set_last_update_check(GetYesterday()); | 817 registration_->set_last_update_check(GetYesterday()); |
794 version_->OnTimeoutTimer(); | 818 version_->OnTimeoutTimer(); |
795 EXPECT_FALSE(version_->stale_time_.is_null()); | 819 EXPECT_FALSE(version_->stale_time_.is_null()); |
796 EXPECT_FALSE(version_->update_timer_.IsRunning()); | 820 EXPECT_FALSE(version_->update_timer_.IsRunning()); |
797 | 821 |
798 // Simulate it running for past the wait threshold. The update will be | 822 // Simulate it running for past the wait threshold. The update will be |
799 // scheduled. | 823 // scheduled. |
(...skipping 12 matching lines...) Expand all Loading... |
812 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 836 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
813 registration_->SetActiveVersion(version_); | 837 registration_->SetActiveVersion(version_); |
814 registration_->set_last_update_check(GetYesterday()); | 838 registration_->set_last_update_check(GetYesterday()); |
815 base::TimeTicks stale_time = | 839 base::TimeTicks stale_time = |
816 base::TimeTicks::Now() - | 840 base::TimeTicks::Now() - |
817 base::TimeDelta::FromMinutes( | 841 base::TimeDelta::FromMinutes( |
818 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); | 842 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); |
819 version_->stale_time_ = stale_time; | 843 version_->stale_time_ = stale_time; |
820 | 844 |
821 // Stale time is not deferred. | 845 // Stale time is not deferred. |
822 version_->DispatchPushEvent( | 846 version_->RunAfterStartWorker( |
823 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); | 847 base::Bind(&base::DoNothing), |
824 version_->DispatchPushEvent( | 848 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
825 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); | 849 version_->RunAfterStartWorker( |
| 850 base::Bind(&base::DoNothing), |
| 851 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| 852 base::RunLoop().RunUntilIdle(); |
826 EXPECT_EQ(stale_time, version_->stale_time_); | 853 EXPECT_EQ(stale_time, version_->stale_time_); |
827 | 854 |
828 // Timeout triggers the update. | 855 // Timeout triggers the update. |
829 version_->OnTimeoutTimer(); | 856 version_->OnTimeoutTimer(); |
830 EXPECT_TRUE(version_->stale_time_.is_null()); | 857 EXPECT_TRUE(version_->stale_time_.is_null()); |
831 EXPECT_TRUE(version_->update_timer_.IsRunning()); | 858 EXPECT_TRUE(version_->update_timer_.IsRunning()); |
832 | 859 |
833 // Update timer is not deferred. | 860 // Update timer is not deferred. |
834 base::TimeTicks run_time = version_->update_timer_.desired_run_time(); | 861 base::TimeTicks run_time = version_->update_timer_.desired_run_time(); |
835 version_->DispatchPushEvent( | 862 SimulateDispatchEvent(); |
836 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); | 863 SimulateDispatchEvent(); |
837 version_->DispatchPushEvent( | 864 SimulateDispatchEvent(); |
838 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); | |
839 version_->DispatchPushEvent( | |
840 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); | |
841 base::RunLoop().RunUntilIdle(); | 865 base::RunLoop().RunUntilIdle(); |
842 EXPECT_TRUE(version_->stale_time_.is_null()); | 866 EXPECT_TRUE(version_->stale_time_.is_null()); |
843 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time()); | 867 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time()); |
844 } | 868 } |
845 | 869 |
846 TEST_F(ServiceWorkerWaitForeverInFetchTest, RequestTimeout) { | 870 TEST_F(ServiceWorkerWaitForeverInFetchTest, RequestTimeout) { |
847 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value | 871 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
848 | 872 |
849 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); | 873 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
850 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), | 874 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), |
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1418 runner1->Run(); | 1442 runner1->Run(); |
1419 | 1443 |
1420 // Verify correct response was received. | 1444 // Verify correct response was received. |
1421 EXPECT_EQ(request_id1, received_request_id1); | 1445 EXPECT_EQ(request_id1, received_request_id1); |
1422 EXPECT_EQ(request_id2, received_request_id2); | 1446 EXPECT_EQ(request_id2, received_request_id2); |
1423 EXPECT_EQ(reply1, received_data1); | 1447 EXPECT_EQ(reply1, received_data1); |
1424 EXPECT_EQ(SERVICE_WORKER_OK, status1); | 1448 EXPECT_EQ(SERVICE_WORKER_OK, status1); |
1425 EXPECT_TRUE(version_->FinishRequest(request_id1)); | 1449 EXPECT_TRUE(version_->FinishRequest(request_id1)); |
1426 } | 1450 } |
1427 | 1451 |
| 1452 TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Completed) { |
| 1453 ServiceWorkerStatusCode status = |
| 1454 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value |
| 1455 |
| 1456 // Activate and start worker. |
| 1457 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
| 1458 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
| 1459 base::RunLoop().RunUntilIdle(); |
| 1460 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 1461 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
| 1462 |
| 1463 // Start request and dispatch test event. |
| 1464 status = SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value |
| 1465 scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner); |
| 1466 int request_id = version_->StartRequest( |
| 1467 ServiceWorkerMetrics::EventType::SYNC, |
| 1468 CreateReceiverOnCurrentThread(&status, runner->QuitClosure())); |
| 1469 version_->DispatchSimpleEvent<TestMsg_TestSimpleEventResult>( |
| 1470 request_id, TestMsg_TestEvent(request_id)); |
| 1471 |
| 1472 // Verify event got dispatched to worker. |
| 1473 base::RunLoop().RunUntilIdle(); |
| 1474 ASSERT_EQ(1u, helper_->inner_ipc_sink()->message_count()); |
| 1475 const IPC::Message* msg = helper_->inner_ipc_sink()->GetMessageAt(0); |
| 1476 EXPECT_EQ(TestMsg_TestEvent::ID, msg->type()); |
| 1477 |
| 1478 // Simulate sending reply to event. |
| 1479 helper_->SimulateSendSimpleEventResult( |
| 1480 version_->embedded_worker()->embedded_worker_id(), request_id, |
| 1481 blink::WebServiceWorkerEventResultCompleted); |
| 1482 runner->Run(); |
| 1483 |
| 1484 // Verify callback was called with correct status. |
| 1485 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 1486 } |
| 1487 |
| 1488 TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Rejected) { |
| 1489 ServiceWorkerStatusCode status = |
| 1490 SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value |
| 1491 |
| 1492 // Activate and start worker. |
| 1493 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
| 1494 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
| 1495 base::RunLoop().RunUntilIdle(); |
| 1496 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 1497 EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
| 1498 |
| 1499 // Start request and dispatch test event. |
| 1500 status = SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value |
| 1501 scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner); |
| 1502 int request_id = version_->StartRequest( |
| 1503 ServiceWorkerMetrics::EventType::SYNC, |
| 1504 CreateReceiverOnCurrentThread(&status, runner->QuitClosure())); |
| 1505 version_->DispatchSimpleEvent<TestMsg_TestSimpleEventResult>( |
| 1506 request_id, TestMsg_TestEvent(request_id)); |
| 1507 |
| 1508 // Verify event got dispatched to worker. |
| 1509 base::RunLoop().RunUntilIdle(); |
| 1510 ASSERT_EQ(1u, helper_->inner_ipc_sink()->message_count()); |
| 1511 const IPC::Message* msg = helper_->inner_ipc_sink()->GetMessageAt(0); |
| 1512 EXPECT_EQ(TestMsg_TestEvent::ID, msg->type()); |
| 1513 |
| 1514 // Simulate sending reply to event. |
| 1515 helper_->SimulateSendSimpleEventResult( |
| 1516 version_->embedded_worker()->embedded_worker_id(), request_id, |
| 1517 blink::WebServiceWorkerEventResultRejected); |
| 1518 runner->Run(); |
| 1519 |
| 1520 // Verify callback was called with correct status. |
| 1521 EXPECT_EQ(SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED, status); |
| 1522 } |
| 1523 |
1428 } // namespace content | 1524 } // namespace content |
OLD | NEW |