| OLD | NEW |
| 1 /* | 1 /* |
| 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
| 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
| 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
| 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. | 5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All
rights reserved. |
| 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ | 6 Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/ |
| 7 | 7 |
| 8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
| 9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
| 10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 resourceHistogram.count(policy);
\ | 74 resourceHistogram.count(policy);
\ |
| 75 break;
\ | 75 break;
\ |
| 76 } | 76 } |
| 77 | 77 |
| 78 #define DEFINE_RESOURCE_HISTOGRAM(prefix) \ | 78 #define DEFINE_RESOURCE_HISTOGRAM(prefix) \ |
| 79 switch (factory.type()) { \ | 79 switch (factory.type()) { \ |
| 80 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, CSSStyleSheet) \ | 80 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, CSSStyleSheet) \ |
| 81 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Font) \ | 81 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Font) \ |
| 82 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Image) \ | 82 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Image) \ |
| 83 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, ImportResource) \ | 83 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, ImportResource) \ |
| 84 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, LinkPrefetch) \ | |
| 85 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, LinkPreload) \ | 84 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, LinkPreload) \ |
| 86 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, MainResource) \ | 85 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, MainResource) \ |
| 87 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Manifest) \ | 86 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Manifest) \ |
| 88 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Media) \ | 87 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Media) \ |
| 89 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Raw) \ | 88 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Raw) \ |
| 90 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Script) \ | 89 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, Script) \ |
| 91 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, SVGDocument) \ | 90 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, SVGDocument) \ |
| 92 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, TextTrack) \ | 91 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, TextTrack) \ |
| 93 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, XSLStyleSheet) \ | 92 DEFINE_SINGLE_RESOURCE_HISTOGRAM(prefix, XSLStyleSheet) \ |
| 94 } | 93 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 119 case Resource::Manifest: | 118 case Resource::Manifest: |
| 120 // Also late-body scripts discovered by the preload scanner (set explici
tly in loadPriority) | 119 // Also late-body scripts discovered by the preload scanner (set explici
tly in loadPriority) |
| 121 return ResourceLoadPriorityMedium; | 120 return ResourceLoadPriorityMedium; |
| 122 case Resource::Image: | 121 case Resource::Image: |
| 123 case Resource::LinkPreload: | 122 case Resource::LinkPreload: |
| 124 case Resource::TextTrack: | 123 case Resource::TextTrack: |
| 125 case Resource::Media: | 124 case Resource::Media: |
| 126 case Resource::SVGDocument: | 125 case Resource::SVGDocument: |
| 127 // Also async scripts (set explicitly in loadPriority) | 126 // Also async scripts (set explicitly in loadPriority) |
| 128 return ResourceLoadPriorityLow; | 127 return ResourceLoadPriorityLow; |
| 129 case Resource::LinkPrefetch: | |
| 130 return ResourceLoadPriorityVeryLow; | |
| 131 } | 128 } |
| 132 | 129 |
| 133 ASSERT_NOT_REACHED(); | 130 ASSERT_NOT_REACHED(); |
| 134 return ResourceLoadPriorityUnresolved; | 131 return ResourceLoadPriorityUnresolved; |
| 135 } | 132 } |
| 136 | 133 |
| 137 ResourceLoadPriority ResourceFetcher::computeLoadPriority(Resource::Type type, c
onst FetchRequest& request, ResourcePriority::VisibilityStatus visibility) | 134 ResourceLoadPriority ResourceFetcher::computeLoadPriority(Resource::Type type, c
onst FetchRequest& request, ResourcePriority::VisibilityStatus visibility) |
| 138 { | 135 { |
| 139 ResourceLoadPriority priority = typeToPriority(type); | 136 ResourceLoadPriority priority = typeToPriority(type); |
| 137 if (request.isPrefetch()) |
| 138 priority = ResourceLoadPriorityVeryLow; |
| 140 | 139 |
| 141 // Visible resources (images in practice) get a boost to High priority. | 140 // Visible resources (images in practice) get a boost to High priority. |
| 142 if (visibility == ResourcePriority::Visible) | 141 if (visibility == ResourcePriority::Visible) |
| 143 priority = ResourceLoadPriorityHigh; | 142 priority = ResourceLoadPriorityHigh; |
| 144 | 143 |
| 145 // Resources before the first image are considered "early" in the document | 144 // Resources before the first image are considered "early" in the document |
| 146 // and resources after the first image are "late" in the document. Importan
t to | 145 // and resources after the first image are "late" in the document. Importan
t to |
| 147 // note that this is based on when the preload scanner discovers a resource | 146 // note that this is based on when the preload scanner discovers a resource |
| 148 // for the most part so the main parser may not have reached the image eleme
nt yet. | 147 // for the most part so the main parser may not have reached the image eleme
nt yet. |
| 149 if (type == Resource::Image) | 148 if (type == Resource::Image) |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 case Resource::Script: | 190 case Resource::Script: |
| 192 return WebURLRequest::RequestContextScript; | 191 return WebURLRequest::RequestContextScript; |
| 193 case Resource::Font: | 192 case Resource::Font: |
| 194 return WebURLRequest::RequestContextFont; | 193 return WebURLRequest::RequestContextFont; |
| 195 case Resource::Image: | 194 case Resource::Image: |
| 196 return WebURLRequest::RequestContextImage; | 195 return WebURLRequest::RequestContextImage; |
| 197 case Resource::Raw: | 196 case Resource::Raw: |
| 198 return WebURLRequest::RequestContextSubresource; | 197 return WebURLRequest::RequestContextSubresource; |
| 199 case Resource::ImportResource: | 198 case Resource::ImportResource: |
| 200 return WebURLRequest::RequestContextImport; | 199 return WebURLRequest::RequestContextImport; |
| 201 case Resource::LinkPrefetch: | |
| 202 return WebURLRequest::RequestContextPrefetch; | |
| 203 case Resource::LinkPreload: | 200 case Resource::LinkPreload: |
| 204 return WebURLRequest::RequestContextSubresource; | 201 return WebURLRequest::RequestContextSubresource; |
| 205 case Resource::TextTrack: | 202 case Resource::TextTrack: |
| 206 return WebURLRequest::RequestContextTrack; | 203 return WebURLRequest::RequestContextTrack; |
| 207 case Resource::SVGDocument: | 204 case Resource::SVGDocument: |
| 208 return WebURLRequest::RequestContextImage; | 205 return WebURLRequest::RequestContextImage; |
| 209 case Resource::Media: // TODO: Split this. | 206 case Resource::Media: // TODO: Split this. |
| 210 return WebURLRequest::RequestContextVideo; | 207 return WebURLRequest::RequestContextVideo; |
| 211 case Resource::Manifest: | 208 case Resource::Manifest: |
| 212 return WebURLRequest::RequestContextManifest; | 209 return WebURLRequest::RequestContextManifest; |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 421 TRACE_EVENT1("blink", "ResourceFetcher::requestResource", "url", urlForTrace
Event(request.url())); | 418 TRACE_EVENT1("blink", "ResourceFetcher::requestResource", "url", urlForTrace
Event(request.url())); |
| 422 | 419 |
| 423 if (!request.url().isValid()) | 420 if (!request.url().isValid()) |
| 424 return nullptr; | 421 return nullptr; |
| 425 | 422 |
| 426 if (!context().canRequest(factory.type(), request.resourceRequest(), MemoryC
ache::removeFragmentIdentifierIfNeeded(request.url()), request.options(), reques
t.forPreload(), request.getOriginRestriction())) | 423 if (!context().canRequest(factory.type(), request.resourceRequest(), MemoryC
ache::removeFragmentIdentifierIfNeeded(request.url()), request.options(), reques
t.forPreload(), request.getOriginRestriction())) |
| 427 return nullptr; | 424 return nullptr; |
| 428 | 425 |
| 429 unsigned long identifier = createUniqueIdentifier(); | 426 unsigned long identifier = createUniqueIdentifier(); |
| 430 request.mutableResourceRequest().setPriority(computeLoadPriority(factory.typ
e(), request, ResourcePriority::NotVisible)); | 427 request.mutableResourceRequest().setPriority(computeLoadPriority(factory.typ
e(), request, ResourcePriority::NotVisible)); |
| 428 if (request.isPrefetch()) { |
| 429 request.mutableResourceRequest().setHTTPHeaderField(HTTPNames::Purpose,
"prefetch"); |
| 430 request.mutableResourceRequest().setRequestContext(WebURLRequest::Reques
tContextPrefetch); |
| 431 } |
| 431 initializeResourceRequest(request.mutableResourceRequest(), factory.type(),
request.defer()); | 432 initializeResourceRequest(request.mutableResourceRequest(), factory.type(),
request.defer()); |
| 432 context().willStartLoadingResource(identifier, request.mutableResourceReques
t(), factory.type()); | 433 context().willStartLoadingResource(identifier, request.mutableResourceReques
t(), factory.type()); |
| 433 if (!request.url().isValid()) | 434 if (!request.url().isValid()) |
| 434 return nullptr; | 435 return nullptr; |
| 435 | 436 |
| 436 if (!request.forPreload()) { | 437 if (!request.forPreload()) { |
| 437 V8DOMActivityLogger* activityLogger = nullptr; | 438 V8DOMActivityLogger* activityLogger = nullptr; |
| 438 if (request.options().initiatorInfo.name == FetchInitiatorTypeNames::xml
httprequest) | 439 if (request.options().initiatorInfo.name == FetchInitiatorTypeNames::xml
httprequest) |
| 439 activityLogger = V8DOMActivityLogger::currentActivityLogger(); | 440 activityLogger = V8DOMActivityLogger::currentActivityLogger(); |
| 440 else | 441 else |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 { | 545 { |
| 545 determineRequestContext(request, type, context().isMainFrame()); | 546 determineRequestContext(request, type, context().isMainFrame()); |
| 546 } | 547 } |
| 547 | 548 |
| 548 void ResourceFetcher::initializeResourceRequest(ResourceRequest& request, Resour
ce::Type type, FetchRequest::DeferOption defer) | 549 void ResourceFetcher::initializeResourceRequest(ResourceRequest& request, Resour
ce::Type type, FetchRequest::DeferOption defer) |
| 549 { | 550 { |
| 550 if (request.getCachePolicy() == WebCachePolicy::UseProtocolCachePolicy) | 551 if (request.getCachePolicy() == WebCachePolicy::UseProtocolCachePolicy) |
| 551 request.setCachePolicy(context().resourceRequestCachePolicy(request, typ
e, defer)); | 552 request.setCachePolicy(context().resourceRequestCachePolicy(request, typ
e, defer)); |
| 552 if (request.requestContext() == WebURLRequest::RequestContextUnspecified) | 553 if (request.requestContext() == WebURLRequest::RequestContextUnspecified) |
| 553 determineRequestContext(request, type); | 554 determineRequestContext(request, type); |
| 554 if (type == Resource::LinkPrefetch) | |
| 555 request.setHTTPHeaderField(HTTPNames::Purpose, "prefetch"); | |
| 556 | 555 |
| 557 context().addAdditionalRequestHeaders(request, (type == Resource::MainResour
ce) ? FetchMainResource : FetchSubresource); | 556 context().addAdditionalRequestHeaders(request, (type == Resource::MainResour
ce) ? FetchMainResource : FetchSubresource); |
| 558 } | 557 } |
| 559 | 558 |
| 560 void ResourceFetcher::initializeRevalidation(ResourceRequest& revalidatingReques
t, Resource* resource) | 559 void ResourceFetcher::initializeRevalidation(ResourceRequest& revalidatingReques
t, Resource* resource) |
| 561 { | 560 { |
| 562 ASSERT(resource); | 561 ASSERT(resource); |
| 563 ASSERT(memoryCache()->contains(resource)); | 562 ASSERT(memoryCache()->contains(resource)); |
| 564 ASSERT(resource->isLoaded()); | 563 ASSERT(resource->isLoaded()); |
| 565 ASSERT(resource->canUseCacheValidator()); | 564 ASSERT(resource->canUseCacheValidator()); |
| (...skipping 753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1319 visitor->trace(m_context); | 1318 visitor->trace(m_context); |
| 1320 visitor->trace(m_archive); | 1319 visitor->trace(m_archive); |
| 1321 visitor->trace(m_loaders); | 1320 visitor->trace(m_loaders); |
| 1322 visitor->trace(m_nonBlockingLoaders); | 1321 visitor->trace(m_nonBlockingLoaders); |
| 1323 visitor->trace(m_documentResources); | 1322 visitor->trace(m_documentResources); |
| 1324 visitor->trace(m_preloads); | 1323 visitor->trace(m_preloads); |
| 1325 visitor->trace(m_resourceTimingInfoMap); | 1324 visitor->trace(m_resourceTimingInfoMap); |
| 1326 } | 1325 } |
| 1327 | 1326 |
| 1328 } // namespace blink | 1327 } // namespace blink |
| OLD | NEW |