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 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 | 363 |
364 // All possible events have fired and we're done, no more pending activity. | 364 // All possible events have fired and we're done, no more pending activity. |
365 ThrottlingController::finishReader(executionContext(), this, finalStep); | 365 ThrottlingController::finishReader(executionContext(), this, finalStep); |
366 } | 366 } |
367 | 367 |
368 void FileReader::result(StringOrArrayBuffer& resultAttribute) const | 368 void FileReader::result(StringOrArrayBuffer& resultAttribute) const |
369 { | 369 { |
370 if (!m_loader || m_error) | 370 if (!m_loader || m_error) |
371 return; | 371 return; |
372 | 372 |
373 if (m_readType == FileReaderLoader::ReadAsArrayBuffer) | 373 if (m_readType == FileReaderLoader::ReadAsArrayBuffer) { |
374 resultAttribute.setArrayBuffer(m_loader->arrayBufferResult()); | 374 // FIXME(crbug.com/536816): |
375 else | 375 // In on-going work for crbug.com/536816 the code was left in this state |
| 376 // to avoid changing pre-existing behavior, but we may want to revisit |
| 377 // this code to determine the proper course of action for cases where |
| 378 // arrayBufferResultOrNull() returns a nullptr, presumably due to a |
| 379 // memory allocation failure. Would it be aprropriate to throw a |
| 380 // RangeError DOM exception from here? Should we cancel the setting |
| 381 // of resultAttribute instead of setting it to null? |
| 382 resultAttribute.setArrayBuffer(m_loader->arrayBufferResultOrNull()); |
| 383 } else { |
376 resultAttribute.setString(m_loader->stringResult()); | 384 resultAttribute.setString(m_loader->stringResult()); |
| 385 } |
377 } | 386 } |
378 | 387 |
379 void FileReader::terminate() | 388 void FileReader::terminate() |
380 { | 389 { |
381 if (m_loader) { | 390 if (m_loader) { |
382 m_loader->cancel(); | 391 m_loader->cancel(); |
383 m_loader = nullptr; | 392 m_loader = nullptr; |
384 } | 393 } |
385 m_state = DONE; | 394 m_state = DONE; |
386 m_loadingState = LoadingStateNone; | 395 m_loadingState = LoadingStateNone; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 } | 478 } |
470 | 479 |
471 DEFINE_TRACE(FileReader) | 480 DEFINE_TRACE(FileReader) |
472 { | 481 { |
473 visitor->trace(m_error); | 482 visitor->trace(m_error); |
474 RefCountedGarbageCollectedEventTargetWithInlineData<FileReader>::trace(visit
or); | 483 RefCountedGarbageCollectedEventTargetWithInlineData<FileReader>::trace(visit
or); |
475 ActiveDOMObject::trace(visitor); | 484 ActiveDOMObject::trace(visitor); |
476 } | 485 } |
477 | 486 |
478 } // namespace blink | 487 } // namespace blink |
OLD | NEW |