| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "net/test/url_request/url_request_slow_download_job.h" | 5 #include "net/test/url_request/url_request_slow_download_job.h" | 
| 6 | 6 | 
| 7 #include "base/bind.h" | 7 #include "base/bind.h" | 
| 8 #include "base/compiler_specific.h" | 8 #include "base/compiler_specific.h" | 
| 9 #include "base/location.h" | 9 #include "base/location.h" | 
| 10 #include "base/logging.h" | 10 #include "base/logging.h" | 
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 172       buf->data()[i] = '*'; | 172       buf->data()[i] = '*'; | 
| 173     } | 173     } | 
| 174     *bytes_written = bytes_to_write; | 174     *bytes_written = bytes_to_write; | 
| 175     bytes_already_sent_ += bytes_to_write; | 175     bytes_already_sent_ += bytes_to_write; | 
| 176     return BUFFER_FILLED; | 176     return BUFFER_FILLED; | 
| 177   } | 177   } | 
| 178 | 178 | 
| 179   return REQUEST_COMPLETE; | 179   return REQUEST_COMPLETE; | 
| 180 } | 180 } | 
| 181 | 181 | 
| 182 bool URLRequestSlowDownloadJob::ReadRawData(IOBuffer* buf, | 182 int URLRequestSlowDownloadJob::ReadRawData(IOBuffer* buf, int buf_size) { | 
| 183                                             int buf_size, |  | 
| 184                                             int* bytes_read) { |  | 
| 185   if (base::LowerCaseEqualsASCII(kFinishDownloadUrl, | 183   if (base::LowerCaseEqualsASCII(kFinishDownloadUrl, | 
| 186                                  request_->url().spec().c_str()) || | 184                                  request_->url().spec().c_str()) || | 
| 187       base::LowerCaseEqualsASCII(kErrorDownloadUrl, | 185       base::LowerCaseEqualsASCII(kErrorDownloadUrl, | 
| 188                                  request_->url().spec().c_str())) { | 186                                  request_->url().spec().c_str())) { | 
| 189     VLOG(10) << __FUNCTION__ << " called w/ kFinish/ErrorDownloadUrl."; | 187     VLOG(10) << __FUNCTION__ << " called w/ kFinish/ErrorDownloadUrl."; | 
| 190     *bytes_read = 0; | 188     return 0; | 
| 191     return true; |  | 
| 192   } | 189   } | 
| 193 | 190 | 
| 194   VLOG(10) << __FUNCTION__ << " called at position " << bytes_already_sent_ | 191   VLOG(10) << __FUNCTION__ << " called at position " << bytes_already_sent_ | 
| 195            << " in the stream."; | 192            << " in the stream."; | 
| 196   ReadStatus status = FillBufferHelper(buf, buf_size, bytes_read); | 193   int bytes_read = 0; | 
|  | 194   ReadStatus status = FillBufferHelper(buf, buf_size, &bytes_read); | 
| 197   switch (status) { | 195   switch (status) { | 
| 198     case BUFFER_FILLED: | 196     case BUFFER_FILLED: | 
| 199       return true; | 197     case REQUEST_COMPLETE: | 
|  | 198       return bytes_read; | 
| 200     case REQUEST_BLOCKED: | 199     case REQUEST_BLOCKED: | 
| 201       buffer_ = buf; | 200       buffer_ = buf; | 
| 202       buffer_size_ = buf_size; | 201       buffer_size_ = buf_size; | 
| 203       SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0)); |  | 
| 204       base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 202       base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 
| 205           FROM_HERE, base::Bind(&URLRequestSlowDownloadJob::CheckDoneStatus, | 203           FROM_HERE, base::Bind(&URLRequestSlowDownloadJob::CheckDoneStatus, | 
| 206                                 weak_factory_.GetWeakPtr()), | 204                                 weak_factory_.GetWeakPtr()), | 
| 207           base::TimeDelta::FromMilliseconds(100)); | 205           base::TimeDelta::FromMilliseconds(100)); | 
| 208       return false; | 206       return ERR_IO_PENDING; | 
| 209     case REQUEST_COMPLETE: |  | 
| 210       *bytes_read = 0; |  | 
| 211       return true; |  | 
| 212   } | 207   } | 
| 213   NOTREACHED(); | 208   NOTREACHED(); | 
| 214   return true; | 209   return OK; | 
| 215 } | 210 } | 
| 216 | 211 | 
| 217 void URLRequestSlowDownloadJob::CheckDoneStatus() { | 212 void URLRequestSlowDownloadJob::CheckDoneStatus() { | 
| 218   if (should_finish_download_) { | 213   if (should_finish_download_) { | 
| 219     VLOG(10) << __FUNCTION__ << " called w/ should_finish_download_ set."; | 214     VLOG(10) << __FUNCTION__ << " called w/ should_finish_download_ set."; | 
| 220     DCHECK(NULL != buffer_.get()); | 215     DCHECK(NULL != buffer_.get()); | 
| 221     int bytes_written = 0; | 216     int bytes_written = 0; | 
| 222     ReadStatus status = | 217     ReadStatus status = | 
| 223         FillBufferHelper(buffer_.get(), buffer_size_, &bytes_written); | 218         FillBufferHelper(buffer_.get(), buffer_size_, &bytes_written); | 
| 224     DCHECK_EQ(BUFFER_FILLED, status); | 219     DCHECK_EQ(BUFFER_FILLED, status); | 
| 225     buffer_ = NULL;  // Release the reference. | 220     buffer_ = NULL;  // Release the reference. | 
| 226     SetStatus(URLRequestStatus()); | 221     ReadRawDataComplete(bytes_written); | 
| 227     NotifyReadComplete(bytes_written); |  | 
| 228   } else if (should_error_download_) { | 222   } else if (should_error_download_) { | 
| 229     VLOG(10) << __FUNCTION__ << " called w/ should_finish_ownload_ set."; | 223     VLOG(10) << __FUNCTION__ << " called w/ should_finish_ownload_ set."; | 
| 230     NotifyDone( | 224     ReadRawDataComplete(ERR_CONNECTION_RESET); | 
| 231         URLRequestStatus(URLRequestStatus::FAILED, ERR_CONNECTION_RESET)); |  | 
| 232   } else { | 225   } else { | 
| 233     base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 226     base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 
| 234         FROM_HERE, base::Bind(&URLRequestSlowDownloadJob::CheckDoneStatus, | 227         FROM_HERE, base::Bind(&URLRequestSlowDownloadJob::CheckDoneStatus, | 
| 235                               weak_factory_.GetWeakPtr()), | 228                               weak_factory_.GetWeakPtr()), | 
| 236         base::TimeDelta::FromMilliseconds(100)); | 229         base::TimeDelta::FromMilliseconds(100)); | 
| 237   } | 230   } | 
| 238 } | 231 } | 
| 239 | 232 | 
| 240 // Public virtual version. | 233 // Public virtual version. | 
| 241 void URLRequestSlowDownloadJob::GetResponseInfo(HttpResponseInfo* info) { | 234 void URLRequestSlowDownloadJob::GetResponseInfo(HttpResponseInfo* info) { | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 278   info->headers = new HttpResponseHeaders(raw_headers); | 271   info->headers = new HttpResponseHeaders(raw_headers); | 
| 279 } | 272 } | 
| 280 | 273 | 
| 281 bool URLRequestSlowDownloadJob::GetMimeType(std::string* mime_type) const { | 274 bool URLRequestSlowDownloadJob::GetMimeType(std::string* mime_type) const { | 
| 282   HttpResponseInfo info; | 275   HttpResponseInfo info; | 
| 283   GetResponseInfoConst(&info); | 276   GetResponseInfoConst(&info); | 
| 284   return info.headers.get() && info.headers->GetMimeType(mime_type); | 277   return info.headers.get() && info.headers->GetMimeType(mime_type); | 
| 285 } | 278 } | 
| 286 | 279 | 
| 287 }  // namespace net | 280 }  // namespace net | 
| OLD | NEW | 
|---|