| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2010, 2011 Apple Inc. All rights reserved. |
| 3 * (C) 2007 Graham Dennis (graham.dennis@gmail.com) | 3 * (C) 2007 Graham Dennis (graham.dennis@gmail.com) |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 m_deferredRequest = ResourceRequest(); | 114 m_deferredRequest = ResourceRequest(); |
| 115 } | 115 } |
| 116 | 116 |
| 117 void ResourceLoader::init(const ResourceRequest& passedRequest) | 117 void ResourceLoader::init(const ResourceRequest& passedRequest) |
| 118 { | 118 { |
| 119 ResourceRequest request(passedRequest); | 119 ResourceRequest request(passedRequest); |
| 120 m_host->willSendRequest(m_resource->identifier(), request, ResourceResponse(
), m_options.initiatorInfo); | 120 m_host->willSendRequest(m_resource->identifier(), request, ResourceResponse(
), m_options.initiatorInfo); |
| 121 request.setReportLoadTiming(true); | 121 request.setReportLoadTiming(true); |
| 122 ASSERT(m_state != Terminated); | 122 ASSERT(m_state != Terminated); |
| 123 ASSERT(!request.isNull()); | 123 ASSERT(!request.isNull()); |
| 124 m_originalRequest = m_request = applyOptions(request); | 124 m_originalRequest = m_request = request; |
| 125 m_resource->updateRequest(request); | 125 m_resource->updateRequest(request); |
| 126 m_host->didInitializeResourceLoader(this); | 126 m_host->didInitializeResourceLoader(this); |
| 127 } | 127 } |
| 128 | 128 |
| 129 void ResourceLoader::start() | 129 void ResourceLoader::start() |
| 130 { | 130 { |
| 131 ASSERT(!m_loader); | 131 ASSERT(!m_loader); |
| 132 ASSERT(!m_request.isNull()); | 132 ASSERT(!m_request.isNull()); |
| 133 ASSERT(m_deferredRequest.isNull()); | 133 ASSERT(m_deferredRequest.isNull()); |
| 134 | 134 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 146 | 146 |
| 147 if (m_state == Terminated) | 147 if (m_state == Terminated) |
| 148 return; | 148 return; |
| 149 | 149 |
| 150 RELEASE_ASSERT(m_connectionState == ConnectionStateNew); | 150 RELEASE_ASSERT(m_connectionState == ConnectionStateNew); |
| 151 m_connectionState = ConnectionStateStarted; | 151 m_connectionState = ConnectionStateStarted; |
| 152 | 152 |
| 153 m_loader = adoptPtr(blink::Platform::current()->createURLLoader()); | 153 m_loader = adoptPtr(blink::Platform::current()->createURLLoader()); |
| 154 ASSERT(m_loader); | 154 ASSERT(m_loader); |
| 155 blink::WrappedResourceRequest wrappedRequest(m_request); | 155 blink::WrappedResourceRequest wrappedRequest(m_request); |
| 156 wrappedRequest.setAllowStoredCredentials(m_options.allowCredentials == Allow
StoredCredentials); |
| 156 m_loader->loadAsynchronously(wrappedRequest, this); | 157 m_loader->loadAsynchronously(wrappedRequest, this); |
| 157 } | 158 } |
| 158 | 159 |
| 159 void ResourceLoader::changeToSynchronous() | 160 void ResourceLoader::changeToSynchronous() |
| 160 { | 161 { |
| 161 ASSERT(m_options.synchronousPolicy == RequestAsynchronously); | 162 ASSERT(m_options.synchronousPolicy == RequestAsynchronously); |
| 162 ASSERT(m_loader); | 163 ASSERT(m_loader); |
| 163 m_loader->cancel(); | 164 m_loader->cancel(); |
| 164 m_loader.clear(); | 165 m_loader.clear(); |
| 165 m_request.setPriority(ResourceLoadPriorityHighest); | 166 m_request.setPriority(ResourceLoadPriorityHighest); |
| 166 m_connectionState = ConnectionStateNew; | 167 m_connectionState = ConnectionStateNew; |
| 167 requestSynchronously(); | 168 requestSynchronously(); |
| 168 } | 169 } |
| 169 | 170 |
| 170 void ResourceLoader::setDefersLoading(bool defers) | 171 void ResourceLoader::setDefersLoading(bool defers) |
| 171 { | 172 { |
| 172 m_defersLoading = defers; | 173 m_defersLoading = defers; |
| 173 if (m_loader) | 174 if (m_loader) |
| 174 m_loader->setDefersLoading(defers); | 175 m_loader->setDefersLoading(defers); |
| 175 if (!defers && !m_deferredRequest.isNull()) { | 176 if (!defers && !m_deferredRequest.isNull()) { |
| 176 m_request = applyOptions(m_deferredRequest); | 177 m_request = m_deferredRequest; |
| 177 m_deferredRequest = ResourceRequest(); | 178 m_deferredRequest = ResourceRequest(); |
| 178 start(); | 179 start(); |
| 179 } | 180 } |
| 180 } | 181 } |
| 181 | 182 |
| 182 void ResourceLoader::didDownloadData(blink::WebURLLoader*, int length, int encod
edDataLength) | 183 void ResourceLoader::didDownloadData(blink::WebURLLoader*, int length, int encod
edDataLength) |
| 183 { | 184 { |
| 184 RefPtr<ResourceLoader> protect(this); | 185 RefPtr<ResourceLoader> protect(this); |
| 185 RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse); | 186 RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse); |
| 186 m_host->didDownloadData(m_resource, length, encodedDataLength); | 187 m_host->didDownloadData(m_resource, length, encodedDataLength); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 if (m_state == Finishing) | 256 if (m_state == Finishing) |
| 256 m_resource->error(Resource::LoadError); | 257 m_resource->error(Resource::LoadError); |
| 257 if (m_state != Terminated) | 258 if (m_state != Terminated) |
| 258 releaseResources(); | 259 releaseResources(); |
| 259 } | 260 } |
| 260 | 261 |
| 261 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest&
passedRequest, const blink::WebURLResponse& passedRedirectResponse) | 262 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest&
passedRequest, const blink::WebURLResponse& passedRedirectResponse) |
| 262 { | 263 { |
| 263 RefPtr<ResourceLoader> protect(this); | 264 RefPtr<ResourceLoader> protect(this); |
| 264 | 265 |
| 265 ResourceRequest& request(applyOptions(passedRequest.toMutableResourceRequest
())); | 266 ResourceRequest& request(passedRequest.toMutableResourceRequest()); |
| 266 ASSERT(!request.isNull()); | 267 ASSERT(!request.isNull()); |
| 267 const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceRe
sponse()); | 268 const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceRe
sponse()); |
| 268 ASSERT(!redirectResponse.isNull()); | 269 ASSERT(!redirectResponse.isNull()); |
| 269 if (!m_host->canAccessRedirect(m_resource, request, redirectResponse, m_opti
ons)) { | 270 if (!m_host->canAccessRedirect(m_resource, request, redirectResponse, m_opti
ons)) { |
| 270 cancel(); | 271 cancel(); |
| 271 return; | 272 return; |
| 272 } | 273 } |
| 273 | 274 |
| 274 applyOptions(request); // canAccessRedirect() can modify m_options so we sho
uld re-apply it. | |
| 275 m_host->redirectReceived(m_resource, redirectResponse); | 275 m_host->redirectReceived(m_resource, redirectResponse); |
| 276 m_resource->willSendRequest(request, redirectResponse); | 276 m_resource->willSendRequest(request, redirectResponse); |
| 277 if (request.isNull() || m_state == Terminated) | 277 if (request.isNull() || m_state == Terminated) |
| 278 return; | 278 return; |
| 279 | 279 |
| 280 m_host->willSendRequest(m_resource->identifier(), request, redirectResponse,
m_options.initiatorInfo); | 280 m_host->willSendRequest(m_resource->identifier(), request, redirectResponse,
m_options.initiatorInfo); |
| 281 request.setReportLoadTiming(true); | 281 request.setReportLoadTiming(true); |
| 282 ASSERT(!request.isNull()); | 282 ASSERT(!request.isNull()); |
| 283 m_resource->updateRequest(request); | 283 m_resource->updateRequest(request); |
| 284 m_request = request; | 284 m_request = request; |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 ASSERT(loader); | 449 ASSERT(loader); |
| 450 | 450 |
| 451 RefPtr<ResourceLoader> protect(this); | 451 RefPtr<ResourceLoader> protect(this); |
| 452 RefPtr<ResourceLoaderHost> protectHost(m_host); | 452 RefPtr<ResourceLoaderHost> protectHost(m_host); |
| 453 ResourcePtr<Resource> protectResource(m_resource); | 453 ResourcePtr<Resource> protectResource(m_resource); |
| 454 | 454 |
| 455 RELEASE_ASSERT(m_connectionState == ConnectionStateNew); | 455 RELEASE_ASSERT(m_connectionState == ConnectionStateNew); |
| 456 m_connectionState = ConnectionStateStarted; | 456 m_connectionState = ConnectionStateStarted; |
| 457 | 457 |
| 458 blink::WrappedResourceRequest requestIn(m_request); | 458 blink::WrappedResourceRequest requestIn(m_request); |
| 459 requestIn.setAllowStoredCredentials(m_options.allowCredentials == AllowStore
dCredentials); |
| 459 blink::WebURLResponse responseOut; | 460 blink::WebURLResponse responseOut; |
| 460 responseOut.initialize(); | 461 responseOut.initialize(); |
| 461 blink::WebURLError errorOut; | 462 blink::WebURLError errorOut; |
| 462 blink::WebData dataOut; | 463 blink::WebData dataOut; |
| 463 loader->loadSynchronously(requestIn, responseOut, errorOut, dataOut); | 464 loader->loadSynchronously(requestIn, responseOut, errorOut, dataOut); |
| 464 if (errorOut.reason) { | 465 if (errorOut.reason) { |
| 465 didFail(0, errorOut); | 466 didFail(0, errorOut); |
| 466 return; | 467 return; |
| 467 } | 468 } |
| 468 didReceiveResponse(0, responseOut); | 469 didReceiveResponse(0, responseOut); |
| 469 if (m_state == Terminated) | 470 if (m_state == Terminated) |
| 470 return; | 471 return; |
| 471 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse()
.resourceLoadInfo(); | 472 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse()
.resourceLoadInfo(); |
| 472 int64 encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedDataLe
ngth : blink::WebURLLoaderClient::kUnknownEncodedDataLength; | 473 int64 encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedDataLe
ngth : blink::WebURLLoaderClient::kUnknownEncodedDataLength; |
| 473 m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDa
taLength); | 474 m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDa
taLength); |
| 474 m_resource->setResourceBuffer(dataOut); | 475 m_resource->setResourceBuffer(dataOut); |
| 475 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); | 476 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); |
| 476 } | 477 } |
| 477 | 478 |
| 478 ResourceRequest& ResourceLoader::applyOptions(ResourceRequest& request) const | |
| 479 { | |
| 480 request.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredC
redentials); | |
| 481 return request; | |
| 482 } | 479 } |
| 483 | |
| 484 } | |
| OLD | NEW |