Chromium Code Reviews| Index: net/base/upload_file_element_reader.cc |
| diff --git a/net/base/upload_file_element_reader.cc b/net/base/upload_file_element_reader.cc |
| index d1f2a12ac8cd13c6d5037032f13cdd98baf2ea03..6f7778c4a593b8e1219f9c1ef031d21d67089392 100644 |
| --- a/net/base/upload_file_element_reader.cc |
| +++ b/net/base/upload_file_element_reader.cc |
| @@ -12,6 +12,10 @@ |
| #include "net/base/io_buffer.h" |
| #include "net/base/net_errors.h" |
| +#if defined(OS_ANDROID) |
| +#include "net/android/content_uri_utils.h" |
| +#endif |
| + |
| namespace net { |
| namespace { |
| @@ -45,6 +49,14 @@ int InitInternal(const base::FilePath& path, |
| } |
| } |
| +#if defined(OS_ANDROID) |
| + int64 length = std::max(0ll, GetContentUrlLengthSync(path)); |
|
kinuko
2013/10/31 06:10:51
Can this part be factored out as a separate static
joth
2013/10/31 06:42:39
+1
Maybe even, bundling this logic into file_util
qinmin
2013/11/05 01:41:31
Done. GetFileInfo() should work for content url no
|
| + if (file_stream.get() && length > 0 && |
| + range_offset < static_cast<uint64>(length)) { |
|
mmenke
2013/10/31 15:07:06
This class is being modified to handle errors diff
qinmin
2013/11/05 01:41:31
Done.
|
| + // Compensate for the offset. |
| + length = std::min(length - range_offset, range_length); |
| + } |
| +#else |
| int64 length = 0; |
| if (file_stream.get() && |
| file_util::GetFileSize(path, &length) && |
| @@ -52,6 +64,7 @@ int InitInternal(const base::FilePath& path, |
| // Compensate for the offset. |
| length = std::min(length - range_offset, range_length); |
| } |
| +#endif |
| *out_content_length = length; |
| out_file_stream->reset(file_stream.release()); |