Index: Source/core/fetch/ResourceLoader.cpp |
diff --git a/Source/core/fetch/ResourceLoader.cpp b/Source/core/fetch/ResourceLoader.cpp |
index 6bea1e83725c21cee17c2196c799a96061c15a7b..420aa3f2c8f575c77208b0301090ca2a6fb91626 100644 |
--- a/Source/core/fetch/ResourceLoader.cpp |
+++ b/Source/core/fetch/ResourceLoader.cpp |
@@ -44,6 +44,7 @@ |
#include "public/platform/WebURLRequest.h" |
#include "public/platform/WebURLResponse.h" |
#include "wtf/Assertions.h" |
+#include "wtf/CurrentTime.h" |
abarth-chromium
2013/09/13 23:48:28
Is this still needed?
|
namespace WebCore { |
@@ -63,7 +64,6 @@ PassRefPtr<ResourceLoader> ResourceLoader::create(ResourceLoaderHost* host, Reso |
{ |
RefPtr<ResourceLoader> loader(adoptRef(new ResourceLoader(host, resource, options))); |
loader->init(request); |
- loader->start(); |
Nate Chapin
2013/09/12 23:28:46
This is moved to Resource.cpp so that Resource::m_
|
return loader.release(); |
} |
@@ -132,6 +132,11 @@ void ResourceLoader::start() |
m_host->willStartLoadingResource(m_request); |
+ if (m_options.synchronousPolicy == RequestSynchronously) { |
+ requestSynchronously(); |
+ return; |
+ } |
+ |
if (m_defersLoading) { |
m_deferredRequest = m_request; |
return; |
@@ -388,24 +393,29 @@ bool ResourceLoader::isLoadedBy(ResourceLoaderHost* loader) const |
return m_host->isLoadedBy(loader); |
} |
-void ResourceLoader::loadResourceSynchronously(const ResourceRequest& request, StoredCredentials storedCredentials, ResourceError& error, ResourceResponse& response, Vector<char>& data) |
+void ResourceLoader::requestSynchronously() |
{ |
OwnPtr<WebKit::WebURLLoader> loader = adoptPtr(WebKit::Platform::current()->createURLLoader()); |
ASSERT(loader); |
- WebKit::WrappedResourceRequest requestIn(request); |
- requestIn.setAllowStoredCredentials(storedCredentials == AllowStoredCredentials); |
- WebKit::WrappedResourceResponse responseOut(response); |
+ RELEASE_ASSERT(m_connectionState == ConnectionStateNew); |
+ m_connectionState = ConnectionStateStarted; |
+ |
+ WebKit::WrappedResourceRequest requestIn(m_request); |
+ requestIn.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredCredentials); |
+ WebKit::WebURLResponse responseOut; |
+ responseOut.initialize(); |
WebKit::WebURLError errorOut; |
WebKit::WebData dataOut; |
- |
loader->loadSynchronously(requestIn, responseOut, errorOut, dataOut); |
- |
- error = errorOut; |
- data.clear(); |
- RefPtr<SharedBuffer> buffer = dataOut; |
- if (buffer) |
- buffer->moveTo(data); |
+ if (errorOut.reason) { |
+ didFail(0, errorOut); |
+ return; |
+ } |
+ didReceiveResponse(0, responseOut); |
+ RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse().resourceLoadInfo(); |
+ didReceiveData(0, dataOut.data(), dataOut.size(), resourceLoadInfo ? resourceLoadInfo->encodedDataLength : -1); |
abarth-chromium
2013/09/13 23:48:28
Does this introduce a memcpy? Previously, we were
Nate Chapin
2013/09/16 20:32:50
Yeah, I think it will memcpy. I guess we could exp
|
+ didFinishLoading(0, monotonicallyIncreasingTime()); |
} |
} |