diff options
author | paivanof@gmail.com <paivanof@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-06 00:29:51 +0000 |
---|---|---|
committer | paivanof@gmail.com <paivanof@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-06 00:29:51 +0000 |
commit | aab1b9ead19f21af4f752c4a52beed65009d96fb (patch) | |
tree | 3679bc3c3bd80678a9fb2ab383aa6834679506d0 /chrome/browser/sessions | |
parent | 25524c044d4aefd6902d4245b66980c46669e145 (diff) | |
download | chromium_src-aab1b9ead19f21af4f752c4a52beed65009d96fb.zip chromium_src-aab1b9ead19f21af4f752c4a52beed65009d96fb.tar.gz chromium_src-aab1b9ead19f21af4f752c4a52beed65009d96fb.tar.bz2 |
net: Implement canceling of all async operations in FileStream.
Canceling of async operations allows to not wait for their completion
in FileStream's destructor. Other related changes include:
- Got rid of FileStream::Close() and FileStream::CloseSync() methods because
reuse of FileStream object doesn't make much sense, it should be destroyed
instead.
- Changed FileStream to always acquire ownership of the PlatformFile it was
given. Fixed usages of FileStream where no ownership was assumed, introduced
new helper functions in base/platform_file.h on the way.
- FileStream's destructor now always closes the file. If file was opened with
PLATFORM_FILE_ASYNC then actual closing is done asynchronously, destructor
doesn't wait for that and returns immediately. When file was opened without
PLATFORM_FILE_ASYNC closing is done synchronously and the thread doing that
should be allowed to do IO operations.
- Implementation of FileStream is refactored. FileStream is now just a wrapper
around internal object that does all actual work and that can be easily
orphaned in the destructor to not block on the actual file descriptor closing.
All platform-independent code is extracted into a special file and amount of
platform-dependent code is minimized.
BUG=115067, 112474
TEST=net_unittests
Review URL: https://chromiumcodereview.appspot.com/10701050
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166091 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sessions')
-rw-r--r-- | chrome/browser/sessions/session_backend.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/chrome/browser/sessions/session_backend.cc b/chrome/browser/sessions/session_backend.cc index 95cc5d1..8540a79 100644 --- a/chrome/browser/sessions/session_backend.cc +++ b/chrome/browser/sessions/session_backend.cc @@ -349,9 +349,10 @@ bool SessionBackend::AppendCommandsToFile(net::FileStream* file, SessionBackend::~SessionBackend() { if (current_session_file_.get()) { - // Close() performs file IO. crbug.com/112512. + // Destructor performs file IO because file is open in sync mode. + // crbug.com/112512. base::ThreadRestrictions::ScopedAllowIO allow_io; - current_session_file_->CloseSync(); + current_session_file_.reset(); } } |