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

Side by Side Diff: third_party/WebKit/Source/core/loader/LinkLoaderTest.cpp

Issue 2797423003: Remove ResourceFetcher::preloads (Closed)
Patch Set: fix Created 3 years, 8 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 "core/loader/LinkLoader.h" 5 #include "core/loader/LinkLoader.h"
6 6
7 #include <base/macros.h> 7 #include <base/macros.h>
8 #include <memory> 8 #include <memory>
9 #include "core/frame/Settings.h" 9 #include "core/frame/Settings.h"
10 #include "core/html/LinkRelAttribute.h" 10 #include "core/html/LinkRelAttribute.h"
11 #include "core/loader/DocumentLoader.h" 11 #include "core/loader/DocumentLoader.h"
12 #include "core/loader/LinkLoaderClient.h" 12 #include "core/loader/LinkLoaderClient.h"
13 #include "core/loader/NetworkHintsInterface.h" 13 #include "core/loader/NetworkHintsInterface.h"
14 #include "core/testing/DummyPageHolder.h" 14 #include "core/testing/DummyPageHolder.h"
15 #include "platform/loader/fetch/MemoryCache.h" 15 #include "platform/loader/fetch/MemoryCache.h"
16 #include "platform/loader/fetch/ResourceFetcher.h" 16 #include "platform/loader/fetch/ResourceFetcher.h"
17 #include "platform/loader/fetch/ResourceLoadPriority.h" 17 #include "platform/loader/fetch/ResourceLoadPriority.h"
18 #include "platform/testing/URLTestHelpers.h" 18 #include "platform/testing/URLTestHelpers.h"
19 #include "public/platform/Platform.h" 19 #include "public/platform/Platform.h"
20 #include "public/platform/WebURLLoaderMockFactory.h" 20 #include "public/platform/WebURLLoaderMockFactory.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 22
23 namespace blink { 23 namespace blink {
24 24
25 namespace {
26
25 class MockLinkLoaderClient final 27 class MockLinkLoaderClient final
26 : public GarbageCollectedFinalized<MockLinkLoaderClient>, 28 : public GarbageCollectedFinalized<MockLinkLoaderClient>,
27 public LinkLoaderClient { 29 public LinkLoaderClient {
28 USING_GARBAGE_COLLECTED_MIXIN(MockLinkLoaderClient); 30 USING_GARBAGE_COLLECTED_MIXIN(MockLinkLoaderClient);
29 31
30 public: 32 public:
31 static MockLinkLoaderClient* create(bool shouldLoad) { 33 static MockLinkLoaderClient* create(bool shouldLoad) {
32 return new MockLinkLoaderClient(shouldLoad); 34 return new MockLinkLoaderClient(shouldLoad);
33 } 35 }
34 36
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 bool isHTTPS() { return m_isHTTPS; } 76 bool isHTTPS() { return m_isHTTPS; }
75 bool isCrossOrigin() { return m_isCrossOrigin; } 77 bool isCrossOrigin() { return m_isCrossOrigin; }
76 78
77 private: 79 private:
78 mutable bool m_didDnsPrefetch = false; 80 mutable bool m_didDnsPrefetch = false;
79 mutable bool m_didPreconnect = false; 81 mutable bool m_didPreconnect = false;
80 mutable bool m_isHTTPS = false; 82 mutable bool m_isHTTPS = false;
81 mutable bool m_isCrossOrigin = false; 83 mutable bool m_isCrossOrigin = false;
82 }; 84 };
83 85
84 TEST(LinkLoaderTest, Preload) { 86 struct PreloadTestParams {
85 struct TestCase { 87 const char* href;
86 const char* href; 88 const char* as;
87 const char* as; 89 const char* type;
88 const char* type; 90 const char* media;
89 const char* media; 91 const ReferrerPolicy referrerPolicy;
90 const ReferrerPolicy referrerPolicy; 92 const ResourceLoadPriority priority;
91 const ResourceLoadPriority priority; 93 const WebURLRequest::RequestContext context;
92 const WebURLRequest::RequestContext context; 94 const bool linkLoaderShouldLoadValue;
93 const bool linkLoaderShouldLoadValue; 95 const bool expectingLoad;
94 const bool expectingLoad; 96 const ReferrerPolicy expectedReferrerPolicy;
95 const ReferrerPolicy expectedReferrerPolicy; 97 };
96 } cases[] = {
97 {"http://example.test/cat.jpg", "image", "", "", ReferrerPolicyDefault,
98 ResourceLoadPriorityLow, WebURLRequest::RequestContextImage, true, true,
99 ReferrerPolicyDefault},
100 {"http://example.test/cat.js", "script", "", "", ReferrerPolicyDefault,
101 ResourceLoadPriorityHigh, WebURLRequest::RequestContextScript, true,
102 true, ReferrerPolicyDefault},
103 {"http://example.test/cat.css", "style", "", "", ReferrerPolicyDefault,
104 ResourceLoadPriorityVeryHigh, WebURLRequest::RequestContextStyle, true,
105 true, ReferrerPolicyDefault},
106 // TODO(yoav): It doesn't seem like the audio context is ever used. That
107 // should probably be fixed (or we can consolidate audio and video).
108 {"http://example.test/cat.wav", "audio", "", "", ReferrerPolicyDefault,
109 ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true,
110 ReferrerPolicyDefault},
111 {"http://example.test/cat.mp4", "video", "", "", ReferrerPolicyDefault,
112 ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true,
113 ReferrerPolicyDefault},
114 {"http://example.test/cat.vtt", "track", "", "", ReferrerPolicyDefault,
115 ResourceLoadPriorityLow, WebURLRequest::RequestContextTrack, true, true,
116 ReferrerPolicyDefault},
117 {"http://example.test/cat.woff", "font", "", "", ReferrerPolicyDefault,
118 ResourceLoadPriorityHigh, WebURLRequest::RequestContextFont, true, true,
119 ReferrerPolicyDefault},
120 // TODO(yoav): subresource should be *very* low priority (rather than
121 // low).
122 {"http://example.test/cat.empty", "", "", "", ReferrerPolicyDefault,
123 ResourceLoadPriorityHigh, WebURLRequest::RequestContextSubresource, true,
124 true, ReferrerPolicyDefault},
125 {"http://example.test/cat.blob", "blabla", "", "", ReferrerPolicyDefault,
126 ResourceLoadPriorityLow, WebURLRequest::RequestContextSubresource, false,
127 false, ReferrerPolicyDefault},
128 {"bla://example.test/cat.gif", "image", "", "", ReferrerPolicyDefault,
129 ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage,
130 false, false, ReferrerPolicyDefault},
131 // MIME type tests
132 {"http://example.test/cat.webp", "image", "image/webp", "",
133 ReferrerPolicyDefault, ResourceLoadPriorityLow,
134 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
135 {"http://example.test/cat.svg", "image", "image/svg+xml", "",
136 ReferrerPolicyDefault, ResourceLoadPriorityLow,
137 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
138 {"http://example.test/cat.jxr", "image", "image/jxr", "",
139 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
140 WebURLRequest::RequestContextImage, false, false, ReferrerPolicyDefault},
141 {"http://example.test/cat.js", "script", "text/javascript", "",
142 ReferrerPolicyDefault, ResourceLoadPriorityHigh,
143 WebURLRequest::RequestContextScript, true, true, ReferrerPolicyDefault},
144 {"http://example.test/cat.js", "script", "text/coffeescript", "",
145 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
146 WebURLRequest::RequestContextScript, false, false,
147 ReferrerPolicyDefault},
148 {"http://example.test/cat.css", "style", "text/css", "",
149 ReferrerPolicyDefault, ResourceLoadPriorityVeryHigh,
150 WebURLRequest::RequestContextStyle, true, true, ReferrerPolicyDefault},
151 {"http://example.test/cat.css", "style", "text/sass", "",
152 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
153 WebURLRequest::RequestContextStyle, false, false, ReferrerPolicyDefault},
154 {"http://example.test/cat.wav", "audio", "audio/wav", "",
155 ReferrerPolicyDefault, ResourceLoadPriorityLow,
156 WebURLRequest::RequestContextVideo, true, true, ReferrerPolicyDefault},
157 {"http://example.test/cat.wav", "audio", "audio/mp57", "",
158 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
159 WebURLRequest::RequestContextVideo, false, false, ReferrerPolicyDefault},
160 {"http://example.test/cat.webm", "video", "video/webm", "",
161 ReferrerPolicyDefault, ResourceLoadPriorityLow,
162 WebURLRequest::RequestContextVideo, true, true, ReferrerPolicyDefault},
163 {"http://example.test/cat.mp199", "video", "video/mp199", "",
164 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
165 WebURLRequest::RequestContextVideo, false, false, ReferrerPolicyDefault},
166 {"http://example.test/cat.vtt", "track", "text/vtt", "",
167 ReferrerPolicyDefault, ResourceLoadPriorityLow,
168 WebURLRequest::RequestContextTrack, true, true, ReferrerPolicyDefault},
169 {"http://example.test/cat.vtt", "track", "text/subtitlething", "",
170 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
171 WebURLRequest::RequestContextTrack, false, false, ReferrerPolicyDefault},
172 {"http://example.test/cat.woff", "font", "font/woff2", "",
173 ReferrerPolicyDefault, ResourceLoadPriorityHigh,
174 WebURLRequest::RequestContextFont, true, true, ReferrerPolicyDefault},
175 {"http://example.test/cat.woff", "font", "font/woff84", "",
176 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
177 WebURLRequest::RequestContextFont, false, false, ReferrerPolicyDefault},
178 {"http://example.test/cat.empty", "", "foo/bar", "",
179 ReferrerPolicyDefault, ResourceLoadPriorityHigh,
180 WebURLRequest::RequestContextSubresource, true, true,
181 ReferrerPolicyDefault},
182 {"http://example.test/cat.blob", "blabla", "foo/bar", "",
183 ReferrerPolicyDefault, ResourceLoadPriorityLow,
184 WebURLRequest::RequestContextSubresource, false, false,
185 ReferrerPolicyDefault},
186 // Media tests
187 {"http://example.test/cat.gif", "image", "image/gif",
188 "(max-width: 600px)", ReferrerPolicyDefault, ResourceLoadPriorityLow,
189 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
190 {"http://example.test/cat.gif", "image", "image/gif",
191 "(max-width: 400px)", ReferrerPolicyDefault,
192 ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage, true,
193 false, ReferrerPolicyDefault},
194 {"http://example.test/cat.gif", "image", "image/gif",
195 "(max-width: 600px)", ReferrerPolicyDefault, ResourceLoadPriorityLow,
196 WebURLRequest::RequestContextImage, false, false, ReferrerPolicyDefault},
197 // Referrer Policy
198 {"http://example.test/cat.gif", "image", "image/gif", "",
199 ReferrerPolicyOrigin, ResourceLoadPriorityLow,
200 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyOrigin},
201 {"http://example.test/cat.gif", "image", "image/gif", "",
202 ReferrerPolicyOriginWhenCrossOrigin, ResourceLoadPriorityLow,
203 WebURLRequest::RequestContextImage, true, true,
204 ReferrerPolicyOriginWhenCrossOrigin},
205 {"http://example.test/cat.gif", "image", "image/gif", "",
206 ReferrerPolicyNever, ResourceLoadPriorityLow,
207 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyNever},
208 };
209 98
210 // Test the cases with a single header 99 class LinkLoaderPreloadTest
211 for (const auto& testCase : cases) { 100 : public ::testing::TestWithParam<PreloadTestParams> {
212 std::unique_ptr<DummyPageHolder> dummyPageHolder = 101 public:
213 DummyPageHolder::create(IntSize(500, 500)); 102 ~LinkLoaderPreloadTest() {
214 dummyPageHolder->frame().settings()->setScriptEnabled(true);
215 Persistent<MockLinkLoaderClient> loaderClient =
216 MockLinkLoaderClient::create(testCase.linkLoaderShouldLoadValue);
217 LinkLoader* loader = LinkLoader::create(loaderClient.get());
218 KURL hrefURL = KURL(KURL(), testCase.href);
219 URLTestHelpers::registerMockedErrorURLLoad(hrefURL);
220 loader->loadLink(LinkRelAttribute("preload"), CrossOriginAttributeNotSet,
221 testCase.type, testCase.as, testCase.media,
222 testCase.referrerPolicy, hrefURL,
223 dummyPageHolder->document(), NetworkHintsMock());
224 ASSERT_TRUE(dummyPageHolder->document().fetcher());
225 HeapListHashSet<Member<Resource>>* preloads =
226 dummyPageHolder->document().fetcher()->preloads();
227 if (testCase.expectingLoad) {
228 if (!preloads) {
229 fprintf(stderr, "Unexpected result %s %s %s\n", testCase.href,
230 testCase.as, testCase.type);
231 }
232 EXPECT_TRUE(preloads);
233 } else {
234 EXPECT_FALSE(preloads);
235 }
236 if (preloads) {
237 if (testCase.priority == ResourceLoadPriorityUnresolved) {
238 EXPECT_EQ(0u, preloads->size());
239 } else {
240 EXPECT_EQ(1u, preloads->size());
241 if (preloads->size() > 0) {
242 Resource* resource = preloads->begin().get()->get();
243 EXPECT_EQ(testCase.priority, resource->resourceRequest().priority());
244 EXPECT_EQ(testCase.context,
245 resource->resourceRequest().requestContext());
246 if (testCase.expectedReferrerPolicy != ReferrerPolicyDefault) {
247 EXPECT_EQ(testCase.expectedReferrerPolicy,
248 resource->resourceRequest().getReferrerPolicy());
249 }
250 }
251 }
252 dummyPageHolder->document().fetcher()->clearPreloads();
253 }
254 Platform::current() 103 Platform::current()
255 ->getURLLoaderMockFactory() 104 ->getURLLoaderMockFactory()
256 ->unregisterAllURLsAndClearMemoryCache(); 105 ->unregisterAllURLsAndClearMemoryCache();
257 } 106 }
107 };
108
109 TEST_P(LinkLoaderPreloadTest, Preload) {
110 const auto& testCase = GetParam();
111 std::unique_ptr<DummyPageHolder> dummyPageHolder =
112 DummyPageHolder::create(IntSize(500, 500));
113 ResourceFetcher* fetcher = dummyPageHolder->document().fetcher();
114 ASSERT_TRUE(fetcher);
115 dummyPageHolder->frame().settings()->setScriptEnabled(true);
116 Persistent<MockLinkLoaderClient> loaderClient =
117 MockLinkLoaderClient::create(testCase.linkLoaderShouldLoadValue);
118 LinkLoader* loader = LinkLoader::create(loaderClient.get());
119 KURL hrefURL = KURL(KURL(), testCase.href);
120 URLTestHelpers::registerMockedErrorURLLoad(hrefURL);
121 loader->loadLink(LinkRelAttribute("preload"), CrossOriginAttributeNotSet,
122 testCase.type, testCase.as, testCase.media,
123 testCase.referrerPolicy, hrefURL,
124 dummyPageHolder->document(), NetworkHintsMock());
125 if (testCase.expectingLoad &&
126 testCase.priority != ResourceLoadPriorityUnresolved) {
127 ASSERT_EQ(1, fetcher->countPreloads());
128 Resource* resource = loader->linkPreloadedResourceForTesting();
129 ASSERT_NE(resource, nullptr);
130 EXPECT_TRUE(fetcher->containsAsPreloadForTesting(resource));
131 EXPECT_EQ(testCase.priority, resource->resourceRequest().priority());
132 EXPECT_EQ(testCase.context, resource->resourceRequest().requestContext());
133 if (testCase.expectedReferrerPolicy != ReferrerPolicyDefault) {
134 EXPECT_EQ(testCase.expectedReferrerPolicy,
135 resource->resourceRequest().getReferrerPolicy());
136 }
137 } else {
138 ASSERT_EQ(0, fetcher->countPreloads());
139 }
258 } 140 }
259 141
142 constexpr PreloadTestParams kPreloadTestParams[] = {
143 {"http://example.test/cat.jpg", "image", "", "", ReferrerPolicyDefault,
144 ResourceLoadPriorityLow, WebURLRequest::RequestContextImage, true, true,
145 ReferrerPolicyDefault},
146 {"http://example.test/cat.js", "script", "", "", ReferrerPolicyDefault,
147 ResourceLoadPriorityHigh, WebURLRequest::RequestContextScript, true, true,
148 ReferrerPolicyDefault},
149 {"http://example.test/cat.css", "style", "", "", ReferrerPolicyDefault,
150 ResourceLoadPriorityVeryHigh, WebURLRequest::RequestContextStyle, true,
151 true, ReferrerPolicyDefault},
152 // TODO(yoav): It doesn't seem like the audio context is ever used. That
153 // should probably be fixed (or we can consolidate audio and video).
154 {"http://example.test/cat.wav", "audio", "", "", ReferrerPolicyDefault,
155 ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true,
156 ReferrerPolicyDefault},
157 {"http://example.test/cat.mp4", "video", "", "", ReferrerPolicyDefault,
158 ResourceLoadPriorityLow, WebURLRequest::RequestContextVideo, true, true,
159 ReferrerPolicyDefault},
160 {"http://example.test/cat.vtt", "track", "", "", ReferrerPolicyDefault,
161 ResourceLoadPriorityLow, WebURLRequest::RequestContextTrack, true, true,
162 ReferrerPolicyDefault},
163 {"http://example.test/cat.woff", "font", "", "", ReferrerPolicyDefault,
164 ResourceLoadPriorityHigh, WebURLRequest::RequestContextFont, true, true,
165 ReferrerPolicyDefault},
166 // TODO(yoav): subresource should be *very* low priority (rather than
167 // low).
168 {"http://example.test/cat.empty", "", "", "", ReferrerPolicyDefault,
169 ResourceLoadPriorityHigh, WebURLRequest::RequestContextSubresource, true,
170 true, ReferrerPolicyDefault},
171 {"http://example.test/cat.blob", "blabla", "", "", ReferrerPolicyDefault,
172 ResourceLoadPriorityLow, WebURLRequest::RequestContextSubresource, false,
173 false, ReferrerPolicyDefault},
174 {"bla://example.test/cat.gif", "image", "", "", ReferrerPolicyDefault,
175 ResourceLoadPriorityUnresolved, WebURLRequest::RequestContextImage, false,
176 false, ReferrerPolicyDefault},
177 // MIME type tests
178 {"http://example.test/cat.webp", "image", "image/webp", "",
179 ReferrerPolicyDefault, ResourceLoadPriorityLow,
180 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
181 {"http://example.test/cat.svg", "image", "image/svg+xml", "",
182 ReferrerPolicyDefault, ResourceLoadPriorityLow,
183 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
184 {"http://example.test/cat.jxr", "image", "image/jxr", "",
185 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
186 WebURLRequest::RequestContextImage, false, false, ReferrerPolicyDefault},
187 {"http://example.test/cat.js", "script", "text/javascript", "",
188 ReferrerPolicyDefault, ResourceLoadPriorityHigh,
189 WebURLRequest::RequestContextScript, true, true, ReferrerPolicyDefault},
190 {"http://example.test/cat.js", "script", "text/coffeescript", "",
191 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
192 WebURLRequest::RequestContextScript, false, false, ReferrerPolicyDefault},
193 {"http://example.test/cat.css", "style", "text/css", "",
194 ReferrerPolicyDefault, ResourceLoadPriorityVeryHigh,
195 WebURLRequest::RequestContextStyle, true, true, ReferrerPolicyDefault},
196 {"http://example.test/cat.css", "style", "text/sass", "",
197 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
198 WebURLRequest::RequestContextStyle, false, false, ReferrerPolicyDefault},
199 {"http://example.test/cat.wav", "audio", "audio/wav", "",
200 ReferrerPolicyDefault, ResourceLoadPriorityLow,
201 WebURLRequest::RequestContextVideo, true, true, ReferrerPolicyDefault},
202 {"http://example.test/cat.wav", "audio", "audio/mp57", "",
203 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
204 WebURLRequest::RequestContextVideo, false, false, ReferrerPolicyDefault},
205 {"http://example.test/cat.webm", "video", "video/webm", "",
206 ReferrerPolicyDefault, ResourceLoadPriorityLow,
207 WebURLRequest::RequestContextVideo, true, true, ReferrerPolicyDefault},
208 {"http://example.test/cat.mp199", "video", "video/mp199", "",
209 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
210 WebURLRequest::RequestContextVideo, false, false, ReferrerPolicyDefault},
211 {"http://example.test/cat.vtt", "track", "text/vtt", "",
212 ReferrerPolicyDefault, ResourceLoadPriorityLow,
213 WebURLRequest::RequestContextTrack, true, true, ReferrerPolicyDefault},
214 {"http://example.test/cat.vtt", "track", "text/subtitlething", "",
215 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
216 WebURLRequest::RequestContextTrack, false, false, ReferrerPolicyDefault},
217 {"http://example.test/cat.woff", "font", "font/woff2", "",
218 ReferrerPolicyDefault, ResourceLoadPriorityHigh,
219 WebURLRequest::RequestContextFont, true, true, ReferrerPolicyDefault},
220 {"http://example.test/cat.woff", "font", "font/woff84", "",
221 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
222 WebURLRequest::RequestContextFont, false, false, ReferrerPolicyDefault},
223 {"http://example.test/cat.empty", "", "foo/bar", "", ReferrerPolicyDefault,
224 ResourceLoadPriorityHigh, WebURLRequest::RequestContextSubresource, true,
225 true, ReferrerPolicyDefault},
226 {"http://example.test/cat.blob", "blabla", "foo/bar", "",
227 ReferrerPolicyDefault, ResourceLoadPriorityLow,
228 WebURLRequest::RequestContextSubresource, false, false,
229 ReferrerPolicyDefault},
230 // Media tests
231 {"http://example.test/cat.gif", "image", "image/gif", "(max-width: 600px)",
232 ReferrerPolicyDefault, ResourceLoadPriorityLow,
233 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyDefault},
234 {"http://example.test/cat.gif", "image", "image/gif", "(max-width: 400px)",
235 ReferrerPolicyDefault, ResourceLoadPriorityUnresolved,
236 WebURLRequest::RequestContextImage, true, false, ReferrerPolicyDefault},
237 {"http://example.test/cat.gif", "image", "image/gif", "(max-width: 600px)",
238 ReferrerPolicyDefault, ResourceLoadPriorityLow,
239 WebURLRequest::RequestContextImage, false, false, ReferrerPolicyDefault},
240 // Referrer Policy
241 {"http://example.test/cat.gif", "image", "image/gif", "",
242 ReferrerPolicyOrigin, ResourceLoadPriorityLow,
243 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyOrigin},
244 {"http://example.test/cat.gif", "image", "image/gif", "",
245 ReferrerPolicyOriginWhenCrossOrigin, ResourceLoadPriorityLow,
246 WebURLRequest::RequestContextImage, true, true,
247 ReferrerPolicyOriginWhenCrossOrigin},
248 {"http://example.test/cat.gif", "image", "image/gif", "",
249 ReferrerPolicyNever, ResourceLoadPriorityLow,
250 WebURLRequest::RequestContextImage, true, true, ReferrerPolicyNever}};
251
252 INSTANTIATE_TEST_CASE_P(LinkLoaderPreloadTest,
253 LinkLoaderPreloadTest,
254 ::testing::ValuesIn(kPreloadTestParams));
255
260 TEST(LinkLoaderTest, Prefetch) { 256 TEST(LinkLoaderTest, Prefetch) {
261 struct TestCase { 257 struct TestCase {
262 const char* href; 258 const char* href;
263 // TODO(yoav): Add support for type and media crbug.com/662687 259 // TODO(yoav): Add support for type and media crbug.com/662687
264 const char* type; 260 const char* type;
265 const char* media; 261 const char* media;
266 const ReferrerPolicy referrerPolicy; 262 const ReferrerPolicy referrerPolicy;
267 const bool linkLoaderShouldLoadValue; 263 const bool linkLoaderShouldLoadValue;
268 const bool expectingLoad; 264 const bool expectingLoad;
269 const ReferrerPolicy expectedReferrerPolicy; 265 const ReferrerPolicy expectedReferrerPolicy;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 NetworkHintsMock networkHints; 366 NetworkHintsMock networkHints;
371 loader->loadLink(LinkRelAttribute("preconnect"), testCase.crossOrigin, 367 loader->loadLink(LinkRelAttribute("preconnect"), testCase.crossOrigin,
372 String(), String(), String(), ReferrerPolicyDefault, 368 String(), String(), String(), ReferrerPolicyDefault,
373 hrefURL, dummyPageHolder->document(), networkHints); 369 hrefURL, dummyPageHolder->document(), networkHints);
374 EXPECT_EQ(testCase.shouldLoad, networkHints.didPreconnect()); 370 EXPECT_EQ(testCase.shouldLoad, networkHints.didPreconnect());
375 EXPECT_EQ(testCase.isHTTPS, networkHints.isHTTPS()); 371 EXPECT_EQ(testCase.isHTTPS, networkHints.isHTTPS());
376 EXPECT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin()); 372 EXPECT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin());
377 } 373 }
378 } 374 }
379 375
376 } // namespace
377
380 } // namespace blink 378 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698