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 |