Chromium Code Reviews| Index: webkit/browser/blob/local_file_stream_reader.cc |
| diff --git a/webkit/browser/blob/local_file_stream_reader.cc b/webkit/browser/blob/local_file_stream_reader.cc |
| index 0686821ac2448a963e0ad106f97648386031fbb2..45a06368739d3dfc4d0ebe0dfcf483656dbb1e07 100644 |
| --- a/webkit/browser/blob/local_file_stream_reader.cc |
| +++ b/webkit/browser/blob/local_file_stream_reader.cc |
| @@ -14,6 +14,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 webkit_blob { |
| namespace { |
| @@ -56,6 +60,17 @@ int LocalFileStreamReader::Read(net::IOBuffer* buf, int buf_len, |
| int64 LocalFileStreamReader::GetLength( |
| const net::Int64CompletionCallback& callback) { |
| +#if defined(OS_ANDROID) |
| + if (file_path_.IsContentUrl()) { |
| + net::GetContentUrlLength( |
| + task_runner_.get(), |
| + file_path_, |
| + base::Bind(&LocalFileStreamReader::DidGetContentUrlLength, |
| + weak_factory_.GetWeakPtr(), |
| + callback)); |
| + return net::ERR_IO_PENDING; |
| + } |
| +#endif |
|
joth
2013/10/31 06:42:39
...again if file_util::GetFileInfo() knew how to d
qinmin
2013/11/05 01:41:31
Done.
|
| const bool posted = base::FileUtilProxy::GetFileInfo( |
| task_runner_.get(), |
| file_path_, |
| @@ -175,4 +190,16 @@ void LocalFileStreamReader::DidGetFileInfoForGetLength( |
| callback.Run(file_info.size); |
| } |
| +#if defined(OS_ANDROID) |
| +void LocalFileStreamReader::DidGetContentUrlLength( |
| + const net::Int64CompletionCallback& callback, |
| + int64 result) { |
| + if (result < 0) { |
| + callback.Run(net::ERR_FILE_NOT_FOUND); |
| + return; |
| + } |
| + callback.Run(result); |
| +} |
| +#endif |
| + |
| } // namespace webkit_blob |