| Index: third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
|
| index 153d17561d6c81fba3343637bf81397380af49c3..d53920a74f301b0c897fa9635f12c6439c71031b 100644
|
| --- a/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/fetch/ResourceLoader.cpp
|
| @@ -32,7 +32,6 @@
|
| #include "core/fetch/CSSStyleSheetResource.h"
|
| #include "core/fetch/Resource.h"
|
| #include "core/fetch/ResourceFetcher.h"
|
| -#include "core/fetch/ResourcePtr.h"
|
| #include "platform/Logging.h"
|
| #include "platform/SharedBuffer.h"
|
| #include "platform/ThreadedDataReceiver.h"
|
| @@ -99,7 +98,6 @@ void ResourceLoader::releaseResources()
|
| if (m_state == Terminated)
|
| return;
|
| m_resource->clearLoader();
|
| - m_resource->deleteIfPossible();
|
| m_resource = nullptr;
|
|
|
| ASSERT(m_state != Terminated);
|
| @@ -132,7 +130,7 @@ void ResourceLoader::start()
|
| ASSERT(!m_request.isNull());
|
| ASSERT(m_deferredRequest.isNull());
|
|
|
| - m_fetcher->willStartLoadingResource(m_resource, m_request);
|
| + m_fetcher->willStartLoadingResource(m_resource.get(), m_request);
|
|
|
| if (m_options.synchronousPolicy == RequestSynchronously) {
|
| requestSynchronously();
|
| @@ -196,7 +194,7 @@ void ResourceLoader::didDownloadData(WebURLLoader*, int length, int encodedDataL
|
| {
|
| ASSERT(m_state != Terminated);
|
| RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse);
|
| - m_fetcher->didDownloadData(m_resource, length, encodedDataLength);
|
| + m_fetcher->didDownloadData(m_resource.get(), length, encodedDataLength);
|
| if (m_state == Terminated)
|
| return;
|
| m_resource->didDownloadData(length);
|
| @@ -212,7 +210,7 @@ void ResourceLoader::didFinishLoadingOnePart(double finishTime, int64_t encodedD
|
| if (m_notifiedLoadComplete)
|
| return;
|
| m_notifiedLoadComplete = true;
|
| - m_fetcher->didFinishLoading(m_resource, finishTime, encodedDataLength);
|
| + m_fetcher->didFinishLoading(m_resource.get(), finishTime, encodedDataLength);
|
| }
|
|
|
| void ResourceLoader::didChangePriority(ResourceLoadPriority loadPriority, int intraPriorityValue)
|
| @@ -259,7 +257,7 @@ void ResourceLoader::cancel(const ResourceError& error)
|
|
|
| if (!m_notifiedLoadComplete) {
|
| m_notifiedLoadComplete = true;
|
| - m_fetcher->didFailLoading(m_resource, nonNullError);
|
| + m_fetcher->didFailLoading(m_resource.get(), nonNullError);
|
| }
|
|
|
| if (m_state == Finishing)
|
| @@ -278,14 +276,14 @@ void ResourceLoader::willFollowRedirect(WebURLLoader*, WebURLRequest& passedNewR
|
| const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceResponse());
|
| ASSERT(!redirectResponse.isNull());
|
| newRequest.setFollowedRedirect(true);
|
| - if (!isManualRedirectFetchRequest(m_resource->resourceRequest()) && !m_fetcher->canAccessRedirect(m_resource, newRequest, redirectResponse, m_options)) {
|
| + if (!isManualRedirectFetchRequest(m_resource->resourceRequest()) && !m_fetcher->canAccessRedirect(m_resource.get(), newRequest, redirectResponse, m_options)) {
|
| cancel(ResourceError::cancelledDueToAccessCheckError(newRequest.url()));
|
| return;
|
| }
|
| ASSERT(m_state != Terminated);
|
|
|
| applyOptions(newRequest); // canAccessRedirect() can modify m_options so we should re-apply it.
|
| - m_fetcher->redirectReceived(m_resource, redirectResponse);
|
| + m_fetcher->redirectReceived(m_resource.get(), redirectResponse);
|
| ASSERT(m_state != Terminated);
|
| m_resource->willFollowRedirect(newRequest, redirectResponse);
|
| if (newRequest.isNull() || m_state == Terminated)
|
| @@ -347,14 +345,10 @@ void ResourceLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& res
|
| return;
|
| }
|
| } else {
|
| - // If the response successfully validated a cached resource, perform
|
| - // the access control with respect to it. Need to do this right here
|
| - // before the resource switches clients over to that validated resource.
|
| - Resource* resource = m_resource;
|
| - if (!resource->isCacheValidator() || resourceResponse.httpStatusCode() != 304)
|
| + if (!m_resource->isCacheValidator() || resourceResponse.httpStatusCode() != 304)
|
| m_resource->setResponse(resourceResponse);
|
| - if (!m_fetcher->canAccessResource(resource, m_options.securityOrigin.get(), response.url(), ResourceFetcher::ShouldLogAccessControlErrors)) {
|
| - m_fetcher->didReceiveResponse(m_resource, resourceResponse);
|
| + if (!m_fetcher->canAccessResource(m_resource.get(), m_options.securityOrigin.get(), response.url(), ResourceFetcher::ShouldLogAccessControlErrors)) {
|
| + m_fetcher->didReceiveResponse(m_resource.get(), resourceResponse);
|
| cancel(ResourceError::cancelledDueToAccessCheckError(KURL(response.url())));
|
| return;
|
| }
|
| @@ -365,7 +359,7 @@ void ResourceLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& res
|
| if (m_state == Terminated)
|
| return;
|
|
|
| - m_fetcher->didReceiveResponse(m_resource, resourceResponse);
|
| + m_fetcher->didReceiveResponse(m_resource.get(), resourceResponse);
|
| if (m_state == Terminated)
|
| return;
|
|
|
| @@ -392,7 +386,7 @@ void ResourceLoader::didReceiveResponse(WebURLLoader*, const WebURLResponse& res
|
|
|
| if (!m_notifiedLoadComplete) {
|
| m_notifiedLoadComplete = true;
|
| - m_fetcher->didFailLoading(m_resource, ResourceError::cancelledError(m_request.url()));
|
| + m_fetcher->didFailLoading(m_resource.get(), ResourceError::cancelledError(m_request.url()));
|
| }
|
|
|
| ASSERT(m_state != Terminated);
|
| @@ -420,7 +414,7 @@ void ResourceLoader::didReceiveData(WebURLLoader*, const char* data, int length,
|
| // FIXME: If we get a resource with more than 2B bytes, this code won't do the right thing.
|
| // However, with today's computers and networking speeds, this won't happen in practice.
|
| // Could be an issue with a giant local file.
|
| - m_fetcher->didReceiveData(m_resource, data, length, encodedDataLength);
|
| + m_fetcher->didReceiveData(m_resource.get(), data, length, encodedDataLength);
|
| if (m_state == Terminated)
|
| return;
|
| RELEASE_ASSERT(length >= 0);
|
| @@ -436,7 +430,7 @@ void ResourceLoader::didFinishLoading(WebURLLoader*, double finishTime, int64_t
|
| ASSERT(m_state != Terminated);
|
| WTF_LOG(ResourceLoading, "Received '%s'.", m_resource->url().string().latin1().data());
|
|
|
| - ResourcePtr<Resource> protectResource(m_resource);
|
| + RefPtrWillBeRawPtr<Resource> protectResource(m_resource.get());
|
| m_state = Finishing;
|
| m_resource->setLoadFinishTime(finishTime);
|
| didFinishLoadingOnePart(finishTime, encodedDataLength);
|
| @@ -457,13 +451,13 @@ void ResourceLoader::didFail(WebURLLoader*, const WebURLError& error)
|
| ASSERT(m_state != Terminated);
|
| WTF_LOG(ResourceLoading, "Failed to load '%s'.\n", m_resource->url().string().latin1().data());
|
|
|
| - ResourcePtr<Resource> protectResource(m_resource);
|
| + RefPtrWillBeRawPtr<Resource> protectResource(m_resource.get());
|
| m_state = Finishing;
|
| m_resource->setResourceError(error);
|
|
|
| if (!m_notifiedLoadComplete) {
|
| m_notifiedLoadComplete = true;
|
| - m_fetcher->didFailLoading(m_resource, error);
|
| + m_fetcher->didFailLoading(m_resource.get(), error);
|
| }
|
| if (m_state == Terminated)
|
| return;
|
| @@ -489,7 +483,7 @@ void ResourceLoader::requestSynchronously()
|
| // downloadToFile is not supported for synchronous requests.
|
| ASSERT(!m_request.downloadToFile());
|
|
|
| - ResourcePtr<Resource> protectResource(m_resource);
|
| + RefPtrWillBeRawPtr<Resource> protectResource(m_resource.get());
|
|
|
| RELEASE_ASSERT(m_connectionState == ConnectionStateNew);
|
| m_connectionState = ConnectionStateStarted;
|
| @@ -521,7 +515,7 @@ void ResourceLoader::requestSynchronously()
|
| // empty buffer is a noop in most cases, but is destructive in the case of
|
| // a 304, where it will overwrite the cached data we should be reusing.
|
| if (dataOut.size()) {
|
| - m_fetcher->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDataLength);
|
| + m_fetcher->didReceiveData(m_resource.get(), dataOut.data(), dataOut.size(), encodedDataLength);
|
| m_resource->setResourceBuffer(dataOut);
|
| }
|
| didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength);
|
|
|