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 = request; | 124 m_originalRequest = m_request = applyOptions(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); | |
157 m_loader->loadAsynchronously(wrappedRequest, this); | 156 m_loader->loadAsynchronously(wrappedRequest, this); |
158 } | 157 } |
159 | 158 |
160 void ResourceLoader::changeToSynchronous() | 159 void ResourceLoader::changeToSynchronous() |
161 { | 160 { |
162 ASSERT(m_options.synchronousPolicy == RequestAsynchronously); | 161 ASSERT(m_options.synchronousPolicy == RequestAsynchronously); |
163 ASSERT(m_loader); | 162 ASSERT(m_loader); |
164 m_loader->cancel(); | 163 m_loader->cancel(); |
165 m_loader.clear(); | 164 m_loader.clear(); |
166 m_request.setPriority(ResourceLoadPriorityHighest); | 165 m_request.setPriority(ResourceLoadPriorityHighest); |
167 m_connectionState = ConnectionStateNew; | 166 m_connectionState = ConnectionStateNew; |
168 requestSynchronously(); | 167 requestSynchronously(); |
169 } | 168 } |
170 | 169 |
171 void ResourceLoader::setDefersLoading(bool defers) | 170 void ResourceLoader::setDefersLoading(bool defers) |
172 { | 171 { |
173 m_defersLoading = defers; | 172 m_defersLoading = defers; |
174 if (m_loader) | 173 if (m_loader) |
175 m_loader->setDefersLoading(defers); | 174 m_loader->setDefersLoading(defers); |
176 if (!defers && !m_deferredRequest.isNull()) { | 175 if (!defers && !m_deferredRequest.isNull()) { |
177 m_request = m_deferredRequest; | 176 m_request = applyOptions(m_deferredRequest); |
178 m_deferredRequest = ResourceRequest(); | 177 m_deferredRequest = ResourceRequest(); |
179 start(); | 178 start(); |
180 } | 179 } |
181 } | 180 } |
182 | 181 |
183 void ResourceLoader::didDownloadData(blink::WebURLLoader*, int length, int encod
edDataLength) | 182 void ResourceLoader::didDownloadData(blink::WebURLLoader*, int length, int encod
edDataLength) |
184 { | 183 { |
185 RefPtr<ResourceLoader> protect(this); | 184 RefPtr<ResourceLoader> protect(this); |
186 RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse); | 185 RELEASE_ASSERT(m_connectionState == ConnectionStateReceivedResponse); |
187 m_host->didDownloadData(m_resource, length, encodedDataLength); | 186 m_host->didDownloadData(m_resource, length, encodedDataLength); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 if (m_state == Finishing) | 255 if (m_state == Finishing) |
257 m_resource->error(Resource::LoadError); | 256 m_resource->error(Resource::LoadError); |
258 if (m_state != Terminated) | 257 if (m_state != Terminated) |
259 releaseResources(); | 258 releaseResources(); |
260 } | 259 } |
261 | 260 |
262 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest&
passedRequest, const blink::WebURLResponse& passedRedirectResponse) | 261 void ResourceLoader::willSendRequest(blink::WebURLLoader*, blink::WebURLRequest&
passedRequest, const blink::WebURLResponse& passedRedirectResponse) |
263 { | 262 { |
264 RefPtr<ResourceLoader> protect(this); | 263 RefPtr<ResourceLoader> protect(this); |
265 | 264 |
266 ResourceRequest& request(passedRequest.toMutableResourceRequest()); | 265 ResourceRequest& request(applyOptions(passedRequest.toMutableResourceRequest
())); |
267 ASSERT(!request.isNull()); | 266 ASSERT(!request.isNull()); |
268 const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceRe
sponse()); | 267 const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceRe
sponse()); |
269 ASSERT(!redirectResponse.isNull()); | 268 ASSERT(!redirectResponse.isNull()); |
270 if (!m_host->canAccessRedirect(m_resource, request, redirectResponse, m_opti
ons)) { | 269 if (!m_host->canAccessRedirect(m_resource, request, redirectResponse, m_opti
ons)) { |
271 cancel(); | 270 cancel(); |
272 return; | 271 return; |
273 } | 272 } |
274 | 273 |
| 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); | |
460 blink::WebURLResponse responseOut; | 459 blink::WebURLResponse responseOut; |
461 responseOut.initialize(); | 460 responseOut.initialize(); |
462 blink::WebURLError errorOut; | 461 blink::WebURLError errorOut; |
463 blink::WebData dataOut; | 462 blink::WebData dataOut; |
464 loader->loadSynchronously(requestIn, responseOut, errorOut, dataOut); | 463 loader->loadSynchronously(requestIn, responseOut, errorOut, dataOut); |
465 if (errorOut.reason) { | 464 if (errorOut.reason) { |
466 didFail(0, errorOut); | 465 didFail(0, errorOut); |
467 return; | 466 return; |
468 } | 467 } |
469 didReceiveResponse(0, responseOut); | 468 didReceiveResponse(0, responseOut); |
470 if (m_state == Terminated) | 469 if (m_state == Terminated) |
471 return; | 470 return; |
472 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse()
.resourceLoadInfo(); | 471 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse()
.resourceLoadInfo(); |
473 int64 encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedDataLe
ngth : blink::WebURLLoaderClient::kUnknownEncodedDataLength; | 472 int64 encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedDataLe
ngth : blink::WebURLLoaderClient::kUnknownEncodedDataLength; |
474 m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDa
taLength); | 473 m_host->didReceiveData(m_resource, dataOut.data(), dataOut.size(), encodedDa
taLength); |
475 m_resource->setResourceBuffer(dataOut); | 474 m_resource->setResourceBuffer(dataOut); |
476 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); | 475 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); |
477 } | 476 } |
478 | 477 |
| 478 ResourceRequest& ResourceLoader::applyOptions(ResourceRequest& request) const |
| 479 { |
| 480 request.setAllowStoredCredentials(m_options.allowCredentials == AllowStoredC
redentials); |
| 481 return request; |
479 } | 482 } |
| 483 |
| 484 } |
OLD | NEW |