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 "config.h" | 5 #include "config.h" |
6 #include "core/html/parser/HTMLPreloadScanner.h" | 6 #include "core/html/parser/HTMLPreloadScanner.h" |
7 | 7 |
8 #include "core/MediaTypeNames.h" | 8 #include "core/MediaTypeNames.h" |
9 #include "core/css/MediaValuesCached.h" | 9 #include "core/css/MediaValuesCached.h" |
| 10 #include "core/fetch/ClientHintsPreferences.h" |
10 #include "core/html/parser/HTMLParserOptions.h" | 11 #include "core/html/parser/HTMLParserOptions.h" |
11 #include "core/html/parser/HTMLResourcePreloader.h" | 12 #include "core/html/parser/HTMLResourcePreloader.h" |
12 #include "core/testing/DummyPageHolder.h" | 13 #include "core/testing/DummyPageHolder.h" |
13 #include <gtest/gtest.h> | 14 #include <gtest/gtest.h> |
14 | 15 |
15 namespace blink { | 16 namespace blink { |
16 | 17 |
17 typedef struct { | 18 typedef struct { |
18 const char* baseURL; | 19 const char* baseURL; |
19 const char* inputHTML; | 20 const char* inputHTML; |
20 const char* preloadedURL; | 21 const char* preloadedURL; |
21 const char* outputBaseURL; | 22 const char* outputBaseURL; |
22 Resource::Type type; | 23 Resource::Type type; |
23 int resourceWidth; | 24 int resourceWidth; |
| 25 ClientHintsPreferences preferences; |
24 } TestCase; | 26 } TestCase; |
25 | 27 |
26 class MockHTMLResourcePreloader : public ResourcePreloader { | 28 class MockHTMLResourcePreloader : public ResourcePreloader { |
27 public: | 29 public: |
28 void preloadRequestVerification(Resource::Type type, const String& url, cons
t String& baseURL, int width) | 30 void preloadRequestVerification(Resource::Type type, const String& url, cons
t String& baseURL, int width) |
29 { | 31 { |
30 EXPECT_EQ(m_preloadRequest->resourceType(), type); | 32 EXPECT_EQ(m_preloadRequest->resourceType(), type); |
31 EXPECT_STREQ(m_preloadRequest->resourceURL().ascii().data(), url.ascii(
).data()); | 33 EXPECT_STREQ(m_preloadRequest->resourceURL().ascii().data(), url.ascii(
).data()); |
32 EXPECT_STREQ(m_preloadRequest->baseURL().ascii().data(), baseURL.ascii()
.data()); | 34 EXPECT_STREQ(m_preloadRequest->baseURL().ascii().data(), baseURL.ascii()
.data()); |
33 EXPECT_EQ(m_preloadRequest->resourceWidth(), width); | 35 EXPECT_EQ(m_preloadRequest->resourceWidth(), width); |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 100w'>", "bla2.gif", "http://example.test/", Resource::Image, 250}, | 105 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 100w'>", "bla2.gif", "http://example.test/", Resource::Image, 250}, |
104 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 100w, bla3.gif 250w'>", "bla3.gif", "http://example.test/", Resource::Image, 2
50}, | 106 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 100w, bla3.gif 250w'>", "bla3.gif", "http://example.test/", Resource::Image, 2
50}, |
105 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 100w, bla3.gif 250w, bla4.gif 500w'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, | 107 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 100w, bla3.gif 250w, bla4.gif 500w'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, |
106 {"http://example.test", "<img src='bla.gif' srcset='bla2.gif 100w, bla3.
gif 250w, bla4.gif 500w' sizes='50vw'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, | 108 {"http://example.test", "<img src='bla.gif' srcset='bla2.gif 100w, bla3.
gif 250w, bla4.gif 500w' sizes='50vw'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, |
107 {"http://example.test", "<img src='bla.gif' sizes='50vw' srcset='bla2.gi
f 100w, bla3.gif 250w, bla4.gif 500w'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, | 109 {"http://example.test", "<img src='bla.gif' sizes='50vw' srcset='bla2.gi
f 100w, bla3.gif 250w, bla4.gif 500w'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, |
108 {"http://example.test", "<img sizes='50vw' srcset='bla2.gif 100w, bla3.g
if 250w, bla4.gif 500w' src='bla.gif'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, | 110 {"http://example.test", "<img sizes='50vw' srcset='bla2.gif 100w, bla3.g
if 250w, bla4.gif 500w' src='bla.gif'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, |
109 {"http://example.test", "<img srcset='bla2.gif 100w, bla3.gif 250w, bla4
.gif 500w' src='bla.gif' sizes='50vw'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, | 111 {"http://example.test", "<img srcset='bla2.gif 100w, bla3.gif 250w, bla4
.gif 500w' src='bla.gif' sizes='50vw'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, |
110 {"http://example.test", "<img srcset='bla2.gif 100w, bla3.gif 250w, bla4
.gif 500w' sizes='50vw' src='bla.gif'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, | 112 {"http://example.test", "<img srcset='bla2.gif 100w, bla3.gif 250w, bla4
.gif 500w' sizes='50vw' src='bla.gif'>", "bla4.gif", "http://example.test/", Res
ource::Image, 250}, |
111 }; | 113 }; |
112 | 114 |
113 for (auto testCase: testCases) | 115 for (auto testCase : testCases) |
114 test(testCase); | 116 test(testCase); |
115 } | 117 } |
| 118 |
116 TEST_F(HTMLPreloadScannerTest, testImagesWithViewport) | 119 TEST_F(HTMLPreloadScannerTest, testImagesWithViewport) |
117 { | 120 { |
118 TestCase testCases[] = { | 121 TestCase testCases[] = { |
119 {"http://example.test", "<meta name=viewport content='width=160'><img sr
cset='bla.gif 320w, blabla.gif 640w'>", "bla.gif", "http://example.test/", Resou
rce::Image, 0}, | 122 {"http://example.test", "<meta name=viewport content='width=160'><img sr
cset='bla.gif 320w, blabla.gif 640w'>", "bla.gif", "http://example.test/", Resou
rce::Image, 0}, |
120 {"http://example.test", "<img src='bla.gif'>", "bla.gif", "http://exampl
e.test/", Resource::Image, 0}, | 123 {"http://example.test", "<img src='bla.gif'>", "bla.gif", "http://exampl
e.test/", Resource::Image, 0}, |
121 {"http://example.test", "<img sizes='50vw' src='bla.gif'>", "bla.gif", "
http://example.test/", Resource::Image, 0}, | 124 {"http://example.test", "<img sizes='50vw' src='bla.gif'>", "bla.gif", "
http://example.test/", Resource::Image, 0}, |
122 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 1x'>", "bla2.gif", "http://example.test/", Resource::Image, 0}, | 125 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 1x'>", "bla2.gif", "http://example.test/", Resource::Image, 0}, |
123 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 0.5x'>", "bla.gif", "http://example.test/", Resource::Image, 0}, | 126 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 0.5x'>", "bla.gif", "http://example.test/", Resource::Image, 0}, |
124 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 160w'>", "bla2.gif", "http://example.test/", Resource::Image, 80}, | 127 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 160w'>", "bla2.gif", "http://example.test/", Resource::Image, 80}, |
125 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 160w, bla3.gif 250w'>", "bla2.gif", "http://example.test/", Resource::Image, 8
0}, | 128 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 160w, bla3.gif 250w'>", "bla2.gif", "http://example.test/", Resource::Image, 8
0}, |
126 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 160w, bla3.gif 250w, bla4.gif 500w'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, | 129 {"http://example.test", "<img sizes='50vw' src='bla.gif' srcset='bla2.gi
f 160w, bla3.gif 250w, bla4.gif 500w'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, |
127 {"http://example.test", "<img src='bla.gif' srcset='bla2.gif 160w, bla3.
gif 250w, bla4.gif 500w' sizes='50vw'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, | 130 {"http://example.test", "<img src='bla.gif' srcset='bla2.gif 160w, bla3.
gif 250w, bla4.gif 500w' sizes='50vw'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, |
128 {"http://example.test", "<img src='bla.gif' sizes='50vw' srcset='bla2.gi
f 160w, bla3.gif 250w, bla4.gif 500w'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, | 131 {"http://example.test", "<img src='bla.gif' sizes='50vw' srcset='bla2.gi
f 160w, bla3.gif 250w, bla4.gif 500w'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, |
129 {"http://example.test", "<img sizes='50vw' srcset='bla2.gif 160w, bla3.g
if 250w, bla4.gif 500w' src='bla.gif'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, | 132 {"http://example.test", "<img sizes='50vw' srcset='bla2.gif 160w, bla3.g
if 250w, bla4.gif 500w' src='bla.gif'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, |
130 {"http://example.test", "<img srcset='bla2.gif 160w, bla3.gif 250w, bla4
.gif 500w' src='bla.gif' sizes='50vw'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, | 133 {"http://example.test", "<img srcset='bla2.gif 160w, bla3.gif 250w, bla4
.gif 500w' src='bla.gif' sizes='50vw'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, |
131 {"http://example.test", "<img srcset='bla2.gif 160w, bla3.gif 250w, bla4
.gif 500w' sizes='50vw' src='bla.gif'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, | 134 {"http://example.test", "<img srcset='bla2.gif 160w, bla3.gif 250w, bla4
.gif 500w' sizes='50vw' src='bla.gif'>", "bla2.gif", "http://example.test/", Res
ource::Image, 80}, |
132 }; | 135 }; |
133 | 136 |
134 for (auto testCase: testCases) | 137 for (auto testCase : testCases) |
135 test(testCase); | 138 test(testCase); |
136 } | 139 } |
137 | 140 |
| 141 TEST_F(HTMLPreloadScannerTest, testViewportNoContent) |
| 142 { |
| 143 TestCase testCases[] = { |
| 144 {"http://example.test", "<meta name=viewport><img srcset='bla.gif 320w,
blabla.gif 640w'>", "blabla.gif", "http://example.test/", Resource::Image, 0}, |
| 145 {"http://example.test", "<meta name=viewport content=sdkbsdkjnejjha><img
srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/",
Resource::Image, 0}, |
| 146 }; |
| 147 |
| 148 for (auto testCase : testCases) |
| 149 test(testCase); |
| 150 } |
| 151 |
| 152 TEST_F(HTMLPreloadScannerTest, testMetaAcceptCH) |
| 153 { |
| 154 ClientHintsPreferences dpr; |
| 155 ClientHintsPreferences rw; |
| 156 ClientHintsPreferences dprAndRw; |
| 157 dpr.setShouldSendDPR(true); |
| 158 dprAndRw.setShouldSendDPR(true); |
| 159 rw.setShouldSendRW(true); |
| 160 dprAndRw.setShouldSendRW(true); |
| 161 TestCase testCases[] = { |
| 162 {"http://example.test", "<meta http-equiv='accept-ch' content='bla'><img
srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/",
Resource::Image, 0}, |
| 163 {"http://example.test", "<meta http-equiv='accept-ch' content='dprw'><im
g srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/"
, Resource::Image, 0}, |
| 164 {"http://example.test", "<meta http-equiv='accept-ch'><img srcset='bla.g
if 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/", Resource::Ima
ge, 0}, |
| 165 {"http://example.test", "<meta http-equiv='accept-ch' content='dpr \t'><
img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test
/", Resource::Image, 0, dpr}, |
| 166 {"http://example.test", "<meta http-equiv='accept-ch' content='bla,dpr \
t'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.
test/", Resource::Image, 0, dpr}, |
| 167 {"http://example.test", "<meta http-equiv='accept-ch' content=' rw '><
img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test
/", Resource::Image, 0, rw}, |
| 168 {"http://example.test", "<meta http-equiv='accept-ch' content=' rw , w
utever'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://exa
mple.test/", Resource::Image, 0, rw}, |
| 169 {"http://example.test", "<meta http-equiv='accept-ch' content=' rw , w
utever, dpr \t'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "ht
tp://example.test/", Resource::Image, 0, dprAndRw}, |
| 170 }; |
| 171 |
| 172 for (auto testCase : testCases) |
| 173 test(testCase); |
| 174 } |
| 175 |
138 } | 176 } |
OLD | NEW |