Chromium Code Reviews| Index: third_party/WebKit/Source/modules/fetch/FormDataBytesConsumer.cpp |
| diff --git a/third_party/WebKit/Source/modules/fetch/FormDataBytesConsumer.cpp b/third_party/WebKit/Source/modules/fetch/FormDataBytesConsumer.cpp |
| index 0e36d2d7df54c02992f8a87ea94caded250b6b30..4bc941250c8ba302f792ada7ac24d94d1cde9951 100644 |
| --- a/third_party/WebKit/Source/modules/fetch/FormDataBytesConsumer.cpp |
| +++ b/third_party/WebKit/Source/modules/fetch/FormDataBytesConsumer.cpp |
| @@ -118,22 +118,42 @@ class ComplexFormDataBytesConsumer final : public BytesConsumer { |
| case FormDataElement::data: |
| blobData->appendBytes(element.m_data.data(), element.m_data.size()); |
| break; |
| - case FormDataElement::encodedFile: |
| + case FormDataElement::encodedFile: { |
| + auto fileLength = element.m_fileLength; |
| + if (fileLength < 0) { |
| + if (!getFileSize(element.m_filename, fileLength)) { |
| + m_formData = nullptr; |
| + m_blobBytesConsumer = BytesConsumer::createErrored( |
| + Error("Cannot determine a file size")); |
| + return; |
| + } |
| + } |
| blobData->appendFile(element.m_filename, element.m_fileStart, |
| - element.m_fileLength, |
| + fileLength, |
| element.m_expectedFileModificationTime); |
| break; |
| + } |
| case FormDataElement::encodedBlob: |
| if (element.m_optionalBlobDataHandle) |
| blobData->appendBlob(element.m_optionalBlobDataHandle, 0, |
| element.m_optionalBlobDataHandle->size()); |
| break; |
| - case FormDataElement::encodedFileSystemURL: |
| - blobData->appendFileSystemURL( |
| - element.m_fileSystemURL, element.m_fileStart, |
| - element.m_fileLength, element.m_expectedFileModificationTime); |
| + case FormDataElement::encodedFileSystemURL: { |
| + auto fileLength = element.m_fileLength; |
| + if (fileLength < 0) { |
| + if (!getFileSize(element.m_filename, fileLength)) { |
|
hiroshige
2017/03/02 20:38:21
m_filename is not valid for encodedFileSystemURL.
yhirano
2017/03/23 06:18:06
Thanks, you're right.
I talked with tzik@, and it
|
| + m_formData = nullptr; |
| + m_blobBytesConsumer = BytesConsumer::createErrored( |
| + Error("Cannot determine a file size")); |
| + return; |
| + } |
| + } |
| + blobData->appendFileSystemURL(element.m_fileSystemURL, |
| + element.m_fileStart, fileLength, |
| + element.m_expectedFileModificationTime); |
| break; |
| } |
|
hiroshige
2017/03/02 20:38:21
nit: +2 indent. (Perhaps this is git cl format bug
yhirano
2017/03/23 06:18:06
Removed
|
| + } |
| } |
| // Here we handle m_formData->boundary() as a C-style string. See |
| // FormDataEncoder::generateUniqueBoundaryString. |