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

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

Issue 2824193002: Enable use_once_callback for //content/common/*.mojom (Closed)
Patch Set: rebase Created 3 years, 8 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 "content/browser/service_worker/service_worker_version.h" 5 #include "content/browser/service_worker/service_worker_version.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <tuple> 8 #include <tuple>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
827 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time()); 827 EXPECT_EQ(run_time, version_->update_timer_.desired_run_time());
828 } 828 }
829 829
830 class MessageReceiverControlEvents : public MessageReceiver { 830 class MessageReceiverControlEvents : public MessageReceiver {
831 public: 831 public:
832 MessageReceiverControlEvents() : MessageReceiver() {} 832 MessageReceiverControlEvents() : MessageReceiver() {}
833 ~MessageReceiverControlEvents() override {} 833 ~MessageReceiverControlEvents() override {}
834 834
835 void OnExtendableMessageEvent( 835 void OnExtendableMessageEvent(
836 mojom::ExtendableMessageEventPtr event, 836 mojom::ExtendableMessageEventPtr event,
837 const mojom::ServiceWorkerEventDispatcher:: 837 mojom::ServiceWorkerEventDispatcher::
838 DispatchExtendableMessageEventCallback& callback) override { 838 DispatchExtendableMessageEventCallback callback) override {
839 EXPECT_FALSE(extendable_message_event_callback_); 839 EXPECT_FALSE(extendable_message_event_callback_);
840 extendable_message_event_callback_ = callback; 840 extendable_message_event_callback_ = std::move(callback);
841 } 841 }
842 842
843 void OnStopWorker(int embedded_worker_id) override { 843 void OnStopWorker(int embedded_worker_id) override {
844 EXPECT_FALSE(stop_worker_callback_); 844 EXPECT_FALSE(stop_worker_callback_);
845 stop_worker_callback_ = 845 stop_worker_callback_ =
846 base::Bind(&MessageReceiverControlEvents::SimulateWorkerStopped, 846 base::Bind(&MessageReceiverControlEvents::SimulateWorkerStopped,
847 base::Unretained(this), embedded_worker_id); 847 base::Unretained(this), embedded_worker_id);
848 } 848 }
849 849
850 const mojom::ServiceWorkerEventDispatcher:: 850 bool has_extendable_message_event_callback() {
851 DispatchExtendableMessageEventCallback& 851 return !extendable_message_event_callback_.is_null();
852 extendable_message_event_callback() { 852 }
853 return extendable_message_event_callback_; 853
854 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
855 TakeExtendableMessageEventCallback() {
856 return std::move(extendable_message_event_callback_);
854 } 857 }
855 858
856 const base::Closure& stop_worker_callback() { return stop_worker_callback_; } 859 const base::Closure& stop_worker_callback() { return stop_worker_callback_; }
857 860
858 private: 861 private:
859 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback 862 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
860 extendable_message_event_callback_; 863 extendable_message_event_callback_;
861 base::Closure stop_worker_callback_; 864 base::Closure stop_worker_callback_;
862 }; 865 };
863 866
864 class ServiceWorkerRequestTimeoutTest : public ServiceWorkerVersionTest { 867 class ServiceWorkerRequestTimeoutTest : public ServiceWorkerVersionTest {
865 protected: 868 protected:
866 ServiceWorkerRequestTimeoutTest() : ServiceWorkerVersionTest() {} 869 ServiceWorkerRequestTimeoutTest() : ServiceWorkerVersionTest() {}
867 870
868 std::unique_ptr<MessageReceiver> GetMessageReceiver() override { 871 std::unique_ptr<MessageReceiver> GetMessageReceiver() override {
869 return base::MakeUnique<MessageReceiverControlEvents>(); 872 return base::MakeUnique<MessageReceiverControlEvents>();
870 } 873 }
871 874
872 const mojom::ServiceWorkerEventDispatcher:: 875 bool has_extendable_message_event_callback() {
873 DispatchExtendableMessageEventCallback&
874 extendable_message_event_callback() {
875 return static_cast<MessageReceiverControlEvents*>(helper_.get()) 876 return static_cast<MessageReceiverControlEvents*>(helper_.get())
876 ->extendable_message_event_callback(); 877 ->has_extendable_message_event_callback();
878 }
879
880 mojom::ServiceWorkerEventDispatcher::DispatchExtendableMessageEventCallback
881 TakeExtendableMessageEventCallback() {
882 return static_cast<MessageReceiverControlEvents*>(helper_.get())
883 ->TakeExtendableMessageEventCallback();
877 } 884 }
878 885
879 const base::Closure& stop_worker_callback() { 886 const base::Closure& stop_worker_callback() {
880 return static_cast<MessageReceiverControlEvents*>(helper_.get()) 887 return static_cast<MessageReceiverControlEvents*>(helper_.get())
881 ->stop_worker_callback(); 888 ->stop_worker_callback();
882 } 889 }
883 890
884 private: 891 private:
885 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRequestTimeoutTest); 892 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerRequestTimeoutTest);
886 }; 893 };
887 894
888 TEST_F(ServiceWorkerRequestTimeoutTest, RequestTimeout) { 895 TEST_F(ServiceWorkerRequestTimeoutTest, RequestTimeout) {
889 ServiceWorkerStatusCode error_status = 896 ServiceWorkerStatusCode error_status =
890 SERVICE_WORKER_ERROR_NETWORK; // dummy value 897 SERVICE_WORKER_ERROR_NETWORK; // dummy value
891 version_->SetStatus(ServiceWorkerVersion::ACTIVATED); 898 version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
892 899
893 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 900 version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
894 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); 901 base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
895 base::RunLoop().RunUntilIdle(); 902 base::RunLoop().RunUntilIdle();
896 903
897 // Create a request. 904 // Create a request.
898 int request_id = 905 int request_id =
899 version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME, 906 version_->StartRequest(ServiceWorkerMetrics::EventType::FETCH_MAIN_FRAME,
900 CreateReceiverOnCurrentThread(&error_status)); 907 CreateReceiverOnCurrentThread(&error_status));
901 908
902 // Dispatch a dummy event whose response will be received by SWVersion. 909 // Dispatch a dummy event whose response will be received by SWVersion.
903 EXPECT_FALSE(extendable_message_event_callback()); 910 EXPECT_FALSE(has_extendable_message_event_callback());
904 version_->event_dispatcher()->DispatchExtendableMessageEvent( 911 version_->event_dispatcher()->DispatchExtendableMessageEvent(
905 mojom::ExtendableMessageEvent::New(), 912 mojom::ExtendableMessageEvent::New(),
906 version_->CreateSimpleEventCallback(request_id)); 913 version_->CreateSimpleEventCallback(request_id));
907 914
908 base::RunLoop().RunUntilIdle(); 915 base::RunLoop().RunUntilIdle();
909 // The renderer should have received an ExtendableMessageEvent request. 916 // The renderer should have received an ExtendableMessageEvent request.
910 EXPECT_TRUE(extendable_message_event_callback()); 917 EXPECT_TRUE(has_extendable_message_event_callback());
911 918
912 // Callback has not completed yet. 919 // Callback has not completed yet.
913 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, error_status); 920 EXPECT_EQ(SERVICE_WORKER_ERROR_NETWORK, error_status);
914 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status()); 921 EXPECT_EQ(EmbeddedWorkerStatus::RUNNING, version_->running_status());
915 922
916 // Simulate timeout. 923 // Simulate timeout.
917 EXPECT_FALSE(stop_worker_callback()); 924 EXPECT_FALSE(stop_worker_callback());
918 EXPECT_TRUE(version_->timeout_timer_.IsRunning()); 925 EXPECT_TRUE(version_->timeout_timer_.IsRunning());
919 version_->SetAllRequestExpirations(base::TimeTicks::Now()); 926 version_->SetAllRequestExpirations(base::TimeTicks::Now());
920 version_->timeout_timer_.user_task().Run(); 927 version_->timeout_timer_.user_task().Run();
921 base::RunLoop().RunUntilIdle(); 928 base::RunLoop().RunUntilIdle();
922 929
923 // The renderer should have received a StopWorker request. 930 // The renderer should have received a StopWorker request.
924 EXPECT_TRUE(stop_worker_callback()); 931 EXPECT_TRUE(stop_worker_callback());
925 // The request should have timed out. 932 // The request should have timed out.
926 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, error_status); 933 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, error_status);
927 // Calling FinishRequest should be no-op, since the request timed out. 934 // Calling FinishRequest should be no-op, since the request timed out.
928 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */, 935 EXPECT_FALSE(version_->FinishRequest(request_id, true /* was_handled */,
929 base::Time::Now())); 936 base::Time::Now()));
930 937
931 // Simulate the renderer aborting the pending event. 938 // Simulate the renderer aborting the pending event.
932 // This should not crash: https://crbug.com/676984. 939 // This should not crash: https://crbug.com/676984.
933 extendable_message_event_callback().Run(SERVICE_WORKER_ERROR_ABORT, 940 TakeExtendableMessageEventCallback().Run(SERVICE_WORKER_ERROR_ABORT,
934 base::Time::Now()); 941 base::Time::Now());
935 base::RunLoop().RunUntilIdle(); 942 base::RunLoop().RunUntilIdle();
936 943
937 // Simulate the renderer stopping the worker. 944 // Simulate the renderer stopping the worker.
938 stop_worker_callback().Run(); 945 stop_worker_callback().Run();
939 base::RunLoop().RunUntilIdle(); 946 base::RunLoop().RunUntilIdle();
940 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status()); 947 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, version_->running_status());
941 } 948 }
942 949
943 TEST_F(ServiceWorkerVersionTest, RequestNowTimeout) { 950 TEST_F(ServiceWorkerVersionTest, RequestNowTimeout) {
944 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value 951 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1611 // Should not have timed out, so error callback should not have been 1618 // Should not have timed out, so error callback should not have been
1612 // called and FinishRequest should return true. 1619 // called and FinishRequest should return true.
1613 EXPECT_EQ(SERVICE_WORKER_OK, status); 1620 EXPECT_EQ(SERVICE_WORKER_OK, status);
1614 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */, 1621 EXPECT_TRUE(version_->FinishRequest(request_id1, true /* was_handled */,
1615 base::Time::Now())); 1622 base::Time::Now()));
1616 EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */, 1623 EXPECT_TRUE(version_->FinishRequest(request_id2, true /* was_handled */,
1617 base::Time::Now())); 1624 base::Time::Now()));
1618 } 1625 }
1619 1626
1620 } // namespace content 1627 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/service_worker/service_worker_url_request_job_unittest.cc ('k') | content/child/url_loader_client_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698