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

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

Issue 1189403002: Fix Preloader Meta Accept-CH bug (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix broken tests Created 5 years, 6 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/fetch/ClientHintsPreferences.h"
(...skipping 18 matching lines...) Expand all
29 29
30 typedef struct { 30 typedef struct {
31 const char* baseURL; 31 const char* baseURL;
32 const char* inputHTML; 32 const char* inputHTML;
33 const char* preconnectedHost; 33 const char* preconnectedHost;
34 CrossOriginAttributeValue crossOrigin; 34 CrossOriginAttributeValue crossOrigin;
35 } PreconnectTestCase; 35 } PreconnectTestCase;
36 36
37 class MockHTMLResourcePreloader : public ResourcePreloader { 37 class MockHTMLResourcePreloader : public ResourcePreloader {
38 public: 38 public:
39 void preloadRequestVerification(Resource::Type type, const String& url, cons t String& baseURL, int width) 39 void preloadRequestVerification(Resource::Type type, const String& url, cons t String& baseURL, int width, const ClientHintsPreferences& preferences)
40 { 40 {
41 EXPECT_FALSE(m_preloadRequest->isPreconnect()); 41 EXPECT_FALSE(m_preloadRequest->isPreconnect());
42 EXPECT_EQ(type, m_preloadRequest->resourceType()); 42 EXPECT_EQ(type, m_preloadRequest->resourceType());
43 EXPECT_STREQ(url.ascii().data(), m_preloadRequest->resourceURL().ascii() .data()); 43 EXPECT_STREQ(url.ascii().data(), m_preloadRequest->resourceURL().ascii() .data());
44 EXPECT_STREQ(baseURL.ascii().data(), m_preloadRequest->baseURL().string( ).ascii().data()); 44 EXPECT_STREQ(baseURL.ascii().data(), m_preloadRequest->baseURL().string( ).ascii().data());
45 EXPECT_EQ(width, m_preloadRequest->resourceWidth()); 45 EXPECT_EQ(width, m_preloadRequest->resourceWidth());
46 EXPECT_EQ(preferences.shouldSendDPR(), m_preloadRequest->preferences().s houldSendDPR());
47 EXPECT_EQ(preferences.shouldSendResourceWidth(), m_preloadRequest->prefe rences().shouldSendResourceWidth());
48 EXPECT_EQ(preferences.shouldSendViewportWidth(), m_preloadRequest->prefe rences().shouldSendViewportWidth());
46 } 49 }
47 50
48 void preconnectRequestVerification(const String& host, CrossOriginAttributeV alue crossOrigin) 51 void preconnectRequestVerification(const String& host, CrossOriginAttributeV alue crossOrigin)
49 { 52 {
50 if (!host.isNull()) { 53 if (!host.isNull()) {
51 EXPECT_TRUE(m_preloadRequest->isPreconnect()); 54 EXPECT_TRUE(m_preloadRequest->isPreconnect());
52 EXPECT_STREQ(m_preloadRequest->resourceURL().ascii().data(), host.as cii().data()); 55 EXPECT_STREQ(m_preloadRequest->resourceURL().ascii().data(), host.as cii().data());
53 EXPECT_EQ(m_preloadRequest->isCORS(), crossOrigin != CrossOriginAttr ibuteNotSet); 56 EXPECT_EQ(m_preloadRequest->isCORS(), crossOrigin != CrossOriginAttr ibuteNotSet);
54 EXPECT_EQ(m_preloadRequest->isAllowCredentials(), crossOrigin == Cro ssOriginAttributeUseCredentials); 57 EXPECT_EQ(m_preloadRequest->isAllowCredentials(), crossOrigin == Cro ssOriginAttributeUseCredentials);
55 } 58 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 runSetUp(true); 108 runSetUp(true);
106 } 109 }
107 110
108 void test(TestCase testCase) 111 void test(TestCase testCase)
109 { 112 {
110 MockHTMLResourcePreloader preloader; 113 MockHTMLResourcePreloader preloader;
111 KURL baseURL(ParsedURLString, testCase.baseURL); 114 KURL baseURL(ParsedURLString, testCase.baseURL);
112 m_scanner->appendToEnd(String(testCase.inputHTML)); 115 m_scanner->appendToEnd(String(testCase.inputHTML));
113 m_scanner->scan(&preloader, baseURL); 116 m_scanner->scan(&preloader, baseURL);
114 117
115 preloader.preloadRequestVerification(testCase.type, testCase.preloadedUR L, testCase.outputBaseURL, testCase.resourceWidth); 118 preloader.preloadRequestVerification(testCase.type, testCase.preloadedUR L, testCase.outputBaseURL, testCase.resourceWidth, testCase.preferences);
116 } 119 }
117 120
118 void test(PreconnectTestCase testCase) 121 void test(PreconnectTestCase testCase)
119 { 122 {
120 MockHTMLResourcePreloader preloader; 123 MockHTMLResourcePreloader preloader;
121 KURL baseURL(ParsedURLString, testCase.baseURL); 124 KURL baseURL(ParsedURLString, testCase.baseURL);
122 m_scanner->appendToEnd(String(testCase.inputHTML)); 125 m_scanner->appendToEnd(String(testCase.inputHTML));
123 m_scanner->scan(&preloader, baseURL); 126 m_scanner->scan(&preloader, baseURL);
124 preloader.preconnectRequestVerification(testCase.preconnectedHost, testC ase.crossOrigin); 127 preloader.preconnectRequestVerification(testCase.preconnectedHost, testC ase.crossOrigin);
125 } 128 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 { 224 {
222 ClientHintsPreferences dpr; 225 ClientHintsPreferences dpr;
223 ClientHintsPreferences resourceWidth; 226 ClientHintsPreferences resourceWidth;
224 ClientHintsPreferences all; 227 ClientHintsPreferences all;
225 ClientHintsPreferences viewportWidth; 228 ClientHintsPreferences viewportWidth;
226 dpr.setShouldSendDPR(true); 229 dpr.setShouldSendDPR(true);
227 all.setShouldSendDPR(true); 230 all.setShouldSendDPR(true);
228 resourceWidth.setShouldSendResourceWidth(true); 231 resourceWidth.setShouldSendResourceWidth(true);
229 all.setShouldSendResourceWidth(true); 232 all.setShouldSendResourceWidth(true);
230 viewportWidth.setShouldSendViewportWidth(true); 233 viewportWidth.setShouldSendViewportWidth(true);
234 all.setShouldSendViewportWidth(true);
231 TestCase testCases[] = { 235 TestCase testCases[] = {
232 {"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}, 236 {"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},
233 {"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}, 237 {"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},
234 {"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}, 238 {"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},
235 {"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}, 239 {"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},
236 {"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}, 240 {"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},
237 {"http://example.test", "<meta http-equiv='accept-ch' content=' width '><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.t est/", Resource::Image, 0, resourceWidth}, 241 {"http://example.test", "<meta http-equiv='accept-ch' content=' width '><img sizes='100vw' srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "ht tp://example.test/", Resource::Image, 500, resourceWidth},
238 {"http://example.test", "<meta http-equiv='accept-ch' content=' width , wutever'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http:// example.test/", Resource::Image, 0, resourceWidth}, 242 {"http://example.test", "<meta http-equiv='accept-ch' content=' width , wutever'><img sizes='300px' srcset='bla.gif 320w, blabla.gif 640w'>", "blabla. gif", "http://example.test/", Resource::Image, 300, resourceWidth},
239 {"http://example.test", "<meta http-equiv='accept-ch' content=' viewpor t-width '><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http:// example.test/", Resource::Image, 0, resourceWidth}, 243 {"http://example.test", "<meta http-equiv='accept-ch' content=' viewpor t-width '><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http:// example.test/", Resource::Image, 0, viewportWidth},
240 {"http://example.test", "<meta http-equiv='accept-ch' content=' viewpor t-width , wutever'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/", Resource::Image, 0, resourceWidth}, 244 {"http://example.test", "<meta http-equiv='accept-ch' content=' viewpor t-width , wutever'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/", Resource::Image, 0, viewportWidth},
241 {"http://example.test", "<meta http-equiv='accept-ch' content=' viewpor t-width ,width, wutever, dpr \t'><img srcset='bla.gif 320w, blabla.gif 640w'>", "blabla.gif", "http://example.test/", Resource::Image, 0, all}, 245 {"http://example.test", "<meta http-equiv='accept-ch' content=' viewpor t-width ,width, wutever, dpr \t'><img sizes='90vw' srcset='bla.gif 320w, blabla .gif 640w'>", "blabla.gif", "http://example.test/", Resource::Image, 450, all},
242 }; 246 };
243 247
244 for (const auto& testCase : testCases) 248 for (const auto& testCase : testCases) {
249 runSetUp(false);
245 test(testCase); 250 test(testCase);
251 }
246 } 252 }
247 253
248 TEST_F(HTMLPreloadScannerTest, testPreconnect) 254 TEST_F(HTMLPreloadScannerTest, testPreconnect)
249 { 255 {
250 PreconnectTestCase testCases[] = { 256 PreconnectTestCase testCases[] = {
251 {"http://example.test", "<link rel=preconnect href=http://example2.test> ", "http://example2.test", CrossOriginAttributeNotSet}, 257 {"http://example.test", "<link rel=preconnect href=http://example2.test> ", "http://example2.test", CrossOriginAttributeNotSet},
252 {"http://example.test", "<link rel=preconnect href=http://example2.test crossorigin=anonymous>", "http://example2.test", CrossOriginAttributeAnonymous}, 258 {"http://example.test", "<link rel=preconnect href=http://example2.test crossorigin=anonymous>", "http://example2.test", CrossOriginAttributeAnonymous},
253 {"http://example.test", "<link rel=preconnect href=http://example2.test crossorigin='use-credentials'>", "http://example2.test", CrossOriginAttributeUse Credentials}, 259 {"http://example.test", "<link rel=preconnect href=http://example2.test crossorigin='use-credentials'>", "http://example2.test", CrossOriginAttributeUse Credentials},
254 {"http://example.test", "<link rel=preconnected href=http://example2.tes t crossorigin='use-credentials'>", nullptr, CrossOriginAttributeNotSet}, 260 {"http://example.test", "<link rel=preconnected href=http://example2.tes t crossorigin='use-credentials'>", nullptr, CrossOriginAttributeNotSet},
255 {"http://example.test", "<link rel=preconnect href=ws://example2.test cr ossorigin='use-credentials'>", nullptr, CrossOriginAttributeNotSet}, 261 {"http://example.test", "<link rel=preconnect href=ws://example2.test cr ossorigin='use-credentials'>", nullptr, CrossOriginAttributeNotSet},
256 }; 262 };
257 263
258 for (const auto& testCase : testCases) 264 for (const auto& testCase : testCases)
259 test(testCase); 265 test(testCase);
260 } 266 }
261 267
262 } // namespace blink 268 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698