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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 }; | 89 }; |
90 | 90 |
91 // Test the cases with a single header | 91 // Test the cases with a single header |
92 for (const auto& testCase : cases) { | 92 for (const auto& testCase : cases) { |
93 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); | 93 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); |
94 dummyPageHolder->frame().settings()->setScriptEnabled(true); | 94 dummyPageHolder->frame().settings()->setScriptEnabled(true); |
95 MockLinkLoaderClient loaderClient(testCase.shouldLoad); | 95 MockLinkLoaderClient loaderClient(testCase.shouldLoad); |
96 LinkLoader loader(&loaderClient); | 96 LinkLoader loader(&loaderClient); |
97 KURL hrefURL = KURL(KURL(), testCase.href); | 97 KURL hrefURL = KURL(KURL(), testCase.href); |
98 loader.loadLink(LinkRelAttribute("preload"), | 98 loader.loadLink(LinkRelAttribute("preload"), |
99 AtomicString(), | 99 CrossOriginAttributeNotSet, |
100 String(), | 100 String(), |
101 testCase.as, | 101 testCase.as, |
102 hrefURL, | 102 hrefURL, |
103 dummyPageHolder->document(), | 103 dummyPageHolder->document(), |
104 NetworkHintsMock()); | 104 NetworkHintsMock()); |
105 ASSERT(dummyPageHolder->document().fetcher()); | 105 ASSERT(dummyPageHolder->document().fetcher()); |
106 WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>* preloads = dummyPag
eHolder->document().fetcher()->preloads(); | 106 WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>* preloads = dummyPag
eHolder->document().fetcher()->preloads(); |
107 if (testCase.shouldLoad) | 107 if (testCase.shouldLoad) |
108 ASSERT_NE(nullptr, preloads); | 108 ASSERT_NE(nullptr, preloads); |
109 if (preloads) { | 109 if (preloads) { |
(...skipping 23 matching lines...) Expand all Loading... |
133 | 133 |
134 // Test the cases with a single header | 134 // Test the cases with a single header |
135 for (const auto& testCase : cases) { | 135 for (const auto& testCase : cases) { |
136 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); | 136 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); |
137 dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true); | 137 dummyPageHolder->document().settings()->setDNSPrefetchingEnabled(true); |
138 MockLinkLoaderClient loaderClient(testCase.shouldLoad); | 138 MockLinkLoaderClient loaderClient(testCase.shouldLoad); |
139 LinkLoader loader(&loaderClient); | 139 LinkLoader loader(&loaderClient); |
140 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); | 140 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); |
141 NetworkHintsMock networkHints; | 141 NetworkHintsMock networkHints; |
142 loader.loadLink(LinkRelAttribute("dns-prefetch"), | 142 loader.loadLink(LinkRelAttribute("dns-prefetch"), |
143 AtomicString(), | 143 CrossOriginAttributeNotSet, |
144 String(), | 144 String(), |
145 String(), | 145 String(), |
146 hrefURL, | 146 hrefURL, |
147 dummyPageHolder->document(), | 147 dummyPageHolder->document(), |
148 networkHints); | 148 networkHints); |
149 ASSERT_FALSE(networkHints.didPreconnect()); | 149 ASSERT_FALSE(networkHints.didPreconnect()); |
150 ASSERT_EQ(testCase.shouldLoad, networkHints.didDnsPrefetch()); | 150 ASSERT_EQ(testCase.shouldLoad, networkHints.didDnsPrefetch()); |
151 } | 151 } |
152 } | 152 } |
153 | 153 |
154 TEST(LinkLoaderTest, Preconnect) | 154 TEST(LinkLoaderTest, Preconnect) |
155 { | 155 { |
156 struct { | 156 struct { |
157 const char* href; | 157 const char* href; |
158 const char* crossOrigin; | 158 CrossOriginAttributeValue crossOrigin; |
159 const bool shouldLoad; | 159 const bool shouldLoad; |
160 const bool isHTTPS; | 160 const bool isHTTPS; |
161 const bool isCrossOrigin; | 161 const bool isCrossOrigin; |
162 } cases[] = { | 162 } cases[] = { |
163 {"http://example.com/", nullptr, true, false, false}, | 163 {"http://example.com/", CrossOriginAttributeNotSet, true, false, false}, |
164 {"https://example.com/", nullptr, true, true, false}, | 164 {"https://example.com/", CrossOriginAttributeNotSet, true, true, false}, |
165 {"http://example.com/", "anonymous", true, false, true}, | 165 {"http://example.com/", CrossOriginAttributeAnonymous, true, false, true
}, |
166 {"//example.com/", nullptr, true, false, false}, | 166 {"//example.com/", CrossOriginAttributeNotSet, true, false, false}, |
167 }; | 167 }; |
168 | 168 |
169 // Test the cases with a single header | 169 // Test the cases with a single header |
170 for (const auto& testCase : cases) { | 170 for (const auto& testCase : cases) { |
171 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); | 171 OwnPtr<DummyPageHolder> dummyPageHolder = DummyPageHolder::create(IntSiz
e(500, 500)); |
172 MockLinkLoaderClient loaderClient(testCase.shouldLoad); | 172 MockLinkLoaderClient loaderClient(testCase.shouldLoad); |
173 LinkLoader loader(&loaderClient); | 173 LinkLoader loader(&loaderClient); |
174 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); | 174 KURL hrefURL = KURL(KURL(ParsedURLStringTag(), String("http://example.co
m")), testCase.href); |
175 NetworkHintsMock networkHints; | 175 NetworkHintsMock networkHints; |
176 loader.loadLink(LinkRelAttribute("preconnect"), | 176 loader.loadLink(LinkRelAttribute("preconnect"), |
177 testCase.crossOrigin, | 177 testCase.crossOrigin, |
178 String(), | 178 String(), |
179 String(), | 179 String(), |
180 hrefURL, | 180 hrefURL, |
181 dummyPageHolder->document(), | 181 dummyPageHolder->document(), |
182 networkHints); | 182 networkHints); |
183 ASSERT_EQ(testCase.shouldLoad, networkHints.didPreconnect()); | 183 ASSERT_EQ(testCase.shouldLoad, networkHints.didPreconnect()); |
184 ASSERT_EQ(testCase.isHTTPS, networkHints.isHTTPS()); | 184 ASSERT_EQ(testCase.isHTTPS, networkHints.isHTTPS()); |
185 ASSERT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin()); | 185 ASSERT_EQ(testCase.isCrossOrigin, networkHints.isCrossOrigin()); |
186 } | 186 } |
187 } | 187 } |
188 | 188 |
189 } // namespace blink | 189 } // namespace blink |
OLD | NEW |