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 |