| Index: Source/core/fetch/ResourceLoader.cpp
|
| diff --git a/Source/core/fetch/ResourceLoader.cpp b/Source/core/fetch/ResourceLoader.cpp
|
| index 6bea1e83725c21cee17c2196c799a96061c15a7b..b385bc72ab7bec4dfdd6087ac545886f1fc50cc9 100644
|
| --- a/Source/core/fetch/ResourceLoader.cpp
|
| +++ b/Source/core/fetch/ResourceLoader.cpp
|
| @@ -63,7 +63,6 @@ PassRefPtr<ResourceLoader> ResourceLoader::create(ResourceLoaderHost* host, Reso
|
| {
|
| RefPtr<ResourceLoader> loader(adoptRef(new ResourceLoader(host, resource, options)));
|
| loader->init(request);
|
| - loader->start();
|
| return loader.release();
|
| }
|
|
|
| @@ -132,6 +131,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 +392,30 @@ 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();
|
| + m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), resourceLoadInfo ? resourceLoadInfo->encodedDataLength : -1, m_options);
|
| + m_resource->setResourceBuffer(dataOut);
|
| + didFinishLoading(0, responseOut.responseTime());
|
| }
|
|
|
| }
|
|
|