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

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

Issue 2203613003: Split header modification out of willSendRequest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Filter the header instead Created 4 years, 4 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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698