| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "core/html/parser/HTMLPreloadScanner.h" | 5 #include "core/html/parser/HTMLPreloadScanner.h" |
| 6 | 6 |
| 7 #include <memory> |
| 7 #include "core/MediaTypeNames.h" | 8 #include "core/MediaTypeNames.h" |
| 8 #include "core/css/MediaValuesCached.h" | 9 #include "core/css/MediaValuesCached.h" |
| 9 #include "core/frame/Settings.h" | 10 #include "core/frame/Settings.h" |
| 10 #include "core/html/CrossOriginAttribute.h" | 11 #include "core/html/CrossOriginAttribute.h" |
| 11 #include "core/html/parser/HTMLParserOptions.h" | 12 #include "core/html/parser/HTMLParserOptions.h" |
| 12 #include "core/html/parser/HTMLResourcePreloader.h" | 13 #include "core/html/parser/HTMLResourcePreloader.h" |
| 13 #include "core/html/parser/PreloadRequest.h" | 14 #include "core/html/parser/PreloadRequest.h" |
| 14 #include "core/testing/DummyPageHolder.h" | 15 #include "core/testing/DummyPageHolder.h" |
| 16 #include "platform/exported/WrappedResourceResponse.h" |
| 15 #include "platform/loader/fetch/ClientHintsPreferences.h" | 17 #include "platform/loader/fetch/ClientHintsPreferences.h" |
| 18 #include "platform/weborigin/SecurityOrigin.h" |
| 19 #include "public/platform/Platform.h" |
| 20 #include "public/platform/WebURLLoaderMockFactory.h" |
| 16 #include "testing/gtest/include/gtest/gtest.h" | 21 #include "testing/gtest/include/gtest/gtest.h" |
| 17 #include <memory> | |
| 18 | 22 |
| 19 namespace blink { | 23 namespace blink { |
| 20 | 24 |
| 21 struct TestCase { | 25 struct TestCase { |
| 22 const char* base_url; | 26 const char* base_url; |
| 23 const char* input_html; | 27 const char* input_html; |
| 24 const char* preloaded_url; // Or nullptr if no preload is expected. | 28 const char* preloaded_url; // Or nullptr if no preload is expected. |
| 25 const char* output_base_url; | 29 const char* output_base_url; |
| 26 Resource::Type type; | 30 Resource::Type type; |
| 27 int resource_width; | 31 int resource_width; |
| 28 ClientHintsPreferences preferences; | 32 ClientHintsPreferences preferences; |
| 29 }; | 33 }; |
| 30 | 34 |
| 31 struct PreconnectTestCase { | 35 struct PreconnectTestCase { |
| 32 const char* base_url; | 36 const char* base_url; |
| 33 const char* input_html; | 37 const char* input_html; |
| 34 const char* preconnected_host; | 38 const char* preconnected_host; |
| 35 CrossOriginAttributeValue cross_origin; | 39 CrossOriginAttributeValue cross_origin; |
| 36 }; | 40 }; |
| 37 | 41 |
| 38 struct ReferrerPolicyTestCase { | 42 struct ReferrerPolicyTestCase { |
| 39 const char* base_url; | 43 const char* base_url; |
| 40 const char* input_html; | 44 const char* input_html; |
| 41 const char* preloaded_url; // Or nullptr if no preload is expected. | 45 const char* preloaded_url; // Or nullptr if no preload is expected. |
| 42 const char* output_base_url; | 46 const char* output_base_url; |
| 43 Resource::Type type; | 47 Resource::Type type; |
| 44 int resource_width; | 48 int resource_width; |
| 45 ReferrerPolicy referrer_policy; | 49 ReferrerPolicy referrer_policy; |
| 50 // Expected referrer header of the preload request, or nullptr if the header |
| 51 // shouldn't be checked (and no network request should be created). |
| 52 const char* expected_referrer; |
| 46 }; | 53 }; |
| 47 | 54 |
| 48 struct NonceTestCase { | 55 struct NonceTestCase { |
| 49 const char* base_url; | 56 const char* base_url; |
| 50 const char* input_html; | 57 const char* input_html; |
| 51 const char* nonce; | 58 const char* nonce; |
| 52 }; | 59 }; |
| 53 | 60 |
| 54 class MockHTMLResourcePreloader : public ResourcePreloader { | 61 class MockHTMLResourcePreloader : public ResourcePreloader { |
| 55 public: | 62 public: |
| (...skipping 26 matching lines...) Expand all Loading... |
| 82 void PreloadRequestVerification(Resource::Type type, | 89 void PreloadRequestVerification(Resource::Type type, |
| 83 const char* url, | 90 const char* url, |
| 84 const char* base_url, | 91 const char* base_url, |
| 85 int width, | 92 int width, |
| 86 ReferrerPolicy referrer_policy) { | 93 ReferrerPolicy referrer_policy) { |
| 87 PreloadRequestVerification(type, url, base_url, width, | 94 PreloadRequestVerification(type, url, base_url, width, |
| 88 ClientHintsPreferences()); | 95 ClientHintsPreferences()); |
| 89 EXPECT_EQ(referrer_policy, preload_request_->GetReferrerPolicy()); | 96 EXPECT_EQ(referrer_policy, preload_request_->GetReferrerPolicy()); |
| 90 } | 97 } |
| 91 | 98 |
| 99 void PreloadRequestVerification(Resource::Type type, |
| 100 const char* url, |
| 101 const char* base_url, |
| 102 int width, |
| 103 ReferrerPolicy referrer_policy, |
| 104 Document* document, |
| 105 const char* expected_referrer) { |
| 106 PreloadRequestVerification(type, url, base_url, width, referrer_policy); |
| 107 Resource* resource = preload_request_->Start(document); |
| 108 ASSERT_TRUE(resource); |
| 109 EXPECT_EQ(expected_referrer, resource->GetResourceRequest().HttpReferrer()); |
| 110 } |
| 111 |
| 92 void PreconnectRequestVerification(const String& host, | 112 void PreconnectRequestVerification(const String& host, |
| 93 CrossOriginAttributeValue cross_origin) { | 113 CrossOriginAttributeValue cross_origin) { |
| 94 if (!host.IsNull()) { | 114 if (!host.IsNull()) { |
| 95 EXPECT_TRUE(preload_request_->IsPreconnect()); | 115 EXPECT_TRUE(preload_request_->IsPreconnect()); |
| 96 EXPECT_STREQ(preload_request_->ResourceURL().Ascii().Data(), | 116 EXPECT_STREQ(preload_request_->ResourceURL().Ascii().Data(), |
| 97 host.Ascii().Data()); | 117 host.Ascii().Data()); |
| 98 EXPECT_EQ(preload_request_->CrossOrigin(), cross_origin); | 118 EXPECT_EQ(preload_request_->CrossOrigin(), cross_origin); |
| 99 } | 119 } |
| 100 } | 120 } |
| 101 | 121 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 data.display_mode = kWebDisplayModeBrowser; | 168 data.display_mode = kWebDisplayModeBrowser; |
| 149 return data; | 169 return data; |
| 150 } | 170 } |
| 151 | 171 |
| 152 void RunSetUp( | 172 void RunSetUp( |
| 153 ViewportState viewport_state, | 173 ViewportState viewport_state, |
| 154 PreloadState preload_state = kPreloadEnabled, | 174 PreloadState preload_state = kPreloadEnabled, |
| 155 ReferrerPolicy document_referrer_policy = kReferrerPolicyDefault) { | 175 ReferrerPolicy document_referrer_policy = kReferrerPolicyDefault) { |
| 156 HTMLParserOptions options(&dummy_page_holder_->GetDocument()); | 176 HTMLParserOptions options(&dummy_page_holder_->GetDocument()); |
| 157 KURL document_url(kParsedURLString, "http://whatever.test/"); | 177 KURL document_url(kParsedURLString, "http://whatever.test/"); |
| 178 dummy_page_holder_->GetDocument().SetURL(document_url); |
| 179 dummy_page_holder_->GetDocument().SetSecurityOrigin( |
| 180 SecurityOrigin::Create(document_url)); |
| 158 dummy_page_holder_->GetDocument().GetSettings()->SetViewportEnabled( | 181 dummy_page_holder_->GetDocument().GetSettings()->SetViewportEnabled( |
| 159 viewport_state == kViewportEnabled); | 182 viewport_state == kViewportEnabled); |
| 160 dummy_page_holder_->GetDocument().GetSettings()->SetViewportMetaEnabled( | 183 dummy_page_holder_->GetDocument().GetSettings()->SetViewportMetaEnabled( |
| 161 viewport_state == kViewportEnabled); | 184 viewport_state == kViewportEnabled); |
| 162 dummy_page_holder_->GetDocument().GetSettings()->SetDoHtmlPreloadScanning( | 185 dummy_page_holder_->GetDocument().GetSettings()->SetDoHtmlPreloadScanning( |
| 163 preload_state == kPreloadEnabled); | 186 preload_state == kPreloadEnabled); |
| 164 dummy_page_holder_->GetDocument().SetReferrerPolicy( | 187 dummy_page_holder_->GetDocument().SetReferrerPolicy( |
| 165 document_referrer_policy); | 188 document_referrer_policy); |
| 166 scanner_ = HTMLPreloadScanner::Create( | 189 scanner_ = HTMLPreloadScanner::Create( |
| 167 options, document_url, | 190 options, document_url, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 193 test_case.cross_origin); | 216 test_case.cross_origin); |
| 194 } | 217 } |
| 195 | 218 |
| 196 void Test(ReferrerPolicyTestCase test_case) { | 219 void Test(ReferrerPolicyTestCase test_case) { |
| 197 MockHTMLResourcePreloader preloader; | 220 MockHTMLResourcePreloader preloader; |
| 198 KURL base_url(kParsedURLString, test_case.base_url); | 221 KURL base_url(kParsedURLString, test_case.base_url); |
| 199 scanner_->AppendToEnd(String(test_case.input_html)); | 222 scanner_->AppendToEnd(String(test_case.input_html)); |
| 200 PreloadRequestStream requests = scanner_->Scan(base_url, nullptr); | 223 PreloadRequestStream requests = scanner_->Scan(base_url, nullptr); |
| 201 preloader.TakeAndPreload(requests); | 224 preloader.TakeAndPreload(requests); |
| 202 | 225 |
| 203 preloader.PreloadRequestVerification( | 226 if (test_case.expected_referrer) { |
| 204 test_case.type, test_case.preloaded_url, test_case.output_base_url, | 227 preloader.PreloadRequestVerification( |
| 205 test_case.resource_width, test_case.referrer_policy); | 228 test_case.type, test_case.preloaded_url, test_case.output_base_url, |
| 229 test_case.resource_width, test_case.referrer_policy, |
| 230 &dummy_page_holder_->GetDocument(), test_case.expected_referrer); |
| 231 } else { |
| 232 preloader.PreloadRequestVerification( |
| 233 test_case.type, test_case.preloaded_url, test_case.output_base_url, |
| 234 test_case.resource_width, test_case.referrer_policy); |
| 235 } |
| 206 } | 236 } |
| 207 | 237 |
| 208 void Test(NonceTestCase test_case) { | 238 void Test(NonceTestCase test_case) { |
| 209 MockHTMLResourcePreloader preloader; | 239 MockHTMLResourcePreloader preloader; |
| 210 KURL base_url(kParsedURLString, test_case.base_url); | 240 KURL base_url(kParsedURLString, test_case.base_url); |
| 211 scanner_->AppendToEnd(String(test_case.input_html)); | 241 scanner_->AppendToEnd(String(test_case.input_html)); |
| 212 PreloadRequestStream requests = scanner_->Scan(base_url, nullptr); | 242 PreloadRequestStream requests = scanner_->Scan(base_url, nullptr); |
| 213 preloader.TakeAndPreload(requests); | 243 preloader.TakeAndPreload(requests); |
| 214 | 244 |
| 215 preloader.NonceRequestVerification(test_case.nonce); | 245 preloader.NonceRequestVerification(test_case.nonce); |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 610 for (const auto& test_case : test_cases) | 640 for (const auto& test_case : test_cases) |
| 611 Test(test_case); | 641 Test(test_case); |
| 612 } | 642 } |
| 613 | 643 |
| 614 TEST_F(HTMLPreloadScannerTest, testReferrerPolicy) { | 644 TEST_F(HTMLPreloadScannerTest, testReferrerPolicy) { |
| 615 ReferrerPolicyTestCase test_cases[] = { | 645 ReferrerPolicyTestCase test_cases[] = { |
| 616 {"http://example.test", "<img src='bla.gif'/>", "bla.gif", | 646 {"http://example.test", "<img src='bla.gif'/>", "bla.gif", |
| 617 "http://example.test/", Resource::kImage, 0, kReferrerPolicyDefault}, | 647 "http://example.test/", Resource::kImage, 0, kReferrerPolicyDefault}, |
| 618 {"http://example.test", "<img referrerpolicy='origin' src='bla.gif'/>", | 648 {"http://example.test", "<img referrerpolicy='origin' src='bla.gif'/>", |
| 619 "bla.gif", "http://example.test/", Resource::kImage, 0, | 649 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 620 kReferrerPolicyOrigin}, | 650 kReferrerPolicyOrigin, nullptr}, |
| 621 {"http://example.test", | 651 {"http://example.test", |
| 622 "<meta name='referrer' content='not-a-valid-policy'><img " | 652 "<meta name='referrer' content='not-a-valid-policy'><img " |
| 623 "src='bla.gif'/>", | 653 "src='bla.gif'/>", |
| 624 "bla.gif", "http://example.test/", Resource::kImage, 0, | 654 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 625 kReferrerPolicyDefault}, | 655 kReferrerPolicyDefault, nullptr}, |
| 626 {"http://example.test", | 656 {"http://example.test", |
| 627 "<img referrerpolicy='origin' referrerpolicy='origin-when-cross-origin' " | 657 "<img referrerpolicy='origin' referrerpolicy='origin-when-cross-origin' " |
| 628 "src='bla.gif'/>", | 658 "src='bla.gif'/>", |
| 629 "bla.gif", "http://example.test/", Resource::kImage, 0, | 659 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 630 kReferrerPolicyOrigin}, | 660 kReferrerPolicyOrigin, nullptr}, |
| 631 {"http://example.test", | 661 {"http://example.test", |
| 632 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", | 662 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", |
| 633 "http://example.test/", Resource::kImage, 0, kReferrerPolicyDefault}, | 663 "http://example.test/", Resource::kImage, 0, kReferrerPolicyDefault, |
| 664 nullptr}, |
| 665 {"http://example.test", |
| 666 "<link rel=preload as=image referrerpolicy='origin-when-cross-origin' " |
| 667 "href='bla.gif'/>", |
| 668 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 669 kReferrerPolicyOriginWhenCrossOrigin, nullptr}, |
| 670 {"http://example.test", |
| 671 "<link rel='stylesheet' href='sheet.css' type='text/css'>", "sheet.css", |
| 672 "http://example.test/", Resource::kCSSStyleSheet, 0, |
| 673 kReferrerPolicyDefault, nullptr}, |
| 674 {"http://example.test", |
| 675 "<link rel=preload as=image referrerpolicy='origin' " |
| 676 "referrerpolicy='origin-when-cross-origin' href='bla.gif'/>", |
| 677 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 678 kReferrerPolicyOrigin, nullptr}, |
| 634 {"http://example.test", | 679 {"http://example.test", |
| 635 "<meta name='referrer' content='no-referrer'><img " | 680 "<meta name='referrer' content='no-referrer'><img " |
| 636 "referrerpolicy='origin' src='bla.gif'/>", | 681 "referrerpolicy='origin' src='bla.gif'/>", |
| 637 "bla.gif", "http://example.test/", Resource::kImage, 0, | 682 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 638 kReferrerPolicyOrigin}, | 683 kReferrerPolicyOrigin, nullptr}, |
| 639 {"http://example.test", | |
| 640 "<link rel=preload as=image referrerpolicy='origin-when-cross-origin' " | |
| 641 "href='bla.gif'/>", | |
| 642 "bla.gif", "http://example.test/", Resource::kImage, 0, | |
| 643 kReferrerPolicyOriginWhenCrossOrigin}, | |
| 644 {"http://example.test", | |
| 645 "<link rel=preload as=image referrerpolicy='origin' " | |
| 646 "referrerpolicy='origin-when-cross-origin' href='bla.gif'/>", | |
| 647 "bla.gif", "http://example.test/", Resource::kImage, 0, | |
| 648 kReferrerPolicyOrigin}, | |
| 649 // The scanner's state is not reset between test cases, so all subsequent | 684 // The scanner's state is not reset between test cases, so all subsequent |
| 650 // test cases have a document referrer policy of no-referrer. | 685 // test cases have a document referrer policy of no-referrer. |
| 651 {"http://example.test", | 686 {"http://example.test", |
| 652 "<link rel=preload as=image referrerpolicy='not-a-valid-policy' " | 687 "<link rel=preload as=image referrerpolicy='not-a-valid-policy' " |
| 653 "href='bla.gif'/>", | 688 "href='bla.gif'/>", |
| 654 "bla.gif", "http://example.test/", Resource::kImage, 0, | 689 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 655 kReferrerPolicyNever}, | 690 kReferrerPolicyNever, nullptr}, |
| 656 {"http://example.test", | 691 {"http://example.test", |
| 657 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", | 692 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", |
| 658 "http://example.test/", Resource::kImage, 0, kReferrerPolicyNever}, | 693 "http://example.test/", Resource::kImage, 0, kReferrerPolicyNever, |
| 694 nullptr}, |
| 659 {"http://example.test", "<img src='bla.gif'/>", "bla.gif", | 695 {"http://example.test", "<img src='bla.gif'/>", "bla.gif", |
| 660 "http://example.test/", Resource::kImage, 0, kReferrerPolicyNever}}; | 696 "http://example.test/", Resource::kImage, 0, kReferrerPolicyNever, |
| 697 nullptr}}; |
| 661 | 698 |
| 662 for (const auto& test_case : test_cases) | 699 for (const auto& test_case : test_cases) |
| 663 Test(test_case); | 700 Test(test_case); |
| 664 } | 701 } |
| 665 | 702 |
| 666 TEST_F(HTMLPreloadScannerTest, testNonce) { | 703 TEST_F(HTMLPreloadScannerTest, testNonce) { |
| 667 NonceTestCase test_cases[] = { | 704 NonceTestCase test_cases[] = { |
| 668 {"http://example.test", "<script src='/script'></script>", ""}, | 705 {"http://example.test", "<script src='/script'></script>", ""}, |
| 669 {"http://example.test", "<script src='/script' nonce=''></script>", ""}, | 706 {"http://example.test", "<script src='/script' nonce=''></script>", ""}, |
| 670 {"http://example.test", "<script src='/script' nonce='abc'></script>", | 707 {"http://example.test", "<script src='/script' nonce='abc'></script>", |
| (...skipping 20 matching lines...) Expand all Loading... |
| 691 Test(test_case); | 728 Test(test_case); |
| 692 } | 729 } |
| 693 } | 730 } |
| 694 | 731 |
| 695 // Tests that a document-level referrer policy (e.g. one set by HTTP header) is | 732 // Tests that a document-level referrer policy (e.g. one set by HTTP header) is |
| 696 // applied for preload requests. | 733 // applied for preload requests. |
| 697 TEST_F(HTMLPreloadScannerTest, testReferrerPolicyOnDocument) { | 734 TEST_F(HTMLPreloadScannerTest, testReferrerPolicyOnDocument) { |
| 698 RunSetUp(kViewportEnabled, kPreloadEnabled, kReferrerPolicyOrigin); | 735 RunSetUp(kViewportEnabled, kPreloadEnabled, kReferrerPolicyOrigin); |
| 699 ReferrerPolicyTestCase test_cases[] = { | 736 ReferrerPolicyTestCase test_cases[] = { |
| 700 {"http://example.test", "<img src='blah.gif'/>", "blah.gif", | 737 {"http://example.test", "<img src='blah.gif'/>", "blah.gif", |
| 701 "http://example.test/", Resource::kImage, 0, kReferrerPolicyOrigin}, | 738 "http://example.test/", Resource::kImage, 0, kReferrerPolicyOrigin, |
| 739 nullptr}, |
| 702 {"http://example.test", "<style>@import url('blah.css');</style>", | 740 {"http://example.test", "<style>@import url('blah.css');</style>", |
| 703 "blah.css", "http://example.test/", Resource::kCSSStyleSheet, 0, | 741 "blah.css", "http://example.test/", Resource::kCSSStyleSheet, 0, |
| 704 kReferrerPolicyOrigin}, | 742 kReferrerPolicyOrigin, nullptr}, |
| 705 // Tests that a meta-delivered referrer policy with an unrecognized policy | 743 // Tests that a meta-delivered referrer policy with an unrecognized policy |
| 706 // value does not override the document's referrer policy. | 744 // value does not override the document's referrer policy. |
| 707 {"http://example.test", | 745 {"http://example.test", |
| 708 "<meta name='referrer' content='not-a-valid-policy'><img " | 746 "<meta name='referrer' content='not-a-valid-policy'><img " |
| 709 "src='bla.gif'/>", | 747 "src='bla.gif'/>", |
| 710 "bla.gif", "http://example.test/", Resource::kImage, 0, | 748 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 711 kReferrerPolicyOrigin}, | 749 kReferrerPolicyOrigin, nullptr}, |
| 712 // Tests that a meta-delivered referrer policy with a valid policy value | 750 // Tests that a meta-delivered referrer policy with a valid policy value |
| 713 // does override the document's referrer policy. | 751 // does override the document's referrer policy. |
| 714 {"http://example.test", | 752 {"http://example.test", |
| 715 "<meta name='referrer' content='unsafe-url'><img src='bla.gif'/>", | 753 "<meta name='referrer' content='unsafe-url'><img src='bla.gif'/>", |
| 716 "bla.gif", "http://example.test/", Resource::kImage, 0, | 754 "bla.gif", "http://example.test/", Resource::kImage, 0, |
| 717 kReferrerPolicyAlways}, | 755 kReferrerPolicyAlways, nullptr}, |
| 718 }; | 756 }; |
| 719 | 757 |
| 720 for (const auto& test_case : test_cases) | 758 for (const auto& test_case : test_cases) |
| 721 Test(test_case); | 759 Test(test_case); |
| 722 } | 760 } |
| 723 | 761 |
| 724 TEST_F(HTMLPreloadScannerTest, testLinkRelPreload) { | 762 TEST_F(HTMLPreloadScannerTest, testLinkRelPreload) { |
| 725 TestCase test_cases[] = { | 763 TestCase test_cases[] = { |
| 726 {"http://example.test", "<link rel=preload href=bla>", "bla", | 764 {"http://example.test", "<link rel=preload href=bla>", "bla", |
| 727 "http://example.test/", Resource::kRaw, 0}, | 765 "http://example.test/", Resource::kRaw, 0}, |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 {"http://example.test", "<link rel=preload href=bla as=SCRIPT>", "bla", | 877 {"http://example.test", "<link rel=preload href=bla as=SCRIPT>", "bla", |
| 840 "http://example.test/", Resource::kScript, 0}, | 878 "http://example.test/", Resource::kScript, 0}, |
| 841 {"http://example.test", "<link rel=preload href=bla as=fOnT>", "bla", | 879 {"http://example.test", "<link rel=preload href=bla as=fOnT>", "bla", |
| 842 "http://example.test/", Resource::kFont, 0}, | 880 "http://example.test/", Resource::kFont, 0}, |
| 843 }; | 881 }; |
| 844 | 882 |
| 845 for (const auto& test_case : test_cases) | 883 for (const auto& test_case : test_cases) |
| 846 Test(test_case); | 884 Test(test_case); |
| 847 } | 885 } |
| 848 | 886 |
| 887 TEST_F(HTMLPreloadScannerTest, ReferrerHeader) { |
| 888 RunSetUp(kViewportEnabled, kPreloadEnabled, kReferrerPolicyAlways); |
| 889 |
| 890 KURL preload_url(kParsedURLString, "http://example.test/sheet.css"); |
| 891 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( |
| 892 preload_url, WrappedResourceResponse(ResourceResponse()), ""); |
| 893 |
| 894 ReferrerPolicyTestCase test_case = { |
| 895 "http://example.test", |
| 896 "<link rel='stylesheet' href='sheet.css' type='text/css'>", |
| 897 "sheet.css", |
| 898 "http://example.test/", |
| 899 Resource::kCSSStyleSheet, |
| 900 0, |
| 901 kReferrerPolicyAlways, |
| 902 "http://whatever.test/"}; |
| 903 Test(test_case); |
| 904 } |
| 905 |
| 849 } // namespace blink | 906 } // namespace blink |
| OLD | NEW |