Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 167 // Set m_totalBytes and allocate a buffer based on the specified range. | 167 // Set m_totalBytes and allocate a buffer based on the specified range. |
| 168 total_bytes_ = 1LL + range_end_ - range_start_; | 168 total_bytes_ = 1LL + range_end_ - range_start_; |
| 169 initial_buffer_length = total_bytes_; | 169 initial_buffer_length = total_bytes_; |
| 170 } else { | 170 } else { |
| 171 // Nothing is known about the size of the resource. Normalize | 171 // Nothing is known about the size of the resource. Normalize |
| 172 // m_totalBytes to -1 and initialize the buffer for receiving with the | 172 // m_totalBytes to -1 and initialize the buffer for receiving with the |
| 173 // default size. | 173 // default size. |
| 174 total_bytes_ = -1; | 174 total_bytes_ = -1; |
| 175 } | 175 } |
| 176 | 176 |
| 177 ASSERT(!raw_data_); | 177 DCHECK(!raw_data_); |
| 178 | 178 |
| 179 if (read_type_ != kReadByClient) { | 179 if (read_type_ != kReadByClient) { |
| 180 // Check that we can cast to unsigned since we have to do | 180 // Check that we can cast to unsigned since we have to do |
| 181 // so to call ArrayBuffer's create function. | 181 // so to call ArrayBuffer's create function. |
| 182 // FIXME: Support reading more than the current size limit of ArrayBuffer. | 182 // FIXME: Support reading more than the current size limit of ArrayBuffer. |
| 183 if (initial_buffer_length > std::numeric_limits<unsigned>::max()) { | 183 if (initial_buffer_length > std::numeric_limits<unsigned>::max()) { |
| 184 Failed(FileError::kNotReadableErr); | 184 Failed(FileError::kNotReadableErr); |
| 185 return; | 185 return; |
| 186 } | 186 } |
| 187 | 187 |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 200 // Total size is known. Set m_rawData to ignore overflowed data. | 200 // Total size is known. Set m_rawData to ignore overflowed data. |
| 201 raw_data_->SetVariableCapacity(false); | 201 raw_data_->SetVariableCapacity(false); |
| 202 } | 202 } |
| 203 } | 203 } |
| 204 | 204 |
| 205 if (client_) | 205 if (client_) |
| 206 client_->DidStartLoading(); | 206 client_->DidStartLoading(); |
| 207 } | 207 } |
| 208 | 208 |
| 209 void FileReaderLoader::DidReceiveData(const char* data, unsigned data_length) { | 209 void FileReaderLoader::DidReceiveData(const char* data, unsigned data_length) { |
| 210 ASSERT(data); | 210 DCHECK(data); |
| 211 | 211 |
| 212 // Bail out if we already encountered an error. | 212 // Bail out if we already encountered an error. |
| 213 if (error_code_) | 213 if (error_code_) |
| 214 return; | 214 return; |
| 215 | 215 |
| 216 if (read_type_ == kReadByClient) { | 216 if (read_type_ == kReadByClient) { |
| 217 bytes_loaded_ += data_length; | 217 bytes_loaded_ += data_length; |
| 218 | 218 |
| 219 if (client_) | 219 if (client_) |
| 220 client_->DidReceiveDataForClient(data, data_length); | 220 client_->DidReceiveDataForClient(data, data_length); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 277 case 403: | 277 case 403: |
| 278 return FileError::kSecurityErr; | 278 return FileError::kSecurityErr; |
| 279 case 404: | 279 case 404: |
| 280 return FileError::kNotFoundErr; | 280 return FileError::kNotFoundErr; |
| 281 default: | 281 default: |
| 282 return FileError::kNotReadableErr; | 282 return FileError::kNotReadableErr; |
| 283 } | 283 } |
| 284 } | 284 } |
| 285 | 285 |
| 286 DOMArrayBuffer* FileReaderLoader::ArrayBufferResult() { | 286 DOMArrayBuffer* FileReaderLoader::ArrayBufferResult() { |
| 287 ASSERT(read_type_ == kReadAsArrayBuffer); | 287 DCHECK_EQ(read_type_, kReadAsArrayBuffer); |
| 288 | 288 |
| 289 // If the loading is not started or an error occurs, return an empty result. | 289 // If the loading is not started or an error occurs, return an empty result. |
| 290 if (!raw_data_ || error_code_) | 290 if (!raw_data_ || error_code_) |
| 291 return nullptr; | 291 return nullptr; |
| 292 | 292 |
| 293 if (array_buffer_result_) | 293 if (array_buffer_result_) |
| 294 return array_buffer_result_; | 294 return array_buffer_result_; |
| 295 | 295 |
| 296 DOMArrayBuffer* result = DOMArrayBuffer::Create(raw_data_->ToArrayBuffer()); | 296 DOMArrayBuffer* result = DOMArrayBuffer::Create(raw_data_->ToArrayBuffer()); |
| 297 if (finished_loading_) { | 297 if (finished_loading_) { |
| 298 array_buffer_result_ = result; | 298 array_buffer_result_ = result; |
| 299 } | 299 } |
| 300 return result; | 300 return result; |
| 301 } | 301 } |
| 302 | 302 |
| 303 String FileReaderLoader::StringResult() { | 303 String FileReaderLoader::StringResult() { |
| 304 ASSERT(read_type_ != kReadAsArrayBuffer && read_type_ != kReadByClient); | 304 DCHECK(read_type_ != kReadAsArrayBuffer && read_type_ != kReadByClient); |
|
tkent
2017/04/09 23:00:20
Split this into two.
DCHECK_NE(read_type_, kReadAs
Hwanseung Lee
2017/04/10 15:01:32
Done.
| |
| 305 | 305 |
| 306 // If the loading is not started or an error occurs, return an empty result. | 306 // If the loading is not started or an error occurs, return an empty result. |
| 307 if (!raw_data_ || error_code_) | 307 if (!raw_data_ || error_code_) |
| 308 return string_result_; | 308 return string_result_; |
| 309 | 309 |
| 310 // If already converted from the raw data, return the result now. | 310 // If already converted from the raw data, return the result now. |
| 311 if (is_raw_data_converted_) | 311 if (is_raw_data_converted_) |
| 312 return string_result_; | 312 return string_result_; |
| 313 | 313 |
| 314 switch (read_type_) { | 314 switch (read_type_) { |
| 315 case kReadAsArrayBuffer: | 315 case kReadAsArrayBuffer: |
| 316 // No conversion is needed. | 316 // No conversion is needed. |
| 317 break; | 317 break; |
| 318 case kReadAsBinaryString: | 318 case kReadAsBinaryString: |
| 319 string_result_ = raw_data_->ToString(); | 319 string_result_ = raw_data_->ToString(); |
| 320 is_raw_data_converted_ = true; | 320 is_raw_data_converted_ = true; |
| 321 break; | 321 break; |
| 322 case kReadAsText: | 322 case kReadAsText: |
| 323 ConvertToText(); | 323 ConvertToText(); |
| 324 break; | 324 break; |
| 325 case kReadAsDataURL: | 325 case kReadAsDataURL: |
| 326 // Partial data is not supported when reading as data URL. | 326 // Partial data is not supported when reading as data URL. |
| 327 if (finished_loading_) | 327 if (finished_loading_) |
| 328 ConvertToDataURL(); | 328 ConvertToDataURL(); |
| 329 break; | 329 break; |
| 330 default: | 330 default: |
| 331 ASSERT_NOT_REACHED(); | 331 NOTREACHED(); |
| 332 } | 332 } |
| 333 | 333 |
| 334 return string_result_; | 334 return string_result_; |
| 335 } | 335 } |
| 336 | 336 |
| 337 void FileReaderLoader::ConvertToText() { | 337 void FileReaderLoader::ConvertToText() { |
| 338 is_raw_data_converted_ = true; | 338 is_raw_data_converted_ = true; |
| 339 | 339 |
| 340 if (!bytes_loaded_) { | 340 if (!bytes_loaded_) { |
| 341 string_result_ = ""; | 341 string_result_ = ""; |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 383 | 383 |
| 384 string_result_ = builder.ToString(); | 384 string_result_ = builder.ToString(); |
| 385 } | 385 } |
| 386 | 386 |
| 387 void FileReaderLoader::SetEncoding(const String& encoding) { | 387 void FileReaderLoader::SetEncoding(const String& encoding) { |
| 388 if (!encoding.IsEmpty()) | 388 if (!encoding.IsEmpty()) |
| 389 encoding_ = WTF::TextEncoding(encoding); | 389 encoding_ = WTF::TextEncoding(encoding); |
| 390 } | 390 } |
| 391 | 391 |
| 392 } // namespace blink | 392 } // namespace blink |
| OLD | NEW |