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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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) | |
Mike West
2015/05/05 15:22:36
Nit: s/testCase: /testCase : /
| |
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) | |
Mike West
2015/05/05 15:22:36
Nit: Ditto.
| |
173 test(testCase); | |
174 } | |
175 | |
138 } | 176 } |
OLD | NEW |