Chromium Code Reviews| 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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 425 return nullptr; | 425 return nullptr; |
| 426 | 426 |
| 427 if (!context().canRequest(factory.type(), request.resourceRequest(), MemoryC ache::removeFragmentIdentifierIfNeeded(request.url()), request.options(), reques t.forPreload(), request.getOriginRestriction())) | 427 if (!context().canRequest(factory.type(), request.resourceRequest(), MemoryC ache::removeFragmentIdentifierIfNeeded(request.url()), request.options(), reques t.forPreload(), request.getOriginRestriction())) |
| 428 return nullptr; | 428 return nullptr; |
| 429 | 429 |
| 430 unsigned long identifier = createUniqueIdentifier(); | 430 unsigned long identifier = createUniqueIdentifier(); |
| 431 request.setPriority(loadPriority(factory.type(), request, ResourcePriority:: NotVisible)); | 431 request.setPriority(loadPriority(factory.type(), request, ResourcePriority:: NotVisible)); |
| 432 request.mutableResourceRequest().setPriority(request.priority()); | 432 request.mutableResourceRequest().setPriority(request.priority()); |
| 433 initializeResourceRequest(request.mutableResourceRequest(), factory.type(), request.defer()); | 433 initializeResourceRequest(request.mutableResourceRequest(), factory.type(), request.defer()); |
| 434 context().willStartLoadingResource(identifier, request.mutableResourceReques t(), factory.type()); | 434 context().willStartLoadingResource(identifier, request.mutableResourceReques t(), factory.type()); |
| 435 prepareRequest(identifier, request.mutableResourceRequest(), ResourceRespons e(), request.options()); | |
| 435 if (!request.url().isValid()) | 436 if (!request.url().isValid()) |
| 436 return nullptr; | 437 return nullptr; |
| 437 | 438 |
| 438 if (!request.forPreload()) { | 439 if (!request.forPreload()) { |
| 439 V8DOMActivityLogger* activityLogger = nullptr; | 440 V8DOMActivityLogger* activityLogger = nullptr; |
| 440 if (request.options().initiatorInfo.name == FetchInitiatorTypeNames::xml httprequest) | 441 if (request.options().initiatorInfo.name == FetchInitiatorTypeNames::xml httprequest) |
| 441 activityLogger = V8DOMActivityLogger::currentActivityLogger(); | 442 activityLogger = V8DOMActivityLogger::currentActivityLogger(); |
| 442 else | 443 else |
| 443 activityLogger = V8DOMActivityLogger::currentActivityLoggerIfIsolate dWorld(); | 444 activityLogger = V8DOMActivityLogger::currentActivityLoggerIfIsolate dWorld(); |
| 444 | 445 |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 462 resource = memoryCache()->resourceForURL(request.url(), getCacheIdentifi er()); | 463 resource = memoryCache()->resourceForURL(request.url(), getCacheIdentifi er()); |
| 463 | 464 |
| 464 // See if we can use an existing resource from the cache. If so, we need to move it to be load blocking. | 465 // See if we can use an existing resource from the cache. If so, we need to move it to be load blocking. |
| 465 moveCachedNonBlockingResourceToBlocking(resource, request); | 466 moveCachedNonBlockingResourceToBlocking(resource, request); |
| 466 | 467 |
| 467 const RevalidationPolicy policy = determineRevalidationPolicy(factory.type() , request, resource, isStaticData); | 468 const RevalidationPolicy policy = determineRevalidationPolicy(factory.type() , request, resource, isStaticData); |
| 468 TRACE_EVENT_INSTANT1("blink", "ResourceFetcher::determineRevalidationPolicy" , TRACE_EVENT_SCOPE_THREAD, "revalidationPolicy", policy); | 469 TRACE_EVENT_INSTANT1("blink", "ResourceFetcher::determineRevalidationPolicy" , TRACE_EVENT_SCOPE_THREAD, "revalidationPolicy", policy); |
| 469 | 470 |
| 470 updateMemoryCacheStats(resource, policy, request, factory, isStaticData); | 471 updateMemoryCacheStats(resource, policy, request, factory, isStaticData); |
| 471 | 472 |
| 472 request.mutableResourceRequest().setAllowStoredCredentials(request.options() .allowCredentials == AllowStoredCredentials); | |
| 473 | |
| 474 switch (policy) { | 473 switch (policy) { |
| 475 case Reload: | 474 case Reload: |
| 476 memoryCache()->remove(resource); | 475 memoryCache()->remove(resource); |
| 477 // Fall through | 476 // Fall through |
| 478 case Load: | 477 case Load: |
| 479 resource = createResourceForLoading(request, request.charset(), factory) ; | 478 resource = createResourceForLoading(request, request.charset(), factory) ; |
| 480 break; | 479 break; |
| 481 case Revalidate: | 480 case Revalidate: |
| 482 initializeRevalidation(request.mutableResourceRequest(), resource); | 481 initializeRevalidation(request.mutableResourceRequest(), resource); |
| 483 break; | 482 break; |
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1010 } | 1009 } |
| 1011 | 1010 |
| 1012 bool ResourceFetcher::startLoad(Resource* resource) | 1011 bool ResourceFetcher::startLoad(Resource* resource) |
| 1013 { | 1012 { |
| 1014 DCHECK(resource && resource->stillNeedsLoad()); | 1013 DCHECK(resource && resource->stillNeedsLoad()); |
| 1015 if (!context().shouldLoadNewResource(resource->getType())) { | 1014 if (!context().shouldLoadNewResource(resource->getType())) { |
| 1016 memoryCache()->remove(resource); | 1015 memoryCache()->remove(resource); |
| 1017 return false; | 1016 return false; |
| 1018 } | 1017 } |
| 1019 | 1018 |
| 1020 ResourceRequest request(resource->resourceRequest()); | |
| 1021 willSendRequest(resource->identifier(), request, ResourceResponse(), resourc e->options()); | |
| 1022 | |
| 1023 ResourceLoader* loader = ResourceLoader::create(this, resource); | 1019 ResourceLoader* loader = ResourceLoader::create(this, resource); |
| 1024 if (resource->shouldBlockLoadEvent()) | 1020 if (resource->shouldBlockLoadEvent()) |
| 1025 m_loaders.add(loader); | 1021 m_loaders.add(loader); |
| 1026 else | 1022 else |
| 1027 m_nonBlockingLoaders.add(loader); | 1023 m_nonBlockingLoaders.add(loader); |
| 1028 | 1024 |
| 1025 context().dispatchWillSendRequest(resource->identifier(), resource->resource Request(), ResourceResponse(), resource->options().initiatorInfo); | |
| 1029 storeResourceTimingInitiatorInformation(resource); | 1026 storeResourceTimingInitiatorInformation(resource); |
| 1030 resource->setFetcherSecurityOrigin(context().getSecurityOrigin()); | 1027 resource->setFetcherSecurityOrigin(context().getSecurityOrigin()); |
| 1031 loader->start(request, context().loadingTaskRunner(), context().defersLoadin g()); | 1028 loader->start(resource->resourceRequest(), context().loadingTaskRunner(), co ntext().defersLoading()); |
|
Shao-Chuan Lee
2016/10/06 03:34:41
Maybe we can now remove the first param in Resourc
| |
| 1032 return true; | 1029 return true; |
| 1033 } | 1030 } |
| 1034 | 1031 |
| 1035 void ResourceFetcher::removeResourceLoader(ResourceLoader* loader) | 1032 void ResourceFetcher::removeResourceLoader(ResourceLoader* loader) |
| 1036 { | 1033 { |
| 1037 if (m_loaders.contains(loader)) | 1034 if (m_loaders.contains(loader)) |
| 1038 m_loaders.remove(loader); | 1035 m_loaders.remove(loader); |
| 1039 else if (m_nonBlockingLoaders.contains(loader)) | 1036 else if (m_nonBlockingLoaders.contains(loader)) |
| 1040 m_nonBlockingLoaders.remove(loader); | 1037 m_nonBlockingLoaders.remove(loader); |
| 1041 else | 1038 else |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1091 return false; | 1088 return false; |
| 1092 } | 1089 } |
| 1093 | 1090 |
| 1094 ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource); | 1091 ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource); |
| 1095 if (it != m_resourceTimingInfoMap.end()) { | 1092 if (it != m_resourceTimingInfoMap.end()) { |
| 1096 RefPtr<SecurityOrigin> originalSecurityOrigin = SecurityOrigin::create(r edirectResponse.url()); | 1093 RefPtr<SecurityOrigin> originalSecurityOrigin = SecurityOrigin::create(r edirectResponse.url()); |
| 1097 RefPtr<SecurityOrigin> redirectedSecurityOrigin = SecurityOrigin::create (newRequest.url()); | 1094 RefPtr<SecurityOrigin> redirectedSecurityOrigin = SecurityOrigin::create (newRequest.url()); |
| 1098 bool crossOrigin = !redirectedSecurityOrigin->isSameSchemeHostPort(origi nalSecurityOrigin.get()); | 1095 bool crossOrigin = !redirectedSecurityOrigin->isSameSchemeHostPort(origi nalSecurityOrigin.get()); |
| 1099 it->value->addRedirect(redirectResponse, encodedDataLength, crossOrigin) ; | 1096 it->value->addRedirect(redirectResponse, encodedDataLength, crossOrigin) ; |
| 1100 } | 1097 } |
| 1101 newRequest.setAllowStoredCredentials(resource->options().allowCredentials == AllowStoredCredentials); | 1098 prepareRequest(resource->identifier(), newRequest, redirectResponse, resourc e->options()); |
| 1102 willSendRequest(resource->identifier(), newRequest, redirectResponse, resour ce->options()); | 1099 context().dispatchWillSendRequest(resource->identifier(), newRequest, redire ctResponse, resource->options().initiatorInfo); |
| 1103 return true; | 1100 return true; |
| 1104 } | 1101 } |
| 1105 | 1102 |
| 1106 void ResourceFetcher::willSendRequest(unsigned long identifier, ResourceRequest& newRequest, const ResourceResponse& redirectResponse, const ResourceLoaderOptio ns& options) | 1103 void ResourceFetcher::prepareRequest(unsigned long identifier, ResourceRequest& newRequest, const ResourceResponse& redirectResponse, const ResourceLoaderOption s& options) |
| 1107 { | 1104 { |
| 1108 context().dispatchWillSendRequest(identifier, newRequest, redirectResponse, options.initiatorInfo); | 1105 newRequest.setAllowStoredCredentials(options.allowCredentials == AllowStored Credentials); |
| 1106 context().prepareRequest(identifier, newRequest, redirectResponse); | |
| 1109 } | 1107 } |
| 1110 | 1108 |
| 1111 void ResourceFetcher::updateAllImageResourcePriorities() | 1109 void ResourceFetcher::updateAllImageResourcePriorities() |
| 1112 { | 1110 { |
| 1113 TRACE_EVENT0("blink", "ResourceLoadPriorityOptimizer::updateAllImageResource Priorities"); | 1111 TRACE_EVENT0("blink", "ResourceLoadPriorityOptimizer::updateAllImageResource Priorities"); |
| 1114 for (const auto& documentResource : m_documentResources) { | 1112 for (const auto& documentResource : m_documentResources) { |
| 1115 Resource* resource = documentResource.value.get(); | 1113 Resource* resource = documentResource.value.get(); |
| 1116 if (!resource || !resource->isImage() || !resource->isLoading()) | 1114 if (!resource || !resource->isImage() || !resource->isLoading()) |
| 1117 continue; | 1115 continue; |
| 1118 | 1116 |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1301 visitor->trace(m_context); | 1299 visitor->trace(m_context); |
| 1302 visitor->trace(m_archive); | 1300 visitor->trace(m_archive); |
| 1303 visitor->trace(m_loaders); | 1301 visitor->trace(m_loaders); |
| 1304 visitor->trace(m_nonBlockingLoaders); | 1302 visitor->trace(m_nonBlockingLoaders); |
| 1305 visitor->trace(m_documentResources); | 1303 visitor->trace(m_documentResources); |
| 1306 visitor->trace(m_preloads); | 1304 visitor->trace(m_preloads); |
| 1307 visitor->trace(m_resourceTimingInfoMap); | 1305 visitor->trace(m_resourceTimingInfoMap); |
| 1308 } | 1306 } |
| 1309 | 1307 |
| 1310 } // namespace blink | 1308 } // namespace blink |
| OLD | NEW |