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 "config.h" | 5 #include "config.h" |
6 #include "core/loader/LinkLoader.h" | 6 #include "core/loader/LinkLoader.h" |
7 | 7 |
8 #include "core/fetch/ResourceFetcher.h" | 8 #include "core/fetch/ResourceFetcher.h" |
9 #include "core/frame/Settings.h" | 9 #include "core/frame/Settings.h" |
10 #include "core/html/LinkRelAttribute.h" | 10 #include "core/html/LinkRelAttribute.h" |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 }; | 99 }; |
100 | 100 |
101 // Test the cases with a single header | 101 // Test the cases with a single header |
102 for (const auto& testCase : cases) { | 102 for (const auto& testCase : cases) { |
103 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); | 103 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); |
104 dummyPageHolder->frame().settings()->setScriptEnabled(true); | 104 dummyPageHolder->frame().settings()->setScriptEnabled(true); |
105 MockLinkLoaderClient loaderClient(testCase.shouldLoad); | 105 MockLinkLoaderClient loaderClient(testCase.shouldLoad); |
106 LinkLoader loader(&loaderClient); | 106 LinkLoader loader(&loaderClient); |
107 KURL hrefURL = KURL(KURL(), testCase.href); | 107 KURL hrefURL = KURL(KURL(), testCase.href); |
108 loader.loadLink(LinkRelAttribute("preload"), | 108 loader.loadLink(LinkRelAttribute("preload"), |
109 AtomicString(), | 109 CrossOriginAttributeNotSet, |
110 String(), | 110 String(), |
111 testCase.as, | 111 testCase.as, |
112 hrefURL, | 112 hrefURL, |
113 dummyPageHolder->document(), | 113 dummyPageHolder->document(), |
114 NetworkHintsMock()); | 114 NetworkHintsMock()); |
115 ASSERT(dummyPageHolder->document().fetcher()); | 115 ASSERT(dummyPageHolder->document().fetcher()); |
116 WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>* preloads = dummyPag
eHolder->document().fetcher()->preloads(); | 116 WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>* preloads = dummyPag
eHolder->document().fetcher()->preloads(); |
117 if (testCase.shouldLoad) | 117 if (testCase.shouldLoad) |
118 ASSERT_NE(nullptr, preloads); | 118 ASSERT_NE(nullptr, preloads); |
119 if (preloads) { | 119 if (preloads) { |
(...skipping 27 matching lines...) Expand all Loading... |
147 | 147 |
148 // Test the cases with a single header | 148 // Test the cases with a single header |
149 for (const auto& testCase : cases) { | 149 for (const auto& testCase : cases) { |
150 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); | 150 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); |
151 dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true); | 151 dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true); |
152 MockLinkLoaderClient loaderClient(testCase.shouldLoad); | 152 MockLinkLoaderClient loaderClient(testCase.shouldLoad); |
153 LinkLoader loader(&loaderClient); | 153 LinkLoader loader(&loaderClient); |
154 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); | 154 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); |
155 NetworkHintsMock networkHints; | 155 NetworkHintsMock networkHints; |
156 loader.loadLink(LinkRelAttribute("dns-prefetch"), | 156 loader.loadLink(LinkRelAttribute("dns-prefetch"), |
157 AtomicString(), | 157 CrossOriginAttributeNotSet, |
158 String(), | 158 String(), |
159 String(), | 159 String(), |
160 hrefURL, | 160 hrefURL, |
161 dummyPageHolder->document(), | 161 dummyPageHolder->document(), |
162 networkHints); | 162 networkHints); |
163 ASSERT_FALSE(networkHints.didPreconnect()); | 163 ASSERT_FALSE(networkHints.didPreconnect()); |
164 ASSERT_EQ(testCase.shouldLoad, networkHints.didDnsPrefetch()); | 164 ASSERT_EQ(testCase.shouldLoad, networkHints.didDnsPrefetch()); |
165 } | 165 } |
166 } | 166 } |
167 | 167 |
168 TEST(LinkLoaderTest, Preconnect) | 168 TEST(LinkLoaderTest, Preconnect) |
169 { | 169 { |
170 struct { | 170 struct { |
171 const char* href; | 171 const char* href; |
172 const char* crossOrigin; | 172 CrossOriginAttributeValue crossOrigin; |
173 const bool shouldLoad; | 173 const bool shouldLoad; |
174 const bool isHTTPS; | 174 const bool isHTTPS; |
175 const bool isCrossOrigin; | 175 const bool isCrossOrigin; |
176 } cases[] = { | 176 } cases[] = { |
177 {"http://example.com/", nullptr, true, false, false}, | 177 {"http://example.com/", CrossOriginAttributeNotSet, true, false, false}, |
178 {"https://example.com/", nullptr, true, true, false}, | 178 {"https://example.com/", CrossOriginAttributeNotSet, true, true, false}, |
179 {"http://example.com/", "anonymous", true, false, true}, | 179 {"http://example.com/", CrossOriginAttributeAnonymous, true, false, true
}, |
180 {"//example.com/", nullptr, true, false, false}, | 180 {"//example.com/", CrossOriginAttributeNotSet, true, false, false}, |
181 }; | 181 }; |
182 | 182 |
183 // Test the cases with a single header | 183 // Test the cases with a single header |
184 for (const auto& testCase : cases) { | 184 for (const auto& testCase : cases) { |
185 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); | 185 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); |
186 MockLinkLoaderClient loaderClient(testCase.shouldLoad); | 186 MockLinkLoaderClient loaderClient(testCase.shouldLoad); |
187 LinkLoader loader(&loaderClient); | 187 LinkLoader loader(&loaderClient); |
188 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); | 188 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); |
189 NetworkHintsMock networkHints; | 189 NetworkHintsMock networkHints; |
190 loader.loadLink(LinkRelAttribute("preconnect"), | 190 loader.loadLink(LinkRelAttribute("preconnect"), |
191 testCase.crossOrigin, | 191 testCase.crossOrigin, |
192 String(), | 192 String(), |
193 String(), | 193 String(), |
194 hrefURL, | 194 hrefURL, |
195 dummyPageHolder->document(), | 195 dummyPageHolder->document(), |
196 networkHints); | 196 networkHints); |
197 ASSERT_EQ(testCase.shouldLoad, networkHints.didPreconnect()); | 197 ASSERT_EQ(testCase.shouldLoad, networkHints.didPreconnect()); |
198 ASSERT_EQ(testCase.isHTTPS, networkHints.isHTTPS()); | 198 ASSERT_EQ(testCase.isHTTPS, networkHints.isHTTPS()); |
199 ASSERT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin()); | 199 ASSERT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin()); |
200 } | 200 } |
201 } | 201 } |
202 | 202 |
203 } // namespace blink | 203 } // namespace blink |
OLD | NEW |