| Index: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
|
| diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
|
| index a55cb447a5b1b691cfc5ebd51df897ed20ea5f10..237f7b107be8f5d7d34218c059adeaf2845588ac 100644
|
| --- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
|
| +++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
|
| @@ -303,7 +303,7 @@ static PassRefPtr<TracedValue> urlForTraceEvent(const KURL& url)
|
| return value.release();
|
| }
|
|
|
| -ResourcePtr<Resource> ResourceFetcher::preCacheData(const FetchRequest& request, const ResourceFactory& factory, const SubstituteData& substituteData)
|
| +void ResourceFetcher::preCacheData(const FetchRequest& request, const ResourceFactory& factory, const SubstituteData& substituteData)
|
| {
|
| const KURL& url = request.resourceRequest().url();
|
| ASSERT(url.protocolIsData() || substituteData.isValid());
|
| @@ -313,13 +313,13 @@ ResourcePtr<Resource> ResourceFetcher::preCacheData(const FetchRequest& request,
|
| // layer where it isn't easy to mock out a network load. It uses data: urls to emulate the
|
| // behavior it wants to test, which would otherwise be reserved for network loads.
|
| if ((factory.type() == Resource::MainResource && !substituteData.isValid()) || factory.type() == Resource::Raw)
|
| - return nullptr;
|
| + return;
|
|
|
| const String cacheIdentifier = getCacheIdentifier();
|
| if (Resource* oldResource = memoryCache()->resourceForURL(url, cacheIdentifier)) {
|
| // There's no reason to re-parse if we saved the data from the previous parse.
|
| if (request.options().dataBufferingPolicy != DoNotBufferData)
|
| - return oldResource;
|
| + return;
|
| memoryCache()->remove(oldResource);
|
| }
|
|
|
| @@ -333,13 +333,13 @@ ResourcePtr<Resource> ResourceFetcher::preCacheData(const FetchRequest& request,
|
| } else {
|
| data = PassRefPtr<SharedBuffer>(Platform::current()->parseDataURL(url, mimetype, charset));
|
| if (!data)
|
| - return nullptr;
|
| + return;
|
| }
|
| ResourceResponse response(url, mimetype, data->size(), charset, String());
|
| response.setHTTPStatusCode(200);
|
| response.setHTTPStatusText("OK");
|
|
|
| - ResourcePtr<Resource> resource = factory.create(request.resourceRequest(), request.charset());
|
| + RefPtrWillBeRawPtr<Resource> resource = factory.create(request.resourceRequest(), request.charset());
|
| resource->setNeedsSynchronousCacheHit(substituteData.forceSynchronousLoad());
|
| resource->setOptions(request.options());
|
| // FIXME: We should provide a body stream here.
|
| @@ -351,7 +351,6 @@ ResourcePtr<Resource> ResourceFetcher::preCacheData(const FetchRequest& request,
|
| resource->setCacheIdentifier(cacheIdentifier);
|
| resource->finish();
|
| memoryCache()->add(resource.get());
|
| - return resource;
|
| }
|
|
|
| void ResourceFetcher::moveCachedNonBlockingResourceToBlocking(Resource* resource, const FetchRequest& request)
|
| @@ -366,7 +365,7 @@ void ResourceFetcher::moveCachedNonBlockingResourceToBlocking(Resource* resource
|
| }
|
| }
|
|
|
| -ResourcePtr<Resource> ResourceFetcher::requestResource(FetchRequest& request, const ResourceFactory& factory, const SubstituteData& substituteData)
|
| +PassRefPtrWillBeRawPtr<Resource> ResourceFetcher::requestResource(FetchRequest& request, const ResourceFactory& factory, const SubstituteData& substituteData)
|
| {
|
| ASSERT(request.options().synchronousPolicy == RequestAsynchronously || factory.type() == Resource::Raw || factory.type() == Resource::XSLStyleSheet);
|
|
|
| @@ -404,11 +403,9 @@ ResourcePtr<Resource> ResourceFetcher::requestResource(FetchRequest& request, co
|
| }
|
|
|
| bool isStaticData = request.resourceRequest().url().protocolIsData() || substituteData.isValid();
|
| - ResourcePtr<Resource> resource;
|
| if (isStaticData)
|
| - resource = preCacheData(request, factory, substituteData);
|
| - if (!resource)
|
| - resource = memoryCache()->resourceForURL(url, getCacheIdentifier());
|
| + preCacheData(request, factory, substituteData);
|
| + RefPtrWillBeRawPtr<Resource> resource = memoryCache()->resourceForURL(url, getCacheIdentifier());
|
|
|
| // See if we can use an existing resource from the cache. If so, we need to move it to be load blocking.
|
| moveCachedNonBlockingResourceToBlocking(resource.get(), request);
|
| @@ -566,7 +563,7 @@ void ResourceFetcher::initializeRevalidation(const FetchRequest& request, Resour
|
| resource->setRevalidatingRequest(revalidatingRequest);
|
| }
|
|
|
| -ResourcePtr<Resource> ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory)
|
| +PassRefPtrWillBeRawPtr<Resource> ResourceFetcher::createResourceForLoading(FetchRequest& request, const String& charset, const ResourceFactory& factory)
|
| {
|
| const String cacheIdentifier = getCacheIdentifier();
|
| ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url(), cacheIdentifier));
|
| @@ -574,7 +571,7 @@ ResourcePtr<Resource> ResourceFetcher::createResourceForLoading(FetchRequest& re
|
| WTF_LOG(ResourceLoading, "Loading Resource for '%s'.", request.resourceRequest().url().elidedString().latin1().data());
|
|
|
| initializeResourceRequest(request.mutableResourceRequest(), factory.type());
|
| - ResourcePtr<Resource> resource = factory.create(request.resourceRequest(), charset);
|
| + RefPtrWillBeRawPtr<Resource> resource = factory.create(request.resourceRequest(), charset);
|
| resource->setLinkPreload(request.isLinkPreload());
|
| resource->setCacheIdentifier(cacheIdentifier);
|
|
|
| @@ -844,7 +841,7 @@ void ResourceFetcher::preloadStarted(Resource* resource)
|
| resource->increasePreloadCount();
|
|
|
| if (!m_preloads)
|
| - m_preloads = adoptPtrWillBeNoop(new WillBeHeapListHashSet<RawPtrWillBeMember<Resource>>);
|
| + m_preloads = adoptPtrWillBeNoop(new WillBeHeapListHashSet<RefPtrWillBeMember<Resource>>);
|
| m_preloads->add(resource);
|
|
|
| #if PRELOAD_DEBUG
|
| @@ -874,8 +871,7 @@ void ResourceFetcher::clearPreloads(ClearPreloadsPolicy policy)
|
|
|
| for (auto resource : *m_preloads) {
|
| resource->decreasePreloadCount();
|
| - bool deleted = resource->deleteIfPossible();
|
| - if (!deleted && resource->preloadResult() == Resource::PreloadNotReferenced && (policy == ClearAllPreloads || !resource->isLinkPreload()))
|
| + if (resource->preloadResult() == Resource::PreloadNotReferenced && (policy == ClearAllPreloads || !resource->isLinkPreload()))
|
| memoryCache()->remove(resource.get());
|
| }
|
| m_preloads.clear();
|
|
|