OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 dnsPrefetchIfNeeded(relAttribute, url, *document, networkHintsInterf
ace, LinkCalledFromHeader); | 225 dnsPrefetchIfNeeded(relAttribute, url, *document, networkHintsInterf
ace, LinkCalledFromHeader); |
226 | 226 |
227 if (RuntimeEnabledFeatures::linkPreconnectEnabled()) | 227 if (RuntimeEnabledFeatures::linkPreconnectEnabled()) |
228 preconnectIfNeeded(relAttribute, url, *document, header.crossOrigin(
), networkHintsInterface, LinkCalledFromHeader); | 228 preconnectIfNeeded(relAttribute, url, *document, header.crossOrigin(
), networkHintsInterface, LinkCalledFromHeader); |
229 | 229 |
230 // FIXME: Add more supported headers as needed. | 230 // FIXME: Add more supported headers as needed. |
231 } | 231 } |
232 return true; | 232 return true; |
233 } | 233 } |
234 | 234 |
235 bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, const AtomicStri
ng& crossOriginMode, const String& type, const String& as, const KURL& href, Doc
ument& document, const NetworkHintsInterface& networkHintsInterface) | 235 bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, CrossOriginAttri
buteValue crossOrigin, const String& type, const String& as, const KURL& href, D
ocument& document, const NetworkHintsInterface& networkHintsInterface) |
236 { | 236 { |
237 // TODO(yoav): Do all links need to load only after they're in document??? | 237 // TODO(yoav): Do all links need to load only after they're in document??? |
238 | 238 |
239 // TODO(yoav): Convert all uses of the CrossOriginAttribute to CrossOriginAt
tributeValue. crbug.com/486689 | 239 // TODO(yoav): Convert all uses of the CrossOriginAttribute to CrossOriginAt
tributeValue. crbug.com/486689 |
240 // FIXME(crbug.com/463266): We're ignoring type here. Maybe we shouldn't. | 240 // FIXME(crbug.com/463266): We're ignoring type here. Maybe we shouldn't. |
241 dnsPrefetchIfNeeded(relAttribute, href, document, networkHintsInterface, Lin
kCalledFromMarkup); | 241 dnsPrefetchIfNeeded(relAttribute, href, document, networkHintsInterface, Lin
kCalledFromMarkup); |
242 | 242 |
243 preconnectIfNeeded(relAttribute, href, document, crossOriginAttributeValue(c
rossOriginMode), networkHintsInterface, LinkCalledFromMarkup); | 243 preconnectIfNeeded(relAttribute, href, document, crossOrigin, networkHintsIn
terface, LinkCalledFromMarkup); |
244 | 244 |
245 if (m_client->shouldLoadLink()) | 245 if (m_client->shouldLoadLink()) |
246 preloadIfNeeded(relAttribute, href, document, as); | 246 preloadIfNeeded(relAttribute, href, document, as); |
247 | 247 |
248 // FIXME(crbug.com/323096): Should take care of import. | 248 // FIXME(crbug.com/323096): Should take care of import. |
249 if ((relAttribute.isLinkPrefetch() || relAttribute.isLinkSubresource()) && h
ref.isValid() && document.frame()) { | 249 if ((relAttribute.isLinkPrefetch() || relAttribute.isLinkSubresource()) && h
ref.isValid() && document.frame()) { |
250 if (!m_client->shouldLoadLink()) | 250 if (!m_client->shouldLoadLink()) |
251 return false; | 251 return false; |
252 Resource::Type type = Resource::LinkPrefetch; | 252 Resource::Type type = Resource::LinkPrefetch; |
253 if (relAttribute.isLinkSubresource()) { | 253 if (relAttribute.isLinkSubresource()) { |
254 type = Resource::LinkSubresource; | 254 type = Resource::LinkSubresource; |
255 UseCounter::count(document, UseCounter::LinkRelSubresource); | 255 UseCounter::count(document, UseCounter::LinkRelSubresource); |
256 } else { | 256 } else { |
257 UseCounter::count(document, UseCounter::LinkRelPrefetch); | 257 UseCounter::count(document, UseCounter::LinkRelPrefetch); |
258 } | 258 } |
259 | 259 |
260 FetchRequest linkRequest(ResourceRequest(document.completeURL(href)), Fe
tchInitiatorTypeNames::link); | 260 FetchRequest linkRequest(ResourceRequest(document.completeURL(href)), Fe
tchInitiatorTypeNames::link); |
261 if (!crossOriginMode.isNull()) | 261 if (crossOrigin != CrossOriginAttributeNotSet) |
262 linkRequest.setCrossOriginAccessControl(document.securityOrigin(), c
rossOriginMode); | 262 linkRequest.setCrossOriginAccessControl(document.securityOrigin(), c
rossOrigin); |
263 setResource(LinkFetchResource::fetch(type, linkRequest, document.fetcher
())); | 263 setResource(LinkFetchResource::fetch(type, linkRequest, document.fetcher
())); |
264 } | 264 } |
265 | 265 |
266 if (const unsigned prerenderRelTypes = prerenderRelTypesFromRelAttribute(rel
Attribute, document)) { | 266 if (const unsigned prerenderRelTypes = prerenderRelTypesFromRelAttribute(rel
Attribute, document)) { |
267 if (!m_prerender) { | 267 if (!m_prerender) { |
268 m_prerender = PrerenderHandle::create(document, this, href, prerende
rRelTypes); | 268 m_prerender = PrerenderHandle::create(document, this, href, prerende
rRelTypes); |
269 } else if (m_prerender->url() != href) { | 269 } else if (m_prerender->url() != href) { |
270 m_prerender->cancel(); | 270 m_prerender->cancel(); |
271 m_prerender = PrerenderHandle::create(document, this, href, prerende
rRelTypes); | 271 m_prerender = PrerenderHandle::create(document, this, href, prerende
rRelTypes); |
272 } | 272 } |
(...skipping 14 matching lines...) Expand all Loading... |
287 m_prerender.clear(); | 287 m_prerender.clear(); |
288 } | 288 } |
289 } | 289 } |
290 | 290 |
291 DEFINE_TRACE(LinkLoader) | 291 DEFINE_TRACE(LinkLoader) |
292 { | 292 { |
293 visitor->trace(m_prerender); | 293 visitor->trace(m_prerender); |
294 } | 294 } |
295 | 295 |
296 } | 296 } |
OLD | NEW |