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

Side by Side Diff: content/browser/service_worker/service_worker_version_unittest.cc

Issue 1636483002: Update the PushEvent to have a nullable PushMessageData (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
OLDNEW
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"
11 #include "content/browser/service_worker/embedded_worker_test_helper.h" 11 #include "content/browser/service_worker/embedded_worker_test_helper.h"
12 #include "content/browser/service_worker/service_worker_context_core.h" 12 #include "content/browser/service_worker/service_worker_context_core.h"
13 #include "content/browser/service_worker/service_worker_registration.h" 13 #include "content/browser/service_worker/service_worker_registration.h"
14 #include "content/browser/service_worker/service_worker_test_utils.h" 14 #include "content/browser/service_worker/service_worker_test_utils.h"
15 #include "content/browser/service_worker/service_worker_version.h" 15 #include "content/browser/service_worker/service_worker_version.h"
16 #include "content/common/service_worker/service_worker_utils.h" 16 #include "content/common/service_worker/service_worker_utils.h"
17 #include "content/public/common/push_event_payload.h"
17 #include "content/public/test/mock_render_process_host.h" 18 #include "content/public/test/mock_render_process_host.h"
18 #include "content/public/test/test_browser_thread_bundle.h" 19 #include "content/public/test/test_browser_thread_bundle.h"
19 #include "content/public/test/test_mojo_service.mojom.h" 20 #include "content/public/test/test_mojo_service.mojom.h"
20 #include "content/public/test/test_utils.h" 21 #include "content/public/test/test_utils.h"
21 #include "mojo/public/cpp/bindings/strong_binding.h" 22 #include "mojo/public/cpp/bindings/strong_binding.h"
22 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
23 24
24 // IPC messages for testing --------------------------------------------------- 25 // IPC messages for testing ---------------------------------------------------
25 26
26 #define IPC_MESSAGE_IMPL 27 #define IPC_MESSAGE_IMPL
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 } 702 }
702 703
703 // Test that update isn't triggered for a non-stale worker. 704 // Test that update isn't triggered for a non-stale worker.
704 TEST_F(ServiceWorkerVersionTest, StaleUpdate_FreshWorker) { 705 TEST_F(ServiceWorkerVersionTest, StaleUpdate_FreshWorker) {
705 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 706 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
706 707
707 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 708 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
708 registration_->SetActiveVersion(version_); 709 registration_->SetActiveVersion(version_);
709 registration_->set_last_update_check(base::Time::Now()); 710 registration_->set_last_update_check(base::Time::Now());
710 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), 711 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status),
711 std::string()); 712 PushEventPayload(std::string()));
Peter Beverloo 2016/01/25 17:39:06 Mm. It doesn't seem to be significant for these te
harkness 2016/01/26 12:07:19 Done.
712 base::RunLoop().RunUntilIdle(); 713 base::RunLoop().RunUntilIdle();
713 714
714 EXPECT_EQ(SERVICE_WORKER_OK, status); 715 EXPECT_EQ(SERVICE_WORKER_OK, status);
715 EXPECT_TRUE(version_->stale_time_.is_null()); 716 EXPECT_TRUE(version_->stale_time_.is_null());
716 EXPECT_FALSE(version_->update_timer_.IsRunning()); 717 EXPECT_FALSE(version_->update_timer_.IsRunning());
717 } 718 }
718 719
719 // Test that update isn't triggered for a non-active worker. 720 // Test that update isn't triggered for a non-active worker.
720 TEST_F(ServiceWorkerVersionTest, StaleUpdate_NonActiveWorker) { 721 TEST_F(ServiceWorkerVersionTest, StaleUpdate_NonActiveWorker) {
721 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 722 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
(...skipping 11 matching lines...) Expand all
733 734
734 // Test that staleness is detected when starting a worker. 735 // Test that staleness is detected when starting a worker.
735 TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) { 736 TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) {
736 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 737 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
737 738
738 // Starting the worker marks it as stale. 739 // Starting the worker marks it as stale.
739 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 740 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
740 registration_->SetActiveVersion(version_); 741 registration_->SetActiveVersion(version_);
741 registration_->set_last_update_check(GetYesterday()); 742 registration_->set_last_update_check(GetYesterday());
742 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), 743 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status),
743 std::string()); 744 PushEventPayload(std::string()));
744 base::RunLoop().RunUntilIdle(); 745 base::RunLoop().RunUntilIdle();
745 EXPECT_EQ(SERVICE_WORKER_OK, status); 746 EXPECT_EQ(SERVICE_WORKER_OK, status);
746 EXPECT_FALSE(version_->stale_time_.is_null()); 747 EXPECT_FALSE(version_->stale_time_.is_null());
747 EXPECT_FALSE(version_->update_timer_.IsRunning()); 748 EXPECT_FALSE(version_->update_timer_.IsRunning());
748 749
749 // Update is actually scheduled after the worker stops. 750 // Update is actually scheduled after the worker stops.
750 version_->StopWorker(CreateReceiverOnCurrentThread(&status)); 751 version_->StopWorker(CreateReceiverOnCurrentThread(&status));
751 base::RunLoop().RunUntilIdle(); 752 base::RunLoop().RunUntilIdle();
752 EXPECT_EQ(SERVICE_WORKER_OK, status); 753 EXPECT_EQ(SERVICE_WORKER_OK, status);
753 EXPECT_TRUE(version_->stale_time_.is_null()); 754 EXPECT_TRUE(version_->stale_time_.is_null());
754 EXPECT_TRUE(version_->update_timer_.IsRunning()); 755 EXPECT_TRUE(version_->update_timer_.IsRunning());
755 } 756 }
756 757
757 // Test that staleness is detected on a running worker. 758 // Test that staleness is detected on a running worker.
758 TEST_F(ServiceWorkerVersionTest, StaleUpdate_RunningWorker) { 759 TEST_F(ServiceWorkerVersionTest, StaleUpdate_RunningWorker) {
759 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; 760 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED;
760 761
761 // Start a fresh worker. 762 // Start a fresh worker.
762 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 763 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
763 registration_->SetActiveVersion(version_); 764 registration_->SetActiveVersion(version_);
764 registration_->set_last_update_check(base::Time::Now()); 765 registration_->set_last_update_check(base::Time::Now());
765 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), 766 version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status),
766 std::string()); 767 PushEventPayload(std::string()));
767 base::RunLoop().RunUntilIdle(); 768 base::RunLoop().RunUntilIdle();
768 EXPECT_EQ(SERVICE_WORKER_OK, status); 769 EXPECT_EQ(SERVICE_WORKER_OK, status);
769 EXPECT_TRUE(version_->stale_time_.is_null()); 770 EXPECT_TRUE(version_->stale_time_.is_null());
770 771
771 // Simulate it running for a day. It will be marked stale. 772 // Simulate it running for a day. It will be marked stale.
772 registration_->set_last_update_check(GetYesterday()); 773 registration_->set_last_update_check(GetYesterday());
773 version_->OnTimeoutTimer(); 774 version_->OnTimeoutTimer();
774 EXPECT_FALSE(version_->stale_time_.is_null()); 775 EXPECT_FALSE(version_->stale_time_.is_null());
775 EXPECT_FALSE(version_->update_timer_.IsRunning()); 776 EXPECT_FALSE(version_->update_timer_.IsRunning());
776 777
(...skipping 15 matching lines...) Expand all
792 registration_->SetActiveVersion(version_); 793 registration_->SetActiveVersion(version_);
793 registration_->set_last_update_check(GetYesterday()); 794 registration_->set_last_update_check(GetYesterday());
794 base::TimeTicks stale_time = 795 base::TimeTicks stale_time =
795 base::TimeTicks::Now() - 796 base::TimeTicks::Now() -
796 base::TimeDelta::FromMinutes( 797 base::TimeDelta::FromMinutes(
797 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); 798 ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1);
798 version_->stale_time_ = stale_time; 799 version_->stale_time_ = stale_time;
799 800
800 // Stale time is not deferred. 801 // Stale time is not deferred.
801 version_->DispatchPushEvent( 802 version_->DispatchPushEvent(
802 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); 803 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback),
804 PushEventPayload(std::string()));
803 version_->DispatchPushEvent( 805 version_->DispatchPushEvent(
804 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); 806 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback),
807 PushEventPayload(std::string()));
805 EXPECT_EQ(stale_time, version_->stale_time_); 808 EXPECT_EQ(stale_time, version_->stale_time_);
806 809
807 // Timeout triggers the update. 810 // Timeout triggers the update.
808 version_->OnTimeoutTimer(); 811 version_->OnTimeoutTimer();
809 EXPECT_TRUE(version_->stale_time_.is_null()); 812 EXPECT_TRUE(version_->stale_time_.is_null());
810 EXPECT_TRUE(version_->update_timer_.IsRunning()); 813 EXPECT_TRUE(version_->update_timer_.IsRunning());
811 814
812 // Update timer is not deferred. 815 // Update timer is not deferred.
813 base::TimeTicks run_time = version_->update_timer_.desired_run_time(); 816 base::TimeTicks run_time = version_->update_timer_.desired_run_time();
814 version_->DispatchPushEvent( 817 version_->DispatchPushEvent(
815 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); 818 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback),
819 PushEventPayload(std::string()));
816 version_->DispatchPushEvent( 820 version_->DispatchPushEvent(
817 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); 821 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback),
822 PushEventPayload(std::string()));
818 version_->DispatchPushEvent( 823 version_->DispatchPushEvent(
819 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); 824 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback),
825 PushEventPayload(std::string()));
820 base::RunLoop().RunUntilIdle(); 826 base::RunLoop().RunUntilIdle();
821 EXPECT_TRUE(version_->stale_time_.is_null()); 827 EXPECT_TRUE(version_->stale_time_.is_null());
822 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time()); 828 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time());
823 } 829 }
824 830
825 TEST_F(ServiceWorkerWaitForeverInFetchTest, RequestTimeout) { 831 TEST_F(ServiceWorkerWaitForeverInFetchTest, RequestTimeout) {
826 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 832 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
827 833
828 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 834 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
829 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), 835 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(),
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 1344
1339 // Verify correct response was received. 1345 // Verify correct response was received.
1340 EXPECT_EQ(request_id1, received_request_id1); 1346 EXPECT_EQ(request_id1, received_request_id1);
1341 EXPECT_EQ(request_id2, received_request_id2); 1347 EXPECT_EQ(request_id2, received_request_id2);
1342 EXPECT_EQ(reply1, received_data1); 1348 EXPECT_EQ(reply1, received_data1);
1343 EXPECT_EQ(SERVICE_WORKER_OK, status1); 1349 EXPECT_EQ(SERVICE_WORKER_OK, status1);
1344 EXPECT_TRUE(version_->FinishRequest(request_id1)); 1350 EXPECT_TRUE(version_->FinishRequest(request_id1));
1345 } 1351 }
1346 1352
1347 } // namespace content 1353 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698