| 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);
|
| }
|
|
|