Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "webkit/fileapi/file_writer_delegate.h" | 5 #include "webkit/fileapi/file_writer_delegate.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/file_util_proxy.h" | 9 #include "base/file_util_proxy.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 bool is_hsts_host) { | 162 bool is_hsts_host) { |
| 163 NOTREACHED(); | 163 NOTREACHED(); |
| 164 OnError(base::PLATFORM_FILE_ERROR_SECURITY); | 164 OnError(base::PLATFORM_FILE_ERROR_SECURITY); |
| 165 } | 165 } |
| 166 | 166 |
| 167 void FileWriterDelegate::OnResponseStarted(net::URLRequest* request) { | 167 void FileWriterDelegate::OnResponseStarted(net::URLRequest* request) { |
| 168 DCHECK_EQ(request_, request); | 168 DCHECK_EQ(request_, request); |
| 169 // file_stream_->Seek() blocks the IO thread. | 169 // file_stream_->Seek() blocks the IO thread. |
| 170 // See http://crbug.com/75548. | 170 // See http://crbug.com/75548. |
| 171 base::ThreadRestrictions::ScopedAllowIO allow_io; | 171 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 172 if (!request->status().is_success()) { | 172 if (!request->status().is_success() || request->GetResponseCode() != 200) { |
|
ericu
2012/01/05 05:47:20
Why is is_success true here, if the blob wasn't va
tzik
2012/01/05 06:59:45
Looking at other use of URLRequestStatus, !is_succ
| |
| 173 OnError(base::PLATFORM_FILE_ERROR_FAILED); | 173 OnError(base::PLATFORM_FILE_ERROR_FAILED); |
| 174 return; | 174 return; |
| 175 } | 175 } |
| 176 int64 error = file_stream_->Seek(net::FROM_BEGIN, offset_); | 176 int64 error = file_stream_->Seek(net::FROM_BEGIN, offset_); |
| 177 if (error != offset_) { | 177 if (error != offset_) { |
| 178 OnError(base::PLATFORM_FILE_ERROR_FAILED); | 178 OnError(base::PLATFORM_FILE_ERROR_FAILED); |
| 179 return; | 179 return; |
| 180 } | 180 } |
| 181 Read(); | 181 Read(); |
| 182 } | 182 } |
| 183 | 183 |
| 184 void FileWriterDelegate::OnReadCompleted(net::URLRequest* request, | 184 void FileWriterDelegate::OnReadCompleted(net::URLRequest* request, |
| 185 int bytes_read) { | 185 int bytes_read) { |
| 186 DCHECK_EQ(request_, request); | 186 DCHECK_EQ(request_, request); |
| 187 if (!request->status().is_success()) { | 187 if (!request->status().is_success()) { |
|
ericu
2012/01/05 05:47:20
Is it possible to get is_success == true, but requ
tzik
2012/01/05 06:59:45
The response code is invariant after header of the
| |
| 188 OnError(base::PLATFORM_FILE_ERROR_FAILED); | 188 OnError(base::PLATFORM_FILE_ERROR_FAILED); |
| 189 return; | 189 return; |
| 190 } | 190 } |
| 191 OnDataReceived(bytes_read); | 191 OnDataReceived(bytes_read); |
| 192 } | 192 } |
| 193 | 193 |
| 194 void FileWriterDelegate::Read() { | 194 void FileWriterDelegate::Read() { |
| 195 bytes_written_ = 0; | 195 bytes_written_ = 0; |
| 196 bytes_read_ = 0; | 196 bytes_read_ = 0; |
| 197 if (request_->Read(io_buffer_.get(), io_buffer_->size(), &bytes_read_)) { | 197 if (request_->Read(io_buffer_.get(), io_buffer_->size(), &bytes_read_)) { |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 318 | 318 |
| 319 FileSystemQuotaUtil* FileWriterDelegate::quota_util() const { | 319 FileSystemQuotaUtil* FileWriterDelegate::quota_util() const { |
| 320 DCHECK(file_system_operation_); | 320 DCHECK(file_system_operation_); |
| 321 DCHECK(file_system_operation_->file_system_context()); | 321 DCHECK(file_system_operation_->file_system_context()); |
| 322 DCHECK(file_system_operation_->file_system_operation_context()); | 322 DCHECK(file_system_operation_->file_system_operation_context()); |
| 323 return file_system_operation_->file_system_context()->GetQuotaUtil( | 323 return file_system_operation_->file_system_context()->GetQuotaUtil( |
| 324 file_system_operation_context()->src_type()); | 324 file_system_operation_context()->src_type()); |
| 325 } | 325 } |
| 326 | 326 |
| 327 } // namespace fileapi | 327 } // namespace fileapi |
| OLD | NEW |