| Index: third_party/WebKit/Source/core/html/parser/HTMLPreloadScannerTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/parser/HTMLPreloadScannerTest.cpp b/third_party/WebKit/Source/core/html/parser/HTMLPreloadScannerTest.cpp
|
| index 3e746aadd3fc5f422daeb277d09efdbcf9890baf..f4824ff6b429000a57a9fbe5e55905f3f1e555df 100644
|
| --- a/third_party/WebKit/Source/core/html/parser/HTMLPreloadScannerTest.cpp
|
| +++ b/third_party/WebKit/Source/core/html/parser/HTMLPreloadScannerTest.cpp
|
| @@ -58,6 +58,13 @@ struct NonceTestCase {
|
| const char* nonce;
|
| };
|
|
|
| +struct ContextTestCase {
|
| + const char* base_url;
|
| + const char* input_html;
|
| + const char* preloaded_url; // Or nullptr if no preload is expected.
|
| + bool is_image_set;
|
| +};
|
| +
|
| class MockHTMLResourcePreloader : public ResourcePreloader {
|
| public:
|
| void PreloadRequestVerification(Resource::Type type,
|
| @@ -127,6 +134,11 @@ class MockHTMLResourcePreloader : public ResourcePreloader {
|
| EXPECT_TRUE(preload_request_->Nonce().IsEmpty());
|
| }
|
|
|
| + void ContextVerification(bool is_image_set) {
|
| + ASSERT_TRUE(preload_request_.get());
|
| + EXPECT_EQ(preload_request_->IsImageSetForTestingOnly(), is_image_set);
|
| + }
|
| +
|
| protected:
|
| void Preload(std::unique_ptr<PreloadRequest> preload_request,
|
| const NetworkHintsInterface&) override {
|
| @@ -246,6 +258,16 @@ class HTMLPreloadScannerTest : public testing::Test {
|
| preloader.NonceRequestVerification(test_case.nonce);
|
| }
|
|
|
| + void Test(ContextTestCase test_case) {
|
| + MockHTMLResourcePreloader preloader;
|
| + KURL base_url(kParsedURLString, test_case.base_url);
|
| + scanner_->AppendToEnd(String(test_case.input_html));
|
| + PreloadRequestStream requests = scanner_->Scan(base_url, nullptr);
|
| + preloader.TakeAndPreload(requests);
|
| +
|
| + preloader.ContextVerification(test_case.is_image_set);
|
| + }
|
| +
|
| private:
|
| std::unique_ptr<DummyPageHolder> dummy_page_holder_;
|
| std::unique_ptr<HTMLPreloadScanner> scanner_;
|
| @@ -642,6 +664,19 @@ TEST_F(HTMLPreloadScannerTest, testPicture) {
|
| Test(test_case);
|
| }
|
|
|
| +TEST_F(HTMLPreloadScannerTest, testContext) {
|
| + ContextTestCase test_cases[] = {
|
| + {"http://example.test",
|
| + "<picture><source srcset='srcset_bla.gif'><img src='bla.gif'></picture>",
|
| + "srcset_bla.gif", true},
|
| + {"http://example.test", "<img src='bla.gif'>", "bla.gif", false},
|
| + {"http://example.test", "<img srcset='bla.gif'>", "bla.gif", true},
|
| + };
|
| +
|
| + for (const auto& test_case : test_cases)
|
| + Test(test_case);
|
| +}
|
| +
|
| TEST_F(HTMLPreloadScannerTest, testReferrerPolicy) {
|
| ReferrerPolicyTestCase test_cases[] = {
|
| {"http://example.test", "<img src='bla.gif'/>", "bla.gif",
|
|
|