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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 const LinkRelAttribute& relAttribute, | 128 const LinkRelAttribute& relAttribute, |
129 const KURL& href, | 129 const KURL& href, |
130 Document& document, | 130 Document& document, |
131 const NetworkHintsInterface& networkHintsInterface, | 131 const NetworkHintsInterface& networkHintsInterface, |
132 LinkCaller caller) { | 132 LinkCaller caller) { |
133 if (relAttribute.isDNSPrefetch()) { | 133 if (relAttribute.isDNSPrefetch()) { |
134 UseCounter::count(document, UseCounter::LinkRelDnsPrefetch); | 134 UseCounter::count(document, UseCounter::LinkRelDnsPrefetch); |
135 if (caller == LinkCalledFromHeader) | 135 if (caller == LinkCalledFromHeader) |
136 UseCounter::count(document, UseCounter::LinkHeaderDnsPrefetch); | 136 UseCounter::count(document, UseCounter::LinkHeaderDnsPrefetch); |
137 Settings* settings = document.settings(); | 137 Settings* settings = document.settings(); |
138 // FIXME: The href attribute of the link element can be in "//hostname" form
, and we shouldn't attempt | 138 // FIXME: The href attribute of the link element can be in "//hostname" |
139 // to complete that as URL <https://bugs.webkit.org/show_bug.cgi?id=48857>. | 139 // form, and we shouldn't attempt to complete that as URL |
| 140 // <https://bugs.webkit.org/show_bug.cgi?id=48857>. |
140 if (settings && settings->dnsPrefetchingEnabled() && href.isValid() && | 141 if (settings && settings->dnsPrefetchingEnabled() && href.isValid() && |
141 !href.isEmpty()) { | 142 !href.isEmpty()) { |
142 if (settings->logDnsPrefetchAndPreconnect()) | 143 if (settings->logDnsPrefetchAndPreconnect()) |
143 document.addConsoleMessage(ConsoleMessage::create( | 144 document.addConsoleMessage(ConsoleMessage::create( |
144 OtherMessageSource, DebugMessageLevel, | 145 OtherMessageSource, DebugMessageLevel, |
145 String("DNS prefetch triggered for " + href.host()))); | 146 String("DNS prefetch triggered for " + href.host()))); |
146 networkHintsInterface.dnsPrefetchHost(href.host()); | 147 networkHintsInterface.dnsPrefetchHost(href.host()); |
147 } | 148 } |
148 } | 149 } |
149 } | 150 } |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, | 381 bool LinkLoader::loadLink(const LinkRelAttribute& relAttribute, |
381 CrossOriginAttributeValue crossOrigin, | 382 CrossOriginAttributeValue crossOrigin, |
382 const String& type, | 383 const String& type, |
383 const String& as, | 384 const String& as, |
384 const String& media, | 385 const String& media, |
385 const KURL& href, | 386 const KURL& href, |
386 Document& document, | 387 Document& document, |
387 const NetworkHintsInterface& networkHintsInterface) { | 388 const NetworkHintsInterface& networkHintsInterface) { |
388 // TODO(yoav): Do all links need to load only after they're in document??? | 389 // TODO(yoav): Do all links need to load only after they're in document??? |
389 | 390 |
390 // TODO(yoav): Convert all uses of the CrossOriginAttribute to CrossOriginAttr
ibuteValue. crbug.com/486689 | 391 // TODO(yoav): Convert all uses of the CrossOriginAttribute to |
391 // FIXME(crbug.com/463266): We're ignoring type here, for everything but prelo
ad. Maybe we shouldn't. | 392 // CrossOriginAttributeValue. crbug.com/486689 |
| 393 |
| 394 // FIXME(crbug.com/463266): We're ignoring type here, for everything but |
| 395 // preload. Maybe we shouldn't. |
392 dnsPrefetchIfNeeded(relAttribute, href, document, networkHintsInterface, | 396 dnsPrefetchIfNeeded(relAttribute, href, document, networkHintsInterface, |
393 LinkCalledFromMarkup); | 397 LinkCalledFromMarkup); |
394 | 398 |
395 preconnectIfNeeded(relAttribute, href, document, crossOrigin, | 399 preconnectIfNeeded(relAttribute, href, document, crossOrigin, |
396 networkHintsInterface, LinkCalledFromMarkup); | 400 networkHintsInterface, LinkCalledFromMarkup); |
397 | 401 |
398 bool errorOccurred = false; | 402 bool errorOccurred = false; |
399 if (m_client->shouldLoadLink()) | 403 if (m_client->shouldLoadLink()) |
400 createLinkPreloadResourceClient(preloadIfNeeded( | 404 createLinkPreloadResourceClient(preloadIfNeeded( |
401 relAttribute, href, document, as, type, media, crossOrigin, | 405 relAttribute, href, document, as, type, media, crossOrigin, |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 } | 437 } |
434 // TODO(gavinp): Handle changes to rel types of existing prerenders. | 438 // TODO(gavinp): Handle changes to rel types of existing prerenders. |
435 } else if (m_prerender) { | 439 } else if (m_prerender) { |
436 m_prerender->cancel(); | 440 m_prerender->cancel(); |
437 m_prerender.clear(); | 441 m_prerender.clear(); |
438 } | 442 } |
439 return true; | 443 return true; |
440 } | 444 } |
441 | 445 |
442 void LinkLoader::released() { | 446 void LinkLoader::released() { |
443 // Only prerenders need treatment here; other links either use the Resource in
terface, or are notionally | 447 // Only prerenders need treatment here; other links either use the Resource |
444 // atomic (dns prefetch). | 448 // interface, or are notionally atomic (dns prefetch). |
445 if (m_prerender) { | 449 if (m_prerender) { |
446 m_prerender->cancel(); | 450 m_prerender->cancel(); |
447 m_prerender.clear(); | 451 m_prerender.clear(); |
448 } | 452 } |
449 if (m_linkPreloadResourceClient) | 453 if (m_linkPreloadResourceClient) |
450 m_linkPreloadResourceClient->clear(); | 454 m_linkPreloadResourceClient->clear(); |
451 } | 455 } |
452 | 456 |
453 DEFINE_TRACE(LinkLoader) { | 457 DEFINE_TRACE(LinkLoader) { |
454 visitor->trace(m_client); | 458 visitor->trace(m_client); |
455 visitor->trace(m_prerender); | 459 visitor->trace(m_prerender); |
456 visitor->trace(m_linkPreloadResourceClient); | 460 visitor->trace(m_linkPreloadResourceClient); |
457 ResourceOwner<Resource, ResourceClient>::trace(visitor); | 461 ResourceOwner<Resource, ResourceClient>::trace(visitor); |
458 PrerenderClient::trace(visitor); | 462 PrerenderClient::trace(visitor); |
459 } | 463 } |
460 | 464 |
461 } // namespace blink | 465 } // namespace blink |
OLD | NEW |