| 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 "core/MediaTypeNames.h" | 7 #include "core/MediaTypeNames.h" |
| 8 #include "core/css/MediaValuesCached.h" | 8 #include "core/css/MediaValuesCached.h" |
| 9 #include "core/fetch/ClientHintsPreferences.h" | 9 #include "core/fetch/ClientHintsPreferences.h" |
| 10 #include "core/frame/Settings.h" | 10 #include "core/frame/Settings.h" |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 "bla.gif", "http://example.test/", Resource::Image, 0, | 620 "bla.gif", "http://example.test/", Resource::Image, 0, |
| 621 ReferrerPolicyOrigin}, | 621 ReferrerPolicyOrigin}, |
| 622 {"http://example.test", | 622 {"http://example.test", |
| 623 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", | 623 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", |
| 624 "http://example.test/", Resource::Image, 0, ReferrerPolicyDefault}, | 624 "http://example.test/", Resource::Image, 0, ReferrerPolicyDefault}, |
| 625 {"http://example.test", | 625 {"http://example.test", |
| 626 "<meta name='referrer' content='no-referrer'><img " | 626 "<meta name='referrer' content='no-referrer'><img " |
| 627 "referrerpolicy='origin' src='bla.gif'/>", | 627 "referrerpolicy='origin' src='bla.gif'/>", |
| 628 "bla.gif", "http://example.test/", Resource::Image, 0, | 628 "bla.gif", "http://example.test/", Resource::Image, 0, |
| 629 ReferrerPolicyOrigin}, | 629 ReferrerPolicyOrigin}, |
| 630 // The scanner's state is not reset between test cases, so all subsequent
test cases have a document referrer policy of no-referrer. | 630 // The scanner's state is not reset between test cases, so all subsequent |
| 631 // test cases have a document referrer policy of no-referrer. |
| 631 {"http://example.test", | 632 {"http://example.test", |
| 632 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", | 633 "<img referrerpolicy='not-a-valid-policy' src='bla.gif'/>", "bla.gif", |
| 633 "http://example.test/", Resource::Image, 0, ReferrerPolicyNever}, | 634 "http://example.test/", Resource::Image, 0, ReferrerPolicyNever}, |
| 634 {"http://example.test", "<img src='bla.gif'/>", "bla.gif", | 635 {"http://example.test", "<img src='bla.gif'/>", "bla.gif", |
| 635 "http://example.test/", Resource::Image, 0, ReferrerPolicyNever}}; | 636 "http://example.test/", Resource::Image, 0, ReferrerPolicyNever}}; |
| 636 | 637 |
| 637 for (const auto& testCase : testCases) | 638 for (const auto& testCase : testCases) |
| 638 test(testCase); | 639 test(testCase); |
| 639 } | 640 } |
| 640 | 641 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 660 {"http://example.test", "<img src='/image' nonce=''>", ""}, | 661 {"http://example.test", "<img src='/image' nonce=''>", ""}, |
| 661 {"http://example.test", "<img src='/image' nonce='abc'>", ""}, | 662 {"http://example.test", "<img src='/image' nonce='abc'>", ""}, |
| 662 }; | 663 }; |
| 663 | 664 |
| 664 for (const auto& testCase : testCases) { | 665 for (const auto& testCase : testCases) { |
| 665 SCOPED_TRACE(testCase.inputHTML); | 666 SCOPED_TRACE(testCase.inputHTML); |
| 666 test(testCase); | 667 test(testCase); |
| 667 } | 668 } |
| 668 } | 669 } |
| 669 | 670 |
| 670 // Tests that a document-level referrer policy (e.g. one set by HTTP | 671 // Tests that a document-level referrer policy (e.g. one set by HTTP header) is |
| 671 // header) is applied for preload requests. | 672 // applied for preload requests. |
| 672 TEST_F(HTMLPreloadScannerTest, testReferrerPolicyOnDocument) { | 673 TEST_F(HTMLPreloadScannerTest, testReferrerPolicyOnDocument) { |
| 673 runSetUp(ViewportEnabled, PreloadEnabled, ReferrerPolicyOrigin); | 674 runSetUp(ViewportEnabled, PreloadEnabled, ReferrerPolicyOrigin); |
| 674 ReferrerPolicyTestCase testCases[] = { | 675 ReferrerPolicyTestCase testCases[] = { |
| 675 {"http://example.test", "<img src='blah.gif'/>", "blah.gif", | 676 {"http://example.test", "<img src='blah.gif'/>", "blah.gif", |
| 676 "http://example.test/", Resource::Image, 0, ReferrerPolicyOrigin}, | 677 "http://example.test/", Resource::Image, 0, ReferrerPolicyOrigin}, |
| 677 {"http://example.test", "<style>@import url('blah.css');</style>", | 678 {"http://example.test", "<style>@import url('blah.css');</style>", |
| 678 "blah.css", "http://example.test/", Resource::CSSStyleSheet, 0, | 679 "blah.css", "http://example.test/", Resource::CSSStyleSheet, 0, |
| 679 ReferrerPolicyOrigin}, | 680 ReferrerPolicyOrigin}, |
| 680 // Tests that a meta-delivered referrer policy with an | 681 // Tests that a meta-delivered referrer policy with an unrecognized policy |
| 681 // unrecognized policy value does not override the document's | 682 // value does not override the document's referrer policy. |
| 682 // referrer policy. | |
| 683 {"http://example.test", | 683 {"http://example.test", |
| 684 "<meta name='referrer' content='not-a-valid-policy'><img " | 684 "<meta name='referrer' content='not-a-valid-policy'><img " |
| 685 "src='bla.gif'/>", | 685 "src='bla.gif'/>", |
| 686 "bla.gif", "http://example.test/", Resource::Image, 0, | 686 "bla.gif", "http://example.test/", Resource::Image, 0, |
| 687 ReferrerPolicyOrigin}, | 687 ReferrerPolicyOrigin}, |
| 688 // Tests that a meta-delivered referrer policy with a | 688 // Tests that a meta-delivered referrer policy with a valid policy value |
| 689 // valid policy value does override the document's | 689 // does override the document's referrer policy. |
| 690 // referrer policy. | |
| 691 {"http://example.test", | 690 {"http://example.test", |
| 692 "<meta name='referrer' content='unsafe-url'><img src='bla.gif'/>", | 691 "<meta name='referrer' content='unsafe-url'><img src='bla.gif'/>", |
| 693 "bla.gif", "http://example.test/", Resource::Image, 0, | 692 "bla.gif", "http://example.test/", Resource::Image, 0, |
| 694 ReferrerPolicyAlways}, | 693 ReferrerPolicyAlways}, |
| 695 }; | 694 }; |
| 696 | 695 |
| 697 for (const auto& testCase : testCases) | 696 for (const auto& testCase : testCases) |
| 698 test(testCase); | 697 test(testCase); |
| 699 } | 698 } |
| 700 | 699 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 720 {"http://example.test", | 719 {"http://example.test", |
| 721 "<link rel=preload href=bla as=image media=\"(max-width: 400px)\">", | 720 "<link rel=preload href=bla as=image media=\"(max-width: 400px)\">", |
| 722 nullptr, "http://example.test/", Resource::Image, 0}, | 721 nullptr, "http://example.test/", Resource::Image, 0}, |
| 723 }; | 722 }; |
| 724 | 723 |
| 725 for (const auto& testCase : testCases) | 724 for (const auto& testCase : testCases) |
| 726 test(testCase); | 725 test(testCase); |
| 727 } | 726 } |
| 728 | 727 |
| 729 } // namespace blink | 728 } // namespace blink |
| OLD | NEW |