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 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 { | 109 { |
110 if (m_loader) | 110 if (m_loader) |
111 m_loader->didChangePriority(static_cast<WebURLRequest::Priority>(loadPri
ority), intraPriorityValue); | 111 m_loader->didChangePriority(static_cast<WebURLRequest::Priority>(loadPri
ority), intraPriorityValue); |
112 } | 112 } |
113 | 113 |
114 void ResourceLoader::cancel() | 114 void ResourceLoader::cancel() |
115 { | 115 { |
116 didFail(nullptr, ResourceError::cancelledError(m_resource->lastResourceReque
st().url())); | 116 didFail(nullptr, ResourceError::cancelledError(m_resource->lastResourceReque
st().url())); |
117 } | 117 } |
118 | 118 |
119 void ResourceLoader::willFollowRedirect(WebURLLoader*, WebURLRequest& passedNewR
equest, const WebURLResponse& passedRedirectResponse) | 119 void ResourceLoader::willFollowRedirect(WebURLLoader*, WebURLRequest& passedNewR
equest, const WebURLResponse& passedRedirectResponse, int64_t encodedDataLength) |
120 { | 120 { |
121 ASSERT(!passedNewRequest.isNull()); | 121 ASSERT(!passedNewRequest.isNull()); |
122 ASSERT(!passedRedirectResponse.isNull()); | 122 ASSERT(!passedRedirectResponse.isNull()); |
123 | 123 |
124 ResourceRequest& newRequest(passedNewRequest.toMutableResourceRequest()); | 124 ResourceRequest& newRequest(passedNewRequest.toMutableResourceRequest()); |
125 const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceRe
sponse()); | 125 const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceRe
sponse()); |
126 newRequest.setRedirectStatus(ResourceRequest::RedirectStatus::FollowedRedire
ct); | 126 newRequest.setRedirectStatus(ResourceRequest::RedirectStatus::FollowedRedire
ct); |
127 | 127 |
128 if (m_fetcher->willFollowRedirect(m_resource.get(), newRequest, redirectResp
onse)) { | 128 if (m_fetcher->willFollowRedirect(m_resource.get(), newRequest, redirectResp
onse, encodedDataLength)) { |
129 m_resource->willFollowRedirect(newRequest, redirectResponse); | 129 m_resource->willFollowRedirect(newRequest, redirectResponse); |
130 } else { | 130 } else { |
131 m_resource->willNotFollowRedirect(); | 131 m_resource->willNotFollowRedirect(); |
132 if (m_loader) | 132 if (m_loader) |
133 didFail(nullptr, ResourceError::cancelledDueToAccessCheckError(newRe
quest.url())); | 133 didFail(nullptr, ResourceError::cancelledDueToAccessCheckError(newRe
quest.url())); |
134 } | 134 } |
135 } | 135 } |
136 | 136 |
137 void ResourceLoader::didReceiveCachedMetadata(WebURLLoader*, const char* data, i
nt length) | 137 void ResourceLoader::didReceiveCachedMetadata(WebURLLoader*, const char* data, i
nt length) |
138 { | 138 { |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnor
eHTTPStatusCodeErrors()) | 198 if (m_resource->response().httpStatusCode() < 400 || m_resource->shouldIgnor
eHTTPStatusCodeErrors()) |
199 return; | 199 return; |
200 didFail(nullptr, ResourceError::cancelledError(resourceResponse.url())); | 200 didFail(nullptr, ResourceError::cancelledError(resourceResponse.url())); |
201 } | 201 } |
202 | 202 |
203 void ResourceLoader::didReceiveResponse(WebURLLoader* loader, const WebURLRespon
se& response) | 203 void ResourceLoader::didReceiveResponse(WebURLLoader* loader, const WebURLRespon
se& response) |
204 { | 204 { |
205 didReceiveResponse(loader, response, nullptr); | 205 didReceiveResponse(loader, response, nullptr); |
206 } | 206 } |
207 | 207 |
208 void ResourceLoader::didReceiveData(WebURLLoader*, const char* data, int length,
int encodedDataLength) | 208 void ResourceLoader::didReceiveData(WebURLLoader*, const char* data, int length,
int encodedDataLength, int encodedBodyLength) |
209 { | 209 { |
210 RELEASE_ASSERT(length >= 0); | 210 RELEASE_ASSERT(length >= 0); |
211 m_fetcher->didReceiveData(m_resource.get(), data, length, encodedDataLength)
; | 211 m_fetcher->didReceiveData(m_resource.get(), data, length, encodedDataLength)
; |
| 212 m_resource->addToEncodedBodyLength(encodedBodyLength); |
| 213 m_resource->addToDecodedBodyLength(length); |
212 m_resource->appendData(data, length); | 214 m_resource->appendData(data, length); |
213 } | 215 } |
214 | 216 |
215 void ResourceLoader::didFinishLoadingFirstPartInMultipart() | 217 void ResourceLoader::didFinishLoadingFirstPartInMultipart() |
216 { | 218 { |
217 m_fetcher->didFinishLoading(m_resource.get(), 0, WebURLLoaderClient::kUnknow
nEncodedDataLength, ResourceFetcher::DidFinishFirstPartInMultipart); | 219 m_fetcher->didFinishLoading(m_resource.get(), 0, WebURLLoaderClient::kUnknow
nEncodedDataLength, ResourceFetcher::DidFinishFirstPartInMultipart); |
218 } | 220 } |
219 | 221 |
220 void ResourceLoader::didFinishLoading(WebURLLoader*, double finishTime, int64_t
encodedDataLength) | 222 void ResourceLoader::didFinishLoading(WebURLLoader*, double finishTime, int64_t
encodedDataLength) |
221 { | 223 { |
(...skipping 26 matching lines...) Expand all Loading... |
248 return; | 250 return; |
249 if (errorOut.reason) { | 251 if (errorOut.reason) { |
250 didFail(0, errorOut); | 252 didFail(0, errorOut); |
251 return; | 253 return; |
252 } | 254 } |
253 didReceiveResponse(0, responseOut); | 255 didReceiveResponse(0, responseOut); |
254 if (!m_loader) | 256 if (!m_loader) |
255 return; | 257 return; |
256 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse()
.resourceLoadInfo(); | 258 RefPtr<ResourceLoadInfo> resourceLoadInfo = responseOut.toResourceResponse()
.resourceLoadInfo(); |
257 int64_t encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedData
Length : WebURLLoaderClient::kUnknownEncodedDataLength; | 259 int64_t encodedDataLength = resourceLoadInfo ? resourceLoadInfo->encodedData
Length : WebURLLoaderClient::kUnknownEncodedDataLength; |
| 260 DCHECK_GE(responseOut.toResourceResponse().encodedBodyLength(), 0); |
258 | 261 |
259 // Follow the async case convention of not calling didReceiveData or | 262 // Follow the async case convention of not calling didReceiveData or |
260 // appending data to m_resource if the response body is empty. Copying the | 263 // appending data to m_resource if the response body is empty. Copying the |
261 // empty buffer is a noop in most cases, but is destructive in the case of | 264 // empty buffer is a noop in most cases, but is destructive in the case of |
262 // a 304, where it will overwrite the cached data we should be reusing. | 265 // a 304, where it will overwrite the cached data we should be reusing. |
263 if (dataOut.size()) { | 266 if (dataOut.size()) { |
264 m_fetcher->didReceiveData(m_resource.get(), dataOut.data(), dataOut.size
(), encodedDataLength); | 267 m_fetcher->didReceiveData(m_resource.get(), dataOut.data(), dataOut.size
(), encodedDataLength); |
265 m_resource->setResourceBuffer(dataOut); | 268 m_resource->setResourceBuffer(dataOut); |
266 } | 269 } |
267 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); | 270 didFinishLoading(0, monotonicallyIncreasingTime(), encodedDataLength); |
268 } | 271 } |
269 | 272 |
270 } // namespace blink | 273 } // namespace blink |
OLD | NEW |