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

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

Issue 1237983003: 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
Index: Source/core/fetch/ResourceFetcher.cpp
diff --git a/Source/core/fetch/ResourceFetcher.cpp b/Source/core/fetch/ResourceFetcher.cpp
index f887eaf19084608b9e6a5611cd4261db1c4bea2e..e0874bc6d37e800dba7348467b4605dc261321b8 100644
--- a/Source/core/fetch/ResourceFetcher.cpp
+++ b/Source/core/fetch/ResourceFetcher.cpp
@@ -302,7 +302,7 @@ ResourcePtr<Resource> ResourceFetcher::requestResource(FetchRequest& request, co
resource = createResourceForLoading(request, request.charset(), factory);
break;
case Revalidate:
- resource = createResourceForRevalidation(request, resource.get(), factory);
+ initializeRevalidation(request, resource.get());
break;
case Use:
memoryCache()->updateForAccess(resource.get());
@@ -403,13 +403,13 @@ void ResourceFetcher::addAdditionalRequestHeaders(ResourceRequest& request, Reso
context().addAdditionalRequestHeaders(request, (type == Resource::MainResource) ? FetchMainResource : FetchSubresource);
}
-ResourcePtr<Resource> ResourceFetcher::createResourceForRevalidation(const FetchRequest& request, Resource* resource, const ResourceFactory& factory)
+void ResourceFetcher::initializeRevalidation(const FetchRequest& request, Resource* resource)
{
ASSERT(resource);
ASSERT(memoryCache()->contains(resource));
ASSERT(resource->isLoaded());
ASSERT(resource->canUseCacheValidator());
- ASSERT(!resource->resourceToRevalidate());
+ ASSERT(!resource->isCacheValidator());
ASSERT(!context().isControlledByServiceWorker());
ResourceRequest revalidatingRequest(resource->resourceRequest());
@@ -433,15 +433,7 @@ ResourcePtr<Resource> ResourceFetcher::createResourceForRevalidation(const Fetch
revalidatingRequest.setHTTPHeaderField("Resource-Freshness", AtomicString(String::format("max-age=%.0lf,stale-while-revalidate=%.0lf,age=%.0lf", resource->freshnessLifetime(), stalenessLifetime, resource->currentAge())));
}
- 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;
+ resource->setRevalidatingRequest(revalidatingRequest);
}
ResourcePtr<Resource> ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory)
@@ -467,7 +459,7 @@ void ResourceFetcher::storeResourceTimingInitiatorInformation(Resource* resource
OwnPtr<ResourceTimingInfo> info = ResourceTimingInfo::create(resource->options().initiatorInfo.name, monotonicallyIncreasingTime(), resource->type() == Resource::MainResource);
if (resource->isCacheValidator()) {
- const AtomicString& timingAllowOrigin = resource->resourceToRevalidate()->response().httpHeaderField("Timing-Allow-Origin");
+ const AtomicString& timingAllowOrigin = resource->response().httpHeaderField("Timing-Allow-Origin");
if (!timingAllowOrigin.isEmpty())
info->setOriginalTimingAllowOrigin(timingAllowOrigin);
}

Powered by Google App Engine
This is Rietveld 408576698