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

Side by Side Diff: content/browser/shared_worker/shared_worker_service_impl_unittest.cc

Issue 2604733002: SharedWorker: Make shared workers keyed by a pair of url and name (Closed)
Patch Set: clean up Created 3 years, 12 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/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 721 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 732 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
733 "http://example.com/w2.js", 733 "http://example.com/w2.js",
734 "name2", 734 "name2",
735 blink::WebContentSecurityPolicyTypeReport, 735 blink::WebContentSecurityPolicyTypeReport,
736 &worker_route_id); 736 &worker_route_id);
737 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get()); 737 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
738 connector1->Create("http://example.com/w2x.js", 738 connector1->Create("http://example.com/w2x.js",
739 "name2", 739 "name2",
740 kDocumentIDs[1], 740 kDocumentIDs[1],
741 kRenderFrameRouteIDs[1]); 741 kRenderFrameRouteIDs[1]);
742 EXPECT_EQ(MSG_ROUTING_NONE, connector1->route_id()); 742 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
743 EXPECT_EQ(blink::WebWorkerCreationErrorURLMismatch, 743 EXPECT_EQ(blink::WebWorkerCreationErrorNone, connector1->creation_error());
744 connector1->creation_error());
745 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 744 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
746 RunAllPendingInMessageLoop(); 745 RunAllPendingInMessageLoop();
747 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 746 EXPECT_EQ(2U, renderer_host1->QueuedMessageCount());
747 CheckWorkerProcessMsgCreateWorker(
748 renderer_host1.get(), "http://example.com/w2x.js", "name2",
749 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
750 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
748 } 751 }
749 752
750 // Pending case. 753 // Normal case (name mismatch).
751 { 754 {
752 std::unique_ptr<MockSharedWorkerConnector> connector0( 755 std::unique_ptr<MockSharedWorkerConnector> connector0(
753 new MockSharedWorkerConnector(renderer_host0.get())); 756 new MockSharedWorkerConnector(renderer_host0.get()));
754 std::unique_ptr<MockSharedWorkerConnector> connector1( 757 std::unique_ptr<MockSharedWorkerConnector> connector1(
755 new MockSharedWorkerConnector(renderer_host1.get())); 758 new MockSharedWorkerConnector(renderer_host1.get()));
756 connector0->Create("http://example.com/w3.js", 759 connector0->Create("http://example.com/w3.js",
757 "name3", 760 "name3",
758 kDocumentIDs[0], 761 kDocumentIDs[0],
759 kRenderFrameRouteIDs[0]); 762 kRenderFrameRouteIDs[0]);
760 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 763 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
761 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 764 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
762 connector1->Create("http://example.com/w3.js", 765 RunAllPendingInMessageLoop();
763 "name3", 766 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
764 kDocumentIDs[1], 767 CheckWorkerProcessMsgCreateWorker(
768 renderer_host0.get(), "http://example.com/w3.js", "name3",
769 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
770 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
771 connector1->Create("http://example.com/w3.js", "name3x", kDocumentIDs[1],
765 kRenderFrameRouteIDs[1]); 772 kRenderFrameRouteIDs[1]);
766 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id()); 773 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
774 EXPECT_EQ(blink::WebWorkerCreationErrorNone, connector1->creation_error());
767 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 775 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
768 RunAllPendingInMessageLoop(); 776 RunAllPendingInMessageLoop();
769 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 777 EXPECT_EQ(2U, renderer_host1->QueuedMessageCount());
770 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 778 CheckWorkerProcessMsgCreateWorker(
771 "http://example.com/w3.js", 779 renderer_host1.get(), "http://example.com/w3.js", "name3x",
772 "name3", 780 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
773 blink::WebContentSecurityPolicyTypeReport,
774 &worker_route_id);
775 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
776 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount());
777 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get()); 781 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
778 } 782 }
779 783
780 // Pending case (URL mismatch). 784 // Pending case.
781 { 785 {
782 std::unique_ptr<MockSharedWorkerConnector> connector0( 786 std::unique_ptr<MockSharedWorkerConnector> connector0(
783 new MockSharedWorkerConnector(renderer_host0.get())); 787 new MockSharedWorkerConnector(renderer_host0.get()));
784 std::unique_ptr<MockSharedWorkerConnector> connector1( 788 std::unique_ptr<MockSharedWorkerConnector> connector1(
785 new MockSharedWorkerConnector(renderer_host1.get())); 789 new MockSharedWorkerConnector(renderer_host1.get()));
786 connector0->Create("http://example.com/w4.js", 790 connector0->Create("http://example.com/w4.js",
787 "name4", 791 "name4",
788 kDocumentIDs[0], 792 kDocumentIDs[0],
789 kRenderFrameRouteIDs[0]); 793 kRenderFrameRouteIDs[0]);
790 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id()); 794 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
791 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount()); 795 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
792 connector1->Create("http://example.com/w4x.js", 796 connector1->Create("http://example.com/w4.js", "name4", kDocumentIDs[1],
793 "name4",
794 kDocumentIDs[1],
795 kRenderFrameRouteIDs[1]); 797 kRenderFrameRouteIDs[1]);
796 EXPECT_EQ(MSG_ROUTING_NONE, connector1->route_id()); 798 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
797 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 799 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
798 RunAllPendingInMessageLoop(); 800 RunAllPendingInMessageLoop();
799 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount()); 801 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
800 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(), 802 CheckWorkerProcessMsgCreateWorker(renderer_host0.get(),
801 "http://example.com/w4.js", 803 "http://example.com/w4.js",
802 "name4", 804 "name4",
803 blink::WebContentSecurityPolicyTypeReport, 805 blink::WebContentSecurityPolicyTypeReport,
804 &worker_route_id); 806 &worker_route_id);
805 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get()); 807 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
808 EXPECT_EQ(1U, renderer_host1->QueuedMessageCount());
809 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
810 }
811
812 // Pending case (URL mismatch).
813 {
814 std::unique_ptr<MockSharedWorkerConnector> connector0(
815 new MockSharedWorkerConnector(renderer_host0.get()));
816 std::unique_ptr<MockSharedWorkerConnector> connector1(
817 new MockSharedWorkerConnector(renderer_host1.get()));
818 connector0->Create("http://example.com/w5.js", "name5", kDocumentIDs[0],
819 kRenderFrameRouteIDs[0]);
820 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
821 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
822 connector1->Create("http://example.com/w5x.js", "name5", kDocumentIDs[1],
823 kRenderFrameRouteIDs[1]);
824 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
806 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount()); 825 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
826 RunAllPendingInMessageLoop();
827 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
828 CheckWorkerProcessMsgCreateWorker(
829 renderer_host0.get(), "http://example.com/w5.js", "name5",
830 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
831 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
832 EXPECT_EQ(2U, renderer_host1->QueuedMessageCount());
833 CheckWorkerProcessMsgCreateWorker(
834 renderer_host1.get(), "http://example.com/w5x.js", "name5",
835 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
836 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
837 }
838
839 // Pending case (name mismatch).
840 {
841 std::unique_ptr<MockSharedWorkerConnector> connector0(
842 new MockSharedWorkerConnector(renderer_host0.get()));
843 std::unique_ptr<MockSharedWorkerConnector> connector1(
844 new MockSharedWorkerConnector(renderer_host1.get()));
845 connector0->Create("http://example.com/w6.js", "name6", kDocumentIDs[0],
846 kRenderFrameRouteIDs[0]);
847 EXPECT_NE(MSG_ROUTING_NONE, connector0->route_id());
848 EXPECT_EQ(0U, renderer_host0->QueuedMessageCount());
849 connector1->Create("http://example.com/w6.js", "name6x", kDocumentIDs[1],
850 kRenderFrameRouteIDs[1]);
851 EXPECT_NE(MSG_ROUTING_NONE, connector1->route_id());
852 EXPECT_EQ(0U, renderer_host1->QueuedMessageCount());
853 RunAllPendingInMessageLoop();
854 EXPECT_EQ(2U, renderer_host0->QueuedMessageCount());
855 CheckWorkerProcessMsgCreateWorker(
856 renderer_host0.get(), "http://example.com/w6.js", "name6",
857 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
858 CheckViewMsgWorkerCreated(renderer_host0.get(), connector0.get());
859 EXPECT_EQ(2U, renderer_host1->QueuedMessageCount());
860 CheckWorkerProcessMsgCreateWorker(
861 renderer_host1.get(), "http://example.com/w6.js", "name6x",
862 blink::WebContentSecurityPolicyTypeReport, &worker_route_id);
863 CheckViewMsgWorkerCreated(renderer_host1.get(), connector1.get());
807 } 864 }
808 } 865 }
809 866
810 TEST_F(SharedWorkerServiceImplTest, CreateWorkerRaceTest) { 867 TEST_F(SharedWorkerServiceImplTest, CreateWorkerRaceTest) {
811 // Create three renderer hosts. 868 // Create three renderer hosts.
812 std::unique_ptr<MockRendererProcessHost> renderer_host0( 869 std::unique_ptr<MockRendererProcessHost> renderer_host0(
813 new MockRendererProcessHost(kProcessIDs[0], 870 new MockRendererProcessHost(kProcessIDs[0],
814 browser_context_->GetResourceContext(), 871 browser_context_->GetResourceContext(),
815 *partition_.get())); 872 *partition_.get()));
816 std::unique_ptr<MockRendererProcessHost> renderer_host1( 873 std::unique_ptr<MockRendererProcessHost> renderer_host1(
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 kDocumentIDs[2], 978 kDocumentIDs[2],
922 kRenderFrameRouteIDs[2]); 979 kRenderFrameRouteIDs[2]);
923 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id()); 980 EXPECT_NE(MSG_ROUTING_NONE, connector2->route_id());
924 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount()); 981 EXPECT_EQ(0U, renderer_host2->QueuedMessageCount());
925 RunAllPendingInMessageLoop(); 982 RunAllPendingInMessageLoop();
926 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount()); 983 EXPECT_EQ(1U, renderer_host2->QueuedMessageCount());
927 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get()); 984 CheckViewMsgWorkerCreated(renderer_host2.get(), connector2.get());
928 } 985 }
929 986
930 } // namespace content 987 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/shared_worker/shared_worker_service_impl.cc ('k') | content/renderer/shared_worker_repository.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698