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

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

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

Powered by Google App Engine
This is Rietveld 408576698