Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / fetch / ResourceLoader.cpp
index f8de6d8..2b734fb 100644 (file)
@@ -47,7 +47,7 @@
 #include "wtf/Assertions.h"
 #include "wtf/CurrentTime.h"
 
-namespace WebCore {
+namespace blink {
 
 ResourceLoader::RequestCountTracker::RequestCountTracker(ResourceLoaderHost* host, Resource* resource)
     : m_host(host)
@@ -68,9 +68,9 @@ ResourceLoader::RequestCountTracker::RequestCountTracker(const RequestCountTrack
     m_host->incrementRequestCount(m_resource);
 }
 
-PassRefPtr<ResourceLoader> ResourceLoader::create(ResourceLoaderHost* host, Resource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
+PassRefPtrWillBeRawPtr<ResourceLoader> ResourceLoader::create(ResourceLoaderHost* host, Resource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
 {
-    RefPtr<ResourceLoader> loader(adoptRef(new ResourceLoader(host, resource, options)));
+    RefPtrWillBeRawPtr<ResourceLoader> loader(adoptRefWillBeNoop(new ResourceLoader(host, resource, options)));
     loader->init(request);
     return loader.release();
 }
@@ -92,6 +92,12 @@ ResourceLoader::~ResourceLoader()
     ASSERT(m_state == Terminated);
 }
 
+void ResourceLoader::trace(Visitor* visitor)
+{
+    visitor->trace(m_host);
+    visitor->trace(m_resource);
+}
+
 void ResourceLoader::releaseResources()
 {
     ASSERT(m_state != Terminated);
@@ -109,7 +115,7 @@ void ResourceLoader::releaseResources()
     // deallocated and release the last reference to this object.
     // We need to retain to avoid accessing the object after it
     // has been deallocated and also to avoid reentering this method.
-    RefPtr<ResourceLoader> protector(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protector(this);
 
     m_host.clear();
     m_state = Terminated;
@@ -200,7 +206,7 @@ void ResourceLoader::attachThreadedDataReceiver(PassOwnPtr<blink::WebThreadedDat
 
 void ResourceLoader::didDownloadData(blink::WebURLLoader*, int length, int encodedDataLength)
 {
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
     RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse);
     m_host->didDownloadData(m_resource, length, encodedDataLength);
     m_resource->didDownloadData(length);
@@ -253,7 +259,7 @@ void ResourceLoader::cancel(const ResourceError& error)
 
     // This function calls out to clients at several points that might do
     // something that causes the last reference to this object to go away.
-    RefPtr<ResourceLoader> protector(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protector(this);
 
     WTF_LOG(ResourceLoading, "Cancelled load of '%s'.\n", m_resource->url().string().latin1().data());
     if (m_state == Initialized)
@@ -279,9 +285,13 @@ void ResourceLoader::cancel(const ResourceError& error)
 
 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest& passedRequest, const blink::WebURLResponse& passedRedirectResponse)
 {
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
 
     ResourceRequest& request(applyOptions(passedRequest.toMutableResourceRequest()));
+
+    // FIXME: We should have a real context for redirect requests. Currently, we don't: see WebURLLoaderImpl::Context::OnReceivedRedirect in content/.
+    request.setRequestContext(blink::WebURLRequest::RequestContextInternal);
+
     ASSERT(!request.isNull());
     const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceResponse());
     ASSERT(!redirectResponse.isNull());
@@ -312,7 +322,7 @@ void ResourceLoader::didReceiveCachedMetadata(blink::WebURLLoader*, const char*
 void ResourceLoader::didSendData(blink::WebURLLoader*, unsigned long long bytesSent, unsigned long long totalBytesToBeSent)
 {
     ASSERT(m_state == Initialized);
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
     m_resource->didSendData(bytesSent, totalBytesToBeSent);
 }
 
@@ -353,7 +363,7 @@ void ResourceLoader::didReceiveResponse(blink::WebURLLoader*, const blink::WebUR
 
     // Reference the object in this method since the additional processing can do
     // anything including removing the last reference to this object.
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
     m_resource->responseReceived(resourceResponse);
     if (m_state == Terminated)
         return;
@@ -400,7 +410,7 @@ void ResourceLoader::didReceiveData(blink::WebURLLoader*, const char* data, int
 
     // Reference the object in this method since the additional processing can do
     // anything including removing the last reference to this object.
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
 
     // 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.
@@ -418,7 +428,7 @@ void ResourceLoader::didFinishLoading(blink::WebURLLoader*, double finishTime, i
     ASSERT(m_state != Terminated);
     WTF_LOG(ResourceLoading, "Received '%s'.", m_resource->url().string().latin1().data());
 
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
     ResourcePtr<Resource> protectResource(m_resource);
     m_state = Finishing;
     didFinishLoadingOnePart(finishTime, encodedDataLength);
@@ -437,7 +447,7 @@ void ResourceLoader::didFail(blink::WebURLLoader*, const blink::WebURLError& err
     ASSERT(m_state != Terminated);
     WTF_LOG(ResourceLoading, "Failed to load '%s'.\n", m_resource->url().string().latin1().data());
 
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
     RefPtrWillBeRawPtr<ResourceLoaderHost> protectHost(m_host.get());
     ResourcePtr<Resource> protectResource(m_resource);
     m_state = Finishing;
@@ -469,7 +479,7 @@ void ResourceLoader::requestSynchronously()
     // downloadToFile is not supported for synchronous requests.
     ASSERT(!m_request.downloadToFile());
 
-    RefPtr<ResourceLoader> protect(this);
+    RefPtrWillBeRawPtr<ResourceLoader> protect(this);
     RefPtrWillBeRawPtr<ResourceLoaderHost> protectHost(m_host.get());
     ResourcePtr<Resource> protectResource(m_resource);