Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(97)

Side by Side Diff: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp

Issue 2327643003: Replace ASSERT*() with DCHECK*() in core/fetch/ and core/loader/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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 DCHECK_EQ(timer, &m_resourceTimingReportTimer);
525 Vector<std::unique_ptr<ResourceTimingInfo>> timingReports; 525 Vector<std::unique_ptr<ResourceTimingInfo>> timingReports;
526 timingReports.swap(m_scheduledResourceTimingReports); 526 timingReports.swap(m_scheduledResourceTimingReports);
527 for (const auto& timingInfo : timingReports) 527 for (const auto& timingInfo : timingReports)
528 context().addResourceTiming(*timingInfo); 528 context().addResourceTiming(*timingInfo);
529 } 529 }
530 530
531 void ResourceFetcher::determineRequestContext(ResourceRequest& request, Resource ::Type type, bool isMainFrame) 531 void ResourceFetcher::determineRequestContext(ResourceRequest& request, Resource ::Type type, bool isMainFrame)
532 { 532 {
533 WebURLRequest::RequestContext requestContext = requestContextFromType(isMain Frame, type); 533 WebURLRequest::RequestContext requestContext = requestContextFromType(isMain Frame, type);
534 request.setRequestContext(requestContext); 534 request.setRequestContext(requestContext);
(...skipping 11 matching lines...) Expand all
546 if (request.requestContext() == WebURLRequest::RequestContextUnspecified) 546 if (request.requestContext() == WebURLRequest::RequestContextUnspecified)
547 determineRequestContext(request, type); 547 determineRequestContext(request, type);
548 if (type == Resource::LinkPrefetch) 548 if (type == Resource::LinkPrefetch)
549 request.setHTTPHeaderField(HTTPNames::Purpose, "prefetch"); 549 request.setHTTPHeaderField(HTTPNames::Purpose, "prefetch");
550 550
551 context().addAdditionalRequestHeaders(request, (type == Resource::MainResour ce) ? FetchMainResource : FetchSubresource); 551 context().addAdditionalRequestHeaders(request, (type == Resource::MainResour ce) ? FetchMainResource : FetchSubresource);
552 } 552 }
553 553
554 void ResourceFetcher::initializeRevalidation(ResourceRequest& revalidatingReques t, Resource* resource) 554 void ResourceFetcher::initializeRevalidation(ResourceRequest& revalidatingReques t, Resource* resource)
555 { 555 {
556 ASSERT(resource); 556 DCHECK(resource);
557 ASSERT(memoryCache()->contains(resource)); 557 DCHECK(memoryCache()->contains(resource));
558 ASSERT(resource->isLoaded()); 558 DCHECK(resource->isLoaded());
559 ASSERT(resource->canUseCacheValidator()); 559 DCHECK(resource->canUseCacheValidator());
560 ASSERT(!resource->isCacheValidator()); 560 DCHECK(!resource->isCacheValidator());
561 ASSERT(!context().isControlledByServiceWorker()); 561 DCHECK(!context().isControlledByServiceWorker());
562 562
563 const AtomicString& lastModified = resource->response().httpHeaderField(HTTP Names::Last_Modified); 563 const AtomicString& lastModified = resource->response().httpHeaderField(HTTP Names::Last_Modified);
564 const AtomicString& eTag = resource->response().httpHeaderField(HTTPNames::E Tag); 564 const AtomicString& eTag = resource->response().httpHeaderField(HTTPNames::E Tag);
565 if (!lastModified.isEmpty() || !eTag.isEmpty()) { 565 if (!lastModified.isEmpty() || !eTag.isEmpty()) {
566 ASSERT(context().getCachePolicy() != CachePolicyReload); 566 DCHECK_NE(context().getCachePolicy(), CachePolicyReload);
567 if (context().getCachePolicy() == CachePolicyRevalidate) 567 if (context().getCachePolicy() == CachePolicyRevalidate)
568 revalidatingRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "ma x-age=0"); 568 revalidatingRequest.setHTTPHeaderField(HTTPNames::Cache_Control, "ma x-age=0");
569 } 569 }
570 if (!lastModified.isEmpty()) 570 if (!lastModified.isEmpty())
571 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_Modified_Since, las tModified); 571 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_Modified_Since, las tModified);
572 if (!eTag.isEmpty()) 572 if (!eTag.isEmpty())
573 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_None_Match, eTag); 573 revalidatingRequest.setHTTPHeaderField(HTTPNames::If_None_Match, eTag);
574 574
575 double stalenessLifetime = resource->stalenessLifetime(); 575 double stalenessLifetime = resource->stalenessLifetime();
576 if (std::isfinite(stalenessLifetime) && stalenessLifetime > 0) { 576 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()))); 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 } 578 }
579 579
580 resource->setRevalidatingRequest(revalidatingRequest); 580 resource->setRevalidatingRequest(revalidatingRequest);
581 } 581 }
582 582
583 Resource* ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory) 583 Resource* ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory)
584 { 584 {
585 const String cacheIdentifier = getCacheIdentifier(); 585 const String cacheIdentifier = getCacheIdentifier();
586 ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url(), cache Identifier)); 586 DCHECK(!memoryCache()->resourceForURL(request.resourceRequest().url(), cache Identifier));
587 587
588 RESOURCE_LOADING_DVLOG(1) << "Loading Resource for " << request.resourceRequ est().url().elidedString(); 588 RESOURCE_LOADING_DVLOG(1) << "Loading Resource for " << request.resourceRequ est().url().elidedString();
589 589
590 Resource* resource = factory.create(request.resourceRequest(), request.optio ns(), charset); 590 Resource* resource = factory.create(request.resourceRequest(), request.optio ns(), charset);
591 resource->setLinkPreload(request.isLinkPreload()); 591 resource->setLinkPreload(request.isLinkPreload());
592 if (request.forPreload()) { 592 if (request.forPreload()) {
593 resource->setPreloadDiscoveryTime(request.preloadDiscoveryTime()); 593 resource->setPreloadDiscoveryTime(request.preloadDiscoveryTime());
594 } 594 }
595 resource->setCacheIdentifier(cacheIdentifier); 595 resource->setCacheIdentifier(cacheIdentifier);
596 596
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 } 1016 }
1017 1017
1018 void ResourceFetcher::moveResourceLoaderToNonBlocking(ResourceLoader* loader) 1018 void ResourceFetcher::moveResourceLoaderToNonBlocking(ResourceLoader* loader)
1019 { 1019 {
1020 m_nonBlockingLoaders.add(loader); 1020 m_nonBlockingLoaders.add(loader);
1021 m_loaders.remove(loader); 1021 m_loaders.remove(loader);
1022 } 1022 }
1023 1023
1024 bool ResourceFetcher::startLoad(Resource* resource) 1024 bool ResourceFetcher::startLoad(Resource* resource)
1025 { 1025 {
1026 DCHECK(resource && resource->stillNeedsLoad()); 1026 DCHECK(resource);
1027 DCHECK(resource->stillNeedsLoad());
1027 if (!context().shouldLoadNewResource(resource->getType())) { 1028 if (!context().shouldLoadNewResource(resource->getType())) {
1028 memoryCache()->remove(resource); 1029 memoryCache()->remove(resource);
1029 return false; 1030 return false;
1030 } 1031 }
1031 1032
1032 ResourceRequest request(resource->resourceRequest()); 1033 ResourceRequest request(resource->resourceRequest());
1033 willSendRequest(resource->identifier(), request, ResourceResponse(), resourc e->options()); 1034 willSendRequest(resource->identifier(), request, ResourceResponse(), resourc e->options());
1034 1035
1035 ResourceLoader* loader = ResourceLoader::create(this, resource); 1036 ResourceLoader* loader = ResourceLoader::create(this, resource);
1036 if (resource->shouldBlockLoadEvent()) 1037 if (resource->shouldBlockLoadEvent())
1037 m_loaders.add(loader); 1038 m_loaders.add(loader);
1038 else 1039 else
1039 m_nonBlockingLoaders.add(loader); 1040 m_nonBlockingLoaders.add(loader);
1040 1041
1041 storeResourceTimingInitiatorInformation(resource); 1042 storeResourceTimingInitiatorInformation(resource);
1042 resource->setFetcherSecurityOrigin(context().getSecurityOrigin()); 1043 resource->setFetcherSecurityOrigin(context().getSecurityOrigin());
1043 loader->start(request, context().loadingTaskRunner(), context().defersLoadin g()); 1044 loader->start(request, context().loadingTaskRunner(), context().defersLoadin g());
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
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/fetch/Resource.cpp ('k') | third_party/WebKit/Source/core/fetch/ResourceLoader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698