Chromium Code Reviews| Index: net/base/file_stream_context.cc |
| diff --git a/net/base/file_stream_context.cc b/net/base/file_stream_context.cc |
| index 2e774752045d9c0d0e6a8c82dc3dfc7a6bb9c366..cfa8abfb59bfeeb5cb3b3fd1ef153b03c94e3713 100644 |
| --- a/net/base/file_stream_context.cc |
| +++ b/net/base/file_stream_context.cc |
| @@ -11,6 +11,10 @@ |
| #include "net/base/file_stream_net_log_parameters.h" |
| #include "net/base/net_errors.h" |
| +#if defined(OS_ANDROID) |
| +#include "base/android/content_uri_utils.h" |
| +#endif |
| + |
| namespace { |
| void CallInt64ToInt(const net::CompletionCallback& callback, int64 result) { |
| @@ -193,13 +197,24 @@ void FileStream::Context::BeginOpenEvent(const base::FilePath& path) { |
| FileStream::Context::OpenResult FileStream::Context::OpenFileImpl( |
| const base::FilePath& path, int open_flags) { |
| + base::PlatformFile file; |
| +#if defined(OS_ANDROID) |
| + if (path.IsContentUrl()) { |
| + // Check that only Read flags are set. |
| + DCHECK_EQ(open_flags & ~base::PLATFORM_FILE_ASYNC, |
| + base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ); |
| + file = base::OpenContentUrlForRead(path); |
| + } else { |
| +#endif // defined(OS_ANDROID) |
| // FileStream::Context actually closes the file asynchronously, independently |
| // from FileStream's destructor. It can cause problems for users wanting to |
| // delete the file right after FileStream deletion. Thus we are always |
| // adding SHARE_DELETE flag to accommodate such use case. |
| open_flags |= base::PLATFORM_FILE_SHARE_DELETE; |
| - base::PlatformFile file = |
| - base::CreatePlatformFile(path, open_flags, NULL, NULL); |
| + file = base::CreatePlatformFile(path, open_flags, NULL, NULL); |
|
mmenke
2013/11/05 15:36:04
nit: Think this is easier to read if this block i
qinmin
2013/11/07 01:13:35
Done.
|
| +#if defined(OS_ANDROID) |
| + } |
| +#endif // defined(OS_ANDROID) |
|
joth
2013/11/06 01:49:17
just saw in another review [1], you can avoid the
qinmin
2013/11/07 01:13:35
Done.
|
| if (file == base::kInvalidPlatformFileValue) |
| return OpenResult(file, IOResult::FromOSError(GetLastErrno())); |