Chromium Code Reviews| 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 |