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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
101 | 101 |
102 static ResourceLoadPriority typeToPriority(Resource::Type type) | 102 static ResourceLoadPriority typeToPriority(Resource::Type type) |
103 { | 103 { |
104 switch (type) { | 104 switch (type) { |
105 case Resource::MainResource: | 105 case Resource::MainResource: |
106 case Resource::CSSStyleSheet: | 106 case Resource::CSSStyleSheet: |
107 case Resource::Font: | 107 case Resource::Font: |
108 // Also parser-blocking scripts (set explicitly in loadPriority) | 108 // Also parser-blocking scripts (set explicitly in loadPriority) |
109 return ResourceLoadPriorityVeryHigh; | 109 return ResourceLoadPriorityVeryHigh; |
110 case Resource::XSLStyleSheet: | 110 case Resource::XSLStyleSheet: |
111 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 111 DCHECK(RuntimeEnabledFeatures::xsltEnabled()); |
112 case Resource::Raw: | 112 case Resource::Raw: |
113 case Resource::ImportResource: | 113 case Resource::ImportResource: |
114 case Resource::Script: | 114 case Resource::Script: |
115 // Also visible resources/images (set explicitly in loadPriority) | 115 // Also visible resources/images (set explicitly in loadPriority) |
116 return ResourceLoadPriorityHigh; | 116 return ResourceLoadPriorityHigh; |
117 case Resource::Manifest: | 117 case Resource::Manifest: |
118 // Also late-body scripts discovered by the preload scanner (set explici tly in loadPriority) | 118 // Also late-body scripts discovered by the preload scanner (set explici tly in loadPriority) |
119 return ResourceLoadPriorityMedium; | 119 return ResourceLoadPriorityMedium; |
120 case Resource::Image: | 120 case Resource::Image: |
121 case Resource::TextTrack: | 121 case Resource::TextTrack: |
122 case Resource::Media: | 122 case Resource::Media: |
123 case Resource::SVGDocument: | 123 case Resource::SVGDocument: |
124 // Also async scripts (set explicitly in loadPriority) | 124 // Also async scripts (set explicitly in loadPriority) |
125 return ResourceLoadPriorityLow; | 125 return ResourceLoadPriorityLow; |
126 case Resource::LinkPrefetch: | 126 case Resource::LinkPrefetch: |
127 return ResourceLoadPriorityVeryLow; | 127 return ResourceLoadPriorityVeryLow; |
128 } | 128 } |
129 | 129 |
130 ASSERT_NOT_REACHED(); | 130 NOTREACHED(); |
131 return ResourceLoadPriorityUnresolved; | 131 return ResourceLoadPriorityUnresolved; |
132 } | 132 } |
133 | 133 |
134 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) |
135 { | 135 { |
136 ResourceLoadPriority priority = typeToPriority(type); | 136 ResourceLoadPriority priority = typeToPriority(type); |
137 | 137 |
138 // Visible resources (images in practice) get a boost to High priority. | 138 // Visible resources (images in practice) get a boost to High priority. |
139 if (visibility == ResourcePriority::Visible) | 139 if (visibility == ResourcePriority::Visible) |
140 priority = ResourceLoadPriorityHigh; | 140 priority = ResourceLoadPriorityHigh; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
174 | 174 |
175 static WebURLRequest::RequestContext requestContextFromType(bool isMainFrame, Re source::Type type) | 175 static WebURLRequest::RequestContext requestContextFromType(bool isMainFrame, Re source::Type type) |
176 { | 176 { |
177 switch (type) { | 177 switch (type) { |
178 case Resource::MainResource: | 178 case Resource::MainResource: |
179 if (!isMainFrame) | 179 if (!isMainFrame) |
180 return WebURLRequest::RequestContextIframe; | 180 return WebURLRequest::RequestContextIframe; |
181 // FIXME: Change this to a context frame type (once we introduce them): http://fetch.spec.whatwg.org/#concept-request-context-frame-type | 181 // FIXME: Change this to a context frame type (once we introduce them): http://fetch.spec.whatwg.org/#concept-request-context-frame-type |
182 return WebURLRequest::RequestContextHyperlink; | 182 return WebURLRequest::RequestContextHyperlink; |
183 case Resource::XSLStyleSheet: | 183 case Resource::XSLStyleSheet: |
184 ASSERT(RuntimeEnabledFeatures::xsltEnabled()); | 184 DCHECK(RuntimeEnabledFeatures::xsltEnabled()); |
185 case Resource::CSSStyleSheet: | 185 case Resource::CSSStyleSheet: |
186 return WebURLRequest::RequestContextStyle; | 186 return WebURLRequest::RequestContextStyle; |
187 case Resource::Script: | 187 case Resource::Script: |
188 return WebURLRequest::RequestContextScript; | 188 return WebURLRequest::RequestContextScript; |
189 case Resource::Font: | 189 case Resource::Font: |
190 return WebURLRequest::RequestContextFont; | 190 return WebURLRequest::RequestContextFont; |
191 case Resource::Image: | 191 case Resource::Image: |
192 return WebURLRequest::RequestContextImage; | 192 return WebURLRequest::RequestContextImage; |
193 case Resource::Raw: | 193 case Resource::Raw: |
194 return WebURLRequest::RequestContextSubresource; | 194 return WebURLRequest::RequestContextSubresource; |
195 case Resource::ImportResource: | 195 case Resource::ImportResource: |
196 return WebURLRequest::RequestContextImport; | 196 return WebURLRequest::RequestContextImport; |
197 case Resource::LinkPrefetch: | 197 case Resource::LinkPrefetch: |
198 return WebURLRequest::RequestContextPrefetch; | 198 return WebURLRequest::RequestContextPrefetch; |
199 case Resource::TextTrack: | 199 case Resource::TextTrack: |
200 return WebURLRequest::RequestContextTrack; | 200 return WebURLRequest::RequestContextTrack; |
201 case Resource::SVGDocument: | 201 case Resource::SVGDocument: |
202 return WebURLRequest::RequestContextImage; | 202 return WebURLRequest::RequestContextImage; |
203 case Resource::Media: // TODO: Split this. | 203 case Resource::Media: // TODO: Split this. |
204 return WebURLRequest::RequestContextVideo; | 204 return WebURLRequest::RequestContextVideo; |
205 case Resource::Manifest: | 205 case Resource::Manifest: |
206 return WebURLRequest::RequestContextManifest; | 206 return WebURLRequest::RequestContextManifest; |
207 } | 207 } |
208 ASSERT_NOT_REACHED(); | 208 NOTREACHED(); |
209 return WebURLRequest::RequestContextSubresource; | 209 return WebURLRequest::RequestContextSubresource; |
210 } | 210 } |
211 | 211 |
212 ResourceFetcher::ResourceFetcher(FetchContext* newContext) | 212 ResourceFetcher::ResourceFetcher(FetchContext* newContext) |
213 : m_context(newContext) | 213 : m_context(newContext) |
214 , m_archive(context().isMainFrame() ? nullptr : context().archive()) | 214 , m_archive(context().isMainFrame() ? nullptr : context().archive()) |
215 , m_resourceTimingReportTimer(this, &ResourceFetcher::resourceTimingReportTi merFired) | 215 , m_resourceTimingReportTimer(this, &ResourceFetcher::resourceTimingReportTi merFired) |
216 , m_autoLoadImages(true) | 216 , m_autoLoadImages(true) |
217 , m_imagesEnabled(true) | 217 , m_imagesEnabled(true) |
218 , m_allowStaleResources(false) | 218 , m_allowStaleResources(false) |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
307 static std::unique_ptr<TracedValue> urlForTraceEvent(const KURL& url) | 307 static std::unique_ptr<TracedValue> urlForTraceEvent(const KURL& url) |
308 { | 308 { |
309 std::unique_ptr<TracedValue> value = TracedValue::create(); | 309 std::unique_ptr<TracedValue> value = TracedValue::create(); |
310 value->setString("url", url.getString()); | 310 value->setString("url", url.getString()); |
311 return value; | 311 return value; |
312 } | 312 } |
313 | 313 |
314 Resource* ResourceFetcher::resourceForStaticData(const FetchRequest& request, co nst ResourceFactory& factory, const SubstituteData& substituteData) | 314 Resource* ResourceFetcher::resourceForStaticData(const FetchRequest& request, co nst ResourceFactory& factory, const SubstituteData& substituteData) |
315 { | 315 { |
316 const KURL& url = request.resourceRequest().url(); | 316 const KURL& url = request.resourceRequest().url(); |
317 ASSERT(url.protocolIsData() || substituteData.isValid() || m_archive); | 317 DCHECK(url.protocolIsData() || substituteData.isValid() || m_archive); |
318 | 318 |
319 // TODO(japhet): We only send main resource data: urls through WebURLLoader for the benefit of | 319 // TODO(japhet): We only send main resource data: urls through WebURLLoader for the benefit of |
320 // a service worker test (RenderViewImplTest.ServiceWorkerNetworkProviderSet up), which is at a | 320 // a service worker test (RenderViewImplTest.ServiceWorkerNetworkProviderSet up), which is at a |
321 // layer where it isn't easy to mock out a network load. It uses data: urls to emulate the | 321 // layer where it isn't easy to mock out a network load. It uses data: urls to emulate the |
322 // behavior it wants to test, which would otherwise be reserved for network loads. | 322 // behavior it wants to test, which would otherwise be reserved for network loads. |
323 if (!m_archive && !substituteData.isValid() && (factory.type() == Resource:: MainResource || factory.type() == Resource::Raw)) | 323 if (!m_archive && !substituteData.isValid() && (factory.type() == Resource:: MainResource || factory.type() == Resource::Raw)) |
324 return nullptr; | 324 return nullptr; |
325 | 325 |
326 const String cacheIdentifier = getCacheIdentifier(); | 326 const String cacheIdentifier = getCacheIdentifier(); |
327 if (Resource* oldResource = memoryCache()->resourceForURL(url, cacheIdentifi er)) { | 327 if (Resource* oldResource = memoryCache()->resourceForURL(url, cacheIdentifi er)) { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
397 // would be dead if MemoryCache holds weak references to Resource). | 397 // would be dead if MemoryCache holds weak references to Resource). |
398 // Currently we check references to Resource from ResourceClient and | 398 // Currently we check references to Resource from ResourceClient and |
399 // |m_preloads| only, because they are major sources of references. | 399 // |m_preloads| only, because they are major sources of references. |
400 if (resource && !resource->isAlive() && (!m_preloads || !m_preloads->contain s(resource))) { | 400 if (resource && !resource->isAlive() && (!m_preloads || !m_preloads->contain s(resource))) { |
401 DEFINE_RESOURCE_HISTOGRAM("Dead."); | 401 DEFINE_RESOURCE_HISTOGRAM("Dead."); |
402 } | 402 } |
403 } | 403 } |
404 | 404 |
405 Resource* ResourceFetcher::requestResource(FetchRequest& request, const Resource Factory& factory, const SubstituteData& substituteData) | 405 Resource* ResourceFetcher::requestResource(FetchRequest& request, const Resource Factory& factory, const SubstituteData& substituteData) |
406 { | 406 { |
407 ASSERT(request.options().synchronousPolicy == RequestAsynchronously || facto ry.type() == Resource::Raw || factory.type() == Resource::XSLStyleSheet); | 407 DCHECK(request.options().synchronousPolicy == RequestAsynchronously || facto ry.type() == Resource::Raw || factory.type() == Resource::XSLStyleSheet); |
408 | 408 |
409 context().populateRequestData(request.mutableResourceRequest()); | 409 context().populateRequestData(request.mutableResourceRequest()); |
410 if (request.resourceRequest().httpHeaderField("Upgrade-Insecure-Requests") ! = AtomicString("1")) | 410 if (request.resourceRequest().httpHeaderField("Upgrade-Insecure-Requests") ! = AtomicString("1")) |
411 context().upgradeInsecureRequest(request.mutableResourceRequest()); | 411 context().upgradeInsecureRequest(request.mutableResourceRequest()); |
412 context().addClientHintsIfNecessary(request); | 412 context().addClientHintsIfNecessary(request); |
413 context().addCSPHeaderIfNecessary(factory.type(), request); | 413 context().addCSPHeaderIfNecessary(factory.type(), request); |
414 | 414 |
415 TRACE_EVENT1("blink", "ResourceFetcher::requestResource", "url", urlForTrace Event(request.url())); | 415 TRACE_EVENT1("blink", "ResourceFetcher::requestResource", "url", urlForTrace Event(request.url())); |
416 | 416 |
417 if (!request.url().isValid()) | 417 if (!request.url().isValid()) |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
474 initializeRevalidation(request.mutableResourceRequest(), resource); | 474 initializeRevalidation(request.mutableResourceRequest(), resource); |
475 break; | 475 break; |
476 case Use: | 476 case Use: |
477 memoryCache()->updateForAccess(resource); | 477 memoryCache()->updateForAccess(resource); |
478 break; | 478 break; |
479 } | 479 } |
480 | 480 |
481 if (!resource) | 481 if (!resource) |
482 return nullptr; | 482 return nullptr; |
483 if (resource->getType() != factory.type()) { | 483 if (resource->getType() != factory.type()) { |
484 ASSERT(request.forPreload()); | 484 DCHECK(request.forPreload()); |
485 return nullptr; | 485 return nullptr; |
486 } | 486 } |
487 | 487 |
488 if (!resource->isAlive()) | 488 if (!resource->isAlive()) |
489 m_deadStatsRecorder.update(policy); | 489 m_deadStatsRecorder.update(policy); |
490 | 490 |
491 if (policy != Use) | 491 if (policy != Use) |
492 resource->setIdentifier(identifier); | 492 resource->setIdentifier(identifier); |
493 | 493 |
494 if (!request.forPreload() || policy != Use) { | 494 if (!request.forPreload() || policy != Use) { |
(...skipping 13 matching lines...) Expand all Loading... | |
508 | 508 |
509 // Returns with an existing resource if the resource does not need to start | 509 // Returns with an existing resource if the resource does not need to start |
510 // loading immediately. | 510 // loading immediately. |
511 // If revalidation policy was determined as |Revalidate|, the resource was | 511 // If revalidation policy was determined as |Revalidate|, the resource was |
512 // already initialized for the revalidation here, but won't start loading. | 512 // already initialized for the revalidation here, but won't start loading. |
513 if (!resourceNeedsLoad(resource, request, policy)) | 513 if (!resourceNeedsLoad(resource, request, policy)) |
514 return resource; | 514 return resource; |
515 | 515 |
516 if (!startLoad(resource)) | 516 if (!startLoad(resource)) |
517 return nullptr; | 517 return nullptr; |
518 ASSERT(!resource->errorOccurred() || request.options().synchronousPolicy == RequestSynchronously); | 518 DCHECK(!resource->errorOccurred() || request.options().synchronousPolicy == RequestSynchronously); |
519 return resource; | 519 return resource; |
520 } | 520 } |
521 | 521 |
522 void ResourceFetcher::resourceTimingReportTimerFired(TimerBase* timer) | 522 void ResourceFetcher::resourceTimingReportTimerFired(TimerBase* timer) |
523 { | 523 { |
524 ASSERT_UNUSED(timer, timer == &m_resourceTimingReportTimer); | 524 ALLOW_UNUSED_LOCAL(timer); |
yhirano
2016/09/12 04:33:12
ditto as Resource::cancelTimerFired
hiroshige
2016/09/13 08:43:19
Done.
| |
525 DCHECK(timer == &m_resourceTimingReportTimer); | |
yhirano
2016/09/12 04:33:12
DCHECK_EQ
hiroshige
2016/09/13 08:43:19
Done.
| |
525 Vector<std::unique_ptr<ResourceTimingInfo>> timingReports; | 526 Vector<std::unique_ptr<ResourceTimingInfo>> timingReports; |
526 timingReports.swap(m_scheduledResourceTimingReports); | 527 timingReports.swap(m_scheduledResourceTimingReports); |
527 for (const auto& timingInfo : timingReports) | 528 for (const auto& timingInfo : timingReports) |
528 context().addResourceTiming(*timingInfo); | 529 context().addResourceTiming(*timingInfo); |
529 } | 530 } |
530 | 531 |
531 void ResourceFetcher::determineRequestContext(ResourceRequest& request, Resource ::Type type, bool isMainFrame) | 532 void ResourceFetcher::determineRequestContext(ResourceRequest& request, Resource ::Type type, bool isMainFrame) |
532 { | 533 { |
533 WebURLRequest::RequestContext requestContext = requestContextFromType(isMain Frame, type); | 534 WebURLRequest::RequestContext requestContext = requestContextFromType(isMain Frame, type); |
534 request.setRequestContext(requestContext); | 535 request.setRequestContext(requestContext); |
(...skipping 11 matching lines...) Expand all Loading... | |
546 if (request.requestContext() == WebURLRequest::RequestContextUnspecified) | 547 if (request.requestContext() == WebURLRequest::RequestContextUnspecified) |
547 determineRequestContext(request, type); | 548 determineRequestContext(request, type); |
548 if (type == Resource::LinkPrefetch) | 549 if (type == Resource::LinkPrefetch) |
549 request.setHTTPHeaderField(HTTPNames::Purpose, "prefetch"); | 550 request.setHTTPHeaderField(HTTPNames::Purpose, "prefetch"); |
550 | 551 |
551 context().addAdditionalRequestHeaders(request, (type == Resource::MainResour ce) ? FetchMainResource : FetchSubresource); | 552 context().addAdditionalRequestHeaders(request, (type == Resource::MainResour ce) ? FetchMainResource : FetchSubresource); |
552 } | 553 } |
553 | 554 |
554 void ResourceFetcher::initializeRevalidation(ResourceRequest& revalidatingReques t, Resource* resource) | 555 void ResourceFetcher::initializeRevalidation(ResourceRequest& revalidatingReques t, Resource* resource) |
555 { | 556 { |
556 ASSERT(resource); | 557 DCHECK(resource); |
557 ASSERT(memoryCache()->contains(resource)); | 558 DCHECK(memoryCache()->contains(resource)); |
558 ASSERT(resource->isLoaded()); | 559 DCHECK(resource->isLoaded()); |
559 ASSERT(resource->canUseCacheValidator()); | 560 DCHECK(resource->canUseCacheValidator()); |
560 ASSERT(!resource->isCacheValidator()); | 561 DCHECK(!resource->isCacheValidator()); |
561 ASSERT(!context().isControlledByServiceWorker()); | 562 DCHECK(!context().isControlledByServiceWorker()); |
562 | 563 |
563 const AtomicString& lastModified = resource->response().httpHeaderField(HTTP Names::Last_Modified); | 564 const AtomicString& lastModified = resource->response().httpHeaderField(HTTP Names::Last_Modified); |
564 const AtomicString& eTag = resource->response().httpHeaderField(HTTPNames::E Tag); | 565 const AtomicString& eTag = resource->response().httpHeaderField(HTTPNames::E Tag); |
565 if (!lastModified.isEmpty() || !eTag.isEmpty()) { | 566 if (!lastModified.isEmpty() || !eTag.isEmpty()) { |
566 ASSERT(context().getCachePolicy() != CachePolicyReload); | 567 DCHECK(context().getCachePolicy() != CachePolicyReload); |
yhirano
2016/09/12 04:33:12
DCHECK_NE
hiroshige
2016/09/13 08:43:19
Done.
| |
567 if (context().getCachePolicy() == CachePolicyRevalidate) | 568 if (context().getCachePolicy() == CachePolicyRevalidate) |
568 revalidatingRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "ma x-age=0"); | 569 revalidatingRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "ma x-age=0"); |
569 } | 570 } |
570 if (!lastModified.isEmpty()) | 571 if (!lastModified.isEmpty()) |
571 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_Modified_Since, las tModified); | 572 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_Modified_Since, las tModified); |
572 if (!eTag.isEmpty()) | 573 if (!eTag.isEmpty()) |
573 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_None_Match, eTag); | 574 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_None_Match, eTag); |
574 | 575 |
575 double stalenessLifetime = resource->stalenessLifetime(); | 576 double stalenessLifetime = resource->stalenessLifetime(); |
576 if (std::isfinite(stalenessLifetime) && stalenessLifetime > 0) { | 577 if (std::isfinite(stalenessLifetime) && stalenessLifetime > 0) { |
577 revalidatingRequest.setHTTPHeaderField(HTTPNames::Resource_Freshness, At omicString(String::format("max-age=%.0lf,stale-while-revalidate=%.0lf,age=%.0lf" , resource->freshnessLifetime(), stalenessLifetime, resource->currentAge()))); | 578 revalidatingRequest.setHTTPHeaderField(HTTPNames::Resource_Freshness, At omicString(String::format("max-age=%.0lf,stale-while-revalidate=%.0lf,age=%.0lf" , resource->freshnessLifetime(), stalenessLifetime, resource->currentAge()))); |
578 } | 579 } |
579 | 580 |
580 resource->setRevalidatingRequest(revalidatingRequest); | 581 resource->setRevalidatingRequest(revalidatingRequest); |
581 } | 582 } |
582 | 583 |
583 Resource* ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory) | 584 Resource* ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory) |
584 { | 585 { |
585 const String cacheIdentifier = getCacheIdentifier(); | 586 const String cacheIdentifier = getCacheIdentifier(); |
586 ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url(), cache Identifier)); | 587 DCHECK(!memoryCache()->resourceForURL(request.resourceRequest().url(), cache Identifier)); |
587 | 588 |
588 RESOURCE_LOADING_DVLOG(1) << "Loading Resource for " << request.resourceRequ est().url().elidedString(); | 589 RESOURCE_LOADING_DVLOG(1) << "Loading Resource for " << request.resourceRequ est().url().elidedString(); |
589 | 590 |
590 Resource* resource = factory.create(request.resourceRequest(), request.optio ns(), charset); | 591 Resource* resource = factory.create(request.resourceRequest(), request.optio ns(), charset); |
591 resource->setLinkPreload(request.isLinkPreload()); | 592 resource->setLinkPreload(request.isLinkPreload()); |
592 if (request.forPreload()) { | 593 if (request.forPreload()) { |
593 resource->setPreloadDiscoveryTime(request.preloadDiscoveryTime()); | 594 resource->setPreloadDiscoveryTime(request.preloadDiscoveryTime()); |
594 } | 595 } |
595 resource->setCacheIdentifier(cacheIdentifier); | 596 resource->setCacheIdentifier(cacheIdentifier); |
596 | 597 |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1044 return true; | 1045 return true; |
1045 } | 1046 } |
1046 | 1047 |
1047 void ResourceFetcher::removeResourceLoader(ResourceLoader* loader) | 1048 void ResourceFetcher::removeResourceLoader(ResourceLoader* loader) |
1048 { | 1049 { |
1049 if (m_loaders.contains(loader)) | 1050 if (m_loaders.contains(loader)) |
1050 m_loaders.remove(loader); | 1051 m_loaders.remove(loader); |
1051 else if (m_nonBlockingLoaders.contains(loader)) | 1052 else if (m_nonBlockingLoaders.contains(loader)) |
1052 m_nonBlockingLoaders.remove(loader); | 1053 m_nonBlockingLoaders.remove(loader); |
1053 else | 1054 else |
1054 ASSERT_NOT_REACHED(); | 1055 NOTREACHED(); |
1055 } | 1056 } |
1056 | 1057 |
1057 void ResourceFetcher::stopFetching() | 1058 void ResourceFetcher::stopFetching() |
1058 { | 1059 { |
1059 HeapVector<Member<ResourceLoader>> loadersToCancel; | 1060 HeapVector<Member<ResourceLoader>> loadersToCancel; |
1060 for (const auto& loader : m_nonBlockingLoaders) | 1061 for (const auto& loader : m_nonBlockingLoaders) |
1061 loadersToCancel.append(loader); | 1062 loadersToCancel.append(loader); |
1062 for (const auto& loader : m_loaders) | 1063 for (const auto& loader : m_loaders) |
1063 loadersToCancel.append(loader); | 1064 loadersToCancel.append(loader); |
1064 | 1065 |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1209 break; | 1210 break; |
1210 case Resource::ImportResource: | 1211 case Resource::ImportResource: |
1211 imports++; | 1212 imports++; |
1212 importMisses += missCount; | 1213 importMisses += missCount; |
1213 break; | 1214 break; |
1214 case Resource::Raw: | 1215 case Resource::Raw: |
1215 raws++; | 1216 raws++; |
1216 rawMisses += missCount; | 1217 rawMisses += missCount; |
1217 break; | 1218 break; |
1218 default: | 1219 default: |
1219 ASSERT_NOT_REACHED(); | 1220 NOTREACHED(); |
1220 } | 1221 } |
1221 } | 1222 } |
1222 // TODO(csharrison): These can falsely attribute link rel="preload" requests | 1223 // TODO(csharrison): These can falsely attribute link rel="preload" requests |
1223 // as misses if they are referenced after parsing completes. Migrate this | 1224 // as misses if they are referenced after parsing completes. Migrate this |
1224 // logic to the memory cache / individual resources to prevent this. | 1225 // logic to the memory cache / individual resources to prevent this. |
1225 DEFINE_STATIC_LOCAL(CustomCountHistogram, imagePreloads, ("PreloadScanner.Co unts2.Image", 0, 100, 25)); | 1226 DEFINE_STATIC_LOCAL(CustomCountHistogram, imagePreloads, ("PreloadScanner.Co unts2.Image", 0, 100, 25)); |
1226 DEFINE_STATIC_LOCAL(CustomCountHistogram, imagePreloadMisses, ("PreloadScann er.Counts2.Miss.Image", 0, 100, 25)); | 1227 DEFINE_STATIC_LOCAL(CustomCountHistogram, imagePreloadMisses, ("PreloadScann er.Counts2.Miss.Image", 0, 100, 25)); |
1227 DEFINE_STATIC_LOCAL(CustomCountHistogram, scriptPreloads, ("PreloadScanner.C ounts2.Script", 0, 100, 25)); | 1228 DEFINE_STATIC_LOCAL(CustomCountHistogram, scriptPreloads, ("PreloadScanner.C ounts2.Script", 0, 100, 25)); |
1228 DEFINE_STATIC_LOCAL(CustomCountHistogram, scriptPreloadMisses, ("PreloadScan ner.Counts2.Miss.Script", 0, 100, 25)); | 1229 DEFINE_STATIC_LOCAL(CustomCountHistogram, scriptPreloadMisses, ("PreloadScan ner.Counts2.Miss.Script", 0, 100, 25)); |
1229 DEFINE_STATIC_LOCAL(CustomCountHistogram, stylesheetPreloads, ("PreloadScann er.Counts2.CSSStyleSheet", 0, 100, 25)); | 1230 DEFINE_STATIC_LOCAL(CustomCountHistogram, stylesheetPreloads, ("PreloadScann er.Counts2.CSSStyleSheet", 0, 100, 25)); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1323 visitor->trace(m_context); | 1324 visitor->trace(m_context); |
1324 visitor->trace(m_archive); | 1325 visitor->trace(m_archive); |
1325 visitor->trace(m_loaders); | 1326 visitor->trace(m_loaders); |
1326 visitor->trace(m_nonBlockingLoaders); | 1327 visitor->trace(m_nonBlockingLoaders); |
1327 visitor->trace(m_documentResources); | 1328 visitor->trace(m_documentResources); |
1328 visitor->trace(m_preloads); | 1329 visitor->trace(m_preloads); |
1329 visitor->trace(m_resourceTimingInfoMap); | 1330 visitor->trace(m_resourceTimingInfoMap); |
1330 } | 1331 } |
1331 | 1332 |
1332 } // namespace blink | 1333 } // namespace blink |
OLD | NEW |