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 "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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |