| Index: net/base/file_stream_posix.cc | 
| diff --git a/net/base/file_stream_posix.cc b/net/base/file_stream_posix.cc | 
| index a4c5b3cc27fdc08b87bb77ecd04878ab7bd85b62..e947a6e5fa38f160dc1e190ecccb17f12d908a2c 100644 | 
| --- a/net/base/file_stream_posix.cc | 
| +++ b/net/base/file_stream_posix.cc | 
| @@ -298,13 +298,8 @@ FileStream::FileStream() | 
| } | 
|  | 
| FileStream::FileStream(base::PlatformFile file, int flags) | 
| -    : file_(file), | 
| -      open_flags_(flags) { | 
| -  // If the file handle is opened with base::PLATFORM_FILE_ASYNC, we need to | 
| -  // make sure we will perform asynchronous File IO to it. | 
| -  if (flags & base::PLATFORM_FILE_ASYNC) { | 
| -    async_context_.reset(new AsyncContext()); | 
| -  } | 
| +    : file_(base::kInvalidPlatformFileValue) { | 
| +  Open(file, flags); | 
| } | 
|  | 
| FileStream::~FileStream() { | 
| @@ -323,6 +318,12 @@ void FileStream::Close() { | 
| } | 
| } | 
|  | 
| +void FileStream::Release() { | 
| +  // Abort any existing asynchronous operations. | 
| +  async_context_.reset(); | 
| +  file_ = base::kInvalidPlatformFileValue; | 
| +} | 
| + | 
| int FileStream::Open(const FilePath& path, int open_flags) { | 
| if (IsOpen()) { | 
| DLOG(FATAL) << "File is already open!"; | 
| @@ -344,6 +345,21 @@ int FileStream::Open(const FilePath& path, int open_flags) { | 
| return OK; | 
| } | 
|  | 
| +int FileStream::Open(base::PlatformFile file, int open_flags) { | 
| +  if (IsOpen()) { | 
| +    DLOG(FATAL) << "File is already open!"; | 
| +    return ERR_UNEXPECTED; | 
| +  } | 
| + | 
| +  open_flags_ = open_flags; | 
| +  file_ = file; | 
| + | 
| +  if (open_flags & base::PLATFORM_FILE_ASYNC) | 
| +    async_context_.reset(new AsyncContext()); | 
| + | 
| +  return OK; | 
| +} | 
| + | 
| bool FileStream::IsOpen() const { | 
| return file_ != base::kInvalidPlatformFileValue; | 
| } | 
| @@ -445,7 +461,7 @@ int64 FileStream::Truncate(int64 bytes) { | 
| if (!IsOpen()) | 
| return ERR_UNEXPECTED; | 
|  | 
| -  // We better be open for reading. | 
| +  // We better be open for writing. | 
| DCHECK(open_flags_ & base::PLATFORM_FILE_WRITE); | 
|  | 
| // Seek to the position to truncate from. | 
|  |