OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015, Google Inc. All rights reserved. | 2 * Copyright (c) 2015, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
761 document->Loader()->SetLoadType(kFrameLoadTypeBackForward); | 761 document->Loader()->SetLoadType(kFrameLoadTypeBackForward); |
762 EXPECT_EQ(WebCachePolicy::kReturnCacheDataElseLoad, | 762 EXPECT_EQ(WebCachePolicy::kReturnCacheDataElseLoad, |
763 fetch_context->ResourceRequestCachePolicy( | 763 fetch_context->ResourceRequestCachePolicy( |
764 conditional, Resource::kMock, FetchParameters::kNoDefer)); | 764 conditional, Resource::kMock, FetchParameters::kNoDefer)); |
765 } | 765 } |
766 | 766 |
767 TEST_F(FrameFetchContextTest, SetFirstPartyCookieAndRequestorOrigin) { | 767 TEST_F(FrameFetchContextTest, SetFirstPartyCookieAndRequestorOrigin) { |
768 struct TestCase { | 768 struct TestCase { |
769 const char* document_url; | 769 const char* document_url; |
770 bool document_sandboxed; | 770 bool document_sandboxed; |
771 const char* requestor_origin; // "" => unique origin | 771 const char* requestor_origin; // "" => null |
772 WebURLRequest::FrameType frame_type; | 772 WebURLRequest::FrameType frame_type; |
773 const char* serialized_origin; // "" => unique origin | 773 const char* serialized_origin; // "" => null |
774 } cases[] = { | 774 } cases[] = { |
775 // No document origin => unique request origin | 775 // No document origin => unique request origin |
776 {"", false, "", WebURLRequest::kFrameTypeNone, "null"}, | 776 {"", false, "", WebURLRequest::kFrameTypeNone, "null"}, |
777 {"", true, "", WebURLRequest::kFrameTypeNone, "null"}, | 777 {"", true, "", WebURLRequest::kFrameTypeNone, "null"}, |
778 | 778 |
779 // Document origin => request origin | 779 // Document origin => request origin |
780 {"http://example.test", false, "", WebURLRequest::kFrameTypeNone, | 780 {"http://example.test", false, "", WebURLRequest::kFrameTypeNone, |
781 "http://example.test"}, | 781 "http://example.test"}, |
782 {"http://example.test", true, "", WebURLRequest::kFrameTypeNone, | 782 {"http://example.test", true, "", WebURLRequest::kFrameTypeNone, |
783 "http://example.test"}, | 783 "http://example.test"}, |
784 | 784 |
785 // If the request already has a requestor origin, then | 785 // If the request already has a requestor origin, then |
786 // 'setFirstPartyCookieAndRequestorOrigin' leaves it alone: | 786 // 'SetFirstPartyCookieAndRequestorOrigin' leaves it alone: |
787 {"http://example.test", false, "http://not-example.test", | 787 {"http://example.test", false, "http://not-example.test", |
788 WebURLRequest::kFrameTypeNone, "http://not-example.test"}, | 788 WebURLRequest::kFrameTypeNone, "http://not-example.test"}, |
789 {"http://example.test", true, "http://not-example.test", | 789 {"http://example.test", true, "http://not-example.test", |
790 WebURLRequest::kFrameTypeNone, "http://not-example.test"}, | 790 WebURLRequest::kFrameTypeNone, "http://not-example.test"}, |
791 | |
792 // If the request's frame type is not 'none', then | |
793 // 'setFirstPartyCookieAndRequestorOrigin' | |
794 // leaves it alone: | |
795 {"http://example.test", false, "", WebURLRequest::kFrameTypeTopLevel, ""}, | |
796 {"http://example.test", false, "", WebURLRequest::kFrameTypeAuxiliary, | |
797 ""}, | |
798 {"http://example.test", false, "", WebURLRequest::kFrameTypeNested, ""}, | |
799 }; | 791 }; |
800 | 792 |
| 793 int index = 0; |
801 for (const auto& test : cases) { | 794 for (const auto& test : cases) { |
802 SCOPED_TRACE(::testing::Message() | 795 SCOPED_TRACE(::testing::Message() << index++ << " " << test.document_url |
803 << test.document_url << " => " << test.serialized_origin); | 796 << " => " << test.serialized_origin); |
804 // Set up a new document to ensure sandbox flags are cleared: | 797 // Set up a new document to ensure sandbox flags are cleared: |
805 dummy_page_holder = DummyPageHolder::Create(IntSize(500, 500)); | 798 dummy_page_holder = DummyPageHolder::Create(IntSize(500, 500)); |
806 dummy_page_holder->GetPage().SetDeviceScaleFactorDeprecated(1.0); | 799 dummy_page_holder->GetPage().SetDeviceScaleFactorDeprecated(1.0); |
807 document = &dummy_page_holder->GetDocument(); | 800 document = &dummy_page_holder->GetDocument(); |
808 FrameFetchContext::ProvideDocumentToContext(*fetch_context, document.Get()); | 801 FrameFetchContext::ProvideDocumentToContext(*fetch_context, document.Get()); |
809 | 802 |
810 // Setup the test: | 803 // Setup the test: |
811 document->SetURL(KURL(kParsedURLString, test.document_url)); | 804 document->SetURL(KURL(kParsedURLString, test.document_url)); |
812 document->SetSecurityOrigin(SecurityOrigin::Create(document->Url())); | 805 document->SetSecurityOrigin(SecurityOrigin::Create(document->Url())); |
813 | 806 |
814 if (test.document_sandboxed) | 807 if (test.document_sandboxed) |
815 document->EnforceSandboxFlags(kSandboxOrigin); | 808 document->EnforceSandboxFlags(kSandboxOrigin); |
816 | 809 |
817 ResourceRequest request("http://example.test/"); | 810 ResourceRequest request("http://example.test/"); |
818 request.SetFrameType(test.frame_type); | 811 request.SetFrameType(test.frame_type); |
819 if (strlen(test.requestor_origin) > 0) { | 812 if (strlen(test.requestor_origin) > 0) { |
820 request.SetRequestorOrigin(SecurityOrigin::Create( | 813 request.SetRequestorOrigin(SecurityOrigin::Create( |
821 KURL(kParsedURLString, test.requestor_origin))); | 814 KURL(kParsedURLString, test.requestor_origin))); |
822 } | 815 } |
823 | 816 |
824 // Compare the populated |requestorOrigin| against |test.serializedOrigin| | 817 // Compare the populated |requestorOrigin| against |test.serializedOrigin| |
825 fetch_context->SetFirstPartyCookieAndRequestorOrigin(request); | 818 fetch_context->SetFirstPartyCookieAndRequestorOrigin(request); |
826 if (strlen(test.serialized_origin) == 0) { | 819 if (strlen(test.serialized_origin) == 0) { |
827 EXPECT_TRUE(request.RequestorOrigin()->IsUnique()); | 820 EXPECT_TRUE(!request.RequestorOrigin()); |
828 } else { | 821 } else { |
829 EXPECT_EQ(String(test.serialized_origin), | 822 EXPECT_EQ(String(test.serialized_origin), |
830 request.RequestorOrigin()->ToString()); | 823 request.RequestorOrigin()->ToString()); |
831 } | 824 } |
832 | 825 |
833 EXPECT_EQ(document->FirstPartyForCookies(), request.FirstPartyForCookies()); | 826 EXPECT_EQ(document->FirstPartyForCookies(), request.FirstPartyForCookies()); |
834 } | 827 } |
835 } | 828 } |
836 | 829 |
837 // Tests if "Save-Data" header is correctly added on the first load and reload. | 830 // Tests if "Save-Data" header is correctly added on the first load and reload. |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 SetFilterPolicy(WebDocumentSubresourceFilter::kWouldDisallow); | 945 SetFilterPolicy(WebDocumentSubresourceFilter::kWouldDisallow); |
953 | 946 |
954 EXPECT_EQ(ResourceRequestBlockedReason::kNone, CanRequest()); | 947 EXPECT_EQ(ResourceRequestBlockedReason::kNone, CanRequest()); |
955 EXPECT_EQ(0, GetFilteredLoadCallCount()); | 948 EXPECT_EQ(0, GetFilteredLoadCallCount()); |
956 | 949 |
957 EXPECT_EQ(ResourceRequestBlockedReason::kNone, CanRequestPreload()); | 950 EXPECT_EQ(ResourceRequestBlockedReason::kNone, CanRequestPreload()); |
958 EXPECT_EQ(0, GetFilteredLoadCallCount()); | 951 EXPECT_EQ(0, GetFilteredLoadCallCount()); |
959 } | 952 } |
960 | 953 |
961 } // namespace blink | 954 } // namespace blink |
OLD | NEW |