Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Side by Side Diff: Source/core/html/parser/HTMLPreloadScannerTest.cpp

Issue 1121263002: Add Accept-CH meta http-equiv support to the preloader. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Review nits Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW
« no previous file with comments | « Source/core/html/parser/HTMLPreloadScanner.cpp ('k') | Source/core/html/parser/PreloadRequest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698