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

Unified Diff: Source/core/fetch/ResourceFetcher.cpp

Issue 1269563003: Revert of Revalidate using the same Resource, attempt #2 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/fetch/ResourceFetcher.h ('k') | Source/core/fetch/ResourceLoader.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/fetch/ResourceFetcher.cpp
diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp
index e0874bc6d37e800dba7348467b4605dc261321b8..f887eaf19084608b9e6a5611cd4261db1c4bea2e 100644
--- a/Source/core/fetch/ResourceFetcher.cpp
+++ b/Source/core/fetch/ResourceFetcher.cpp
@@ -302,7 +302,7 @@
resource = createResourceForLoading(request, request.charset(), factory);
break;
case Revalidate:
- initializeRevalidation(request, resource.get());
+ resource = createResourceForRevalidation(request, resource.get(), factory);
break;
case Use:
memoryCache()->updateForAccess(resource.get());
@@ -403,13 +403,13 @@
context().addAdditionalRequestHeaders(request, (type == Resource::MainResource) ? FetchMainResource : FetchSubresource);
}
-void ResourceFetcher::initializeRevalidation(const FetchRequest& request, Resource* resource)
+ResourcePtr<Resource> ResourceFetcher::createResourceForRevalidation(const FetchRequest& request, Resource* resource, const ResourceFactory& factory)
{
ASSERT(resource);
ASSERT(memoryCache()->contains(resource));
ASSERT(resource->isLoaded());
ASSERT(resource->canUseCacheValidator());
- ASSERT(!resource->isCacheValidator());
+ ASSERT(!resource->resourceToRevalidate());
ASSERT(!context().isControlledByServiceWorker());
ResourceRequest revalidatingRequest(resource->resourceRequest());
@@ -433,7 +433,15 @@
revalidatingRequest.setHTTPHeaderField("Resource-Freshness", AtomicString(String::format("max-age=%.0lf,stale-while-revalidate=%.0lf,age=%.0lf", resource->freshnessLifetime(), stalenessLifetime, resource->currentAge())));
}
- resource->setRevalidatingRequest(revalidatingRequest);
+ ResourcePtr<Resource> newResource = factory.create(revalidatingRequest, resource->encoding());
+ WTF_LOG(ResourceLoading, "Resource %p created to revalidate %p", newResource.get(), resource);
+
+ newResource->setResourceToRevalidate(resource);
+ newResource->setCacheIdentifier(resource->cacheIdentifier());
+
+ memoryCache()->remove(resource);
+ memoryCache()->add(newResource.get());
+ return newResource;
}
ResourcePtr<Resource> ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory)
@@ -459,7 +467,7 @@
OwnPtr<ResourceTimingInfo> info = ResourceTimingInfo::create(resource->options().initiatorInfo.name, monotonicallyIncreasingTime(), resource->type() == Resource::MainResource);
if (resource->isCacheValidator()) {
- const AtomicString& timingAllowOrigin = resource->response().httpHeaderField("Timing-Allow-Origin");
+ const AtomicString& timingAllowOrigin = resource->resourceToRevalidate()->response().httpHeaderField("Timing-Allow-Origin");
if (!timingAllowOrigin.isEmpty())
info->setOriginalTimingAllowOrigin(timingAllowOrigin);
}
« no previous file with comments | « Source/core/fetch/ResourceFetcher.h ('k') | Source/core/fetch/ResourceLoader.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698