Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2549)

Unified Diff: base/file_util_proxy.cc

Issue 7066067: Support creating temporary files for sync file operations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: typo Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/file_util_proxy.cc
diff --git a/base/file_util_proxy.cc b/base/file_util_proxy.cc
index 1d5b9cc3cea8ca3b11d232c2a10f87b5c5dba582..0435b112e8ee09f294497254ee24795b53292e75 100644
--- a/base/file_util_proxy.cc
+++ b/base/file_util_proxy.cc
@@ -5,6 +5,7 @@
#include "base/file_util_proxy.h"
#include "base/message_loop_proxy.h"
+#include "base/platform_file.h"
// TODO(jianli): Move the code from anonymous namespace to base namespace so
// that all of the base:: prefixes would be unnecessary.
@@ -167,8 +168,10 @@ class RelayCreateTemporary : public MessageLoopRelay {
public:
RelayCreateTemporary(
scoped_refptr<base::MessageLoopProxy> message_loop_proxy,
+ int file_flags,
base::FileUtilProxy::CreateTemporaryCallback* callback)
: message_loop_proxy_(message_loop_proxy),
+ file_flags_(file_flags),
callback_(callback),
file_handle_(base::kInvalidPlatformFileValue) {
DCHECK(callback);
@@ -185,15 +188,17 @@ class RelayCreateTemporary : public MessageLoopRelay {
// that returns a FilePath and a PlatformFile.
file_util::CreateTemporaryFile(&file_path_);
- // Use a fixed set of flags that are appropriate for writing to a temporary
- // file from the IO thread using a net::FileStream.
- int file_flags =
- base::PLATFORM_FILE_CREATE_ALWAYS |
- base::PLATFORM_FILE_WRITE |
- base::PLATFORM_FILE_ASYNC |
- base::PLATFORM_FILE_TEMPORARY;
+ if (!(file_flags_ & base::PLATFORM_FILE_WRITE) ||
+ !(file_flags_ & base::PLATFORM_FILE_TEMPORARY) ||
+ (!(file_flags_ & base::PLATFORM_FILE_CREATE_ALWAYS) &&
+ !(file_flags_ & base::PLATFORM_FILE_CREATE) &&
+ !(file_flags_ & base::PLATFORM_FILE_OPEN_ALWAYS))) {
+ LOG(DFATAL) << "Invalid file_flags for CreateTemporary: " << file_flags_;
+ set_error_code(base::PLATFORM_FILE_ERROR_FAILED);
+ return;
+ }
base::PlatformFileError error_code = base::PLATFORM_FILE_OK;
- file_handle_ = base::CreatePlatformFile(file_path_, file_flags,
+ file_handle_ = base::CreatePlatformFile(file_path_, file_flags_,
NULL, &error_code);
set_error_code(error_code);
}
@@ -206,6 +211,7 @@ class RelayCreateTemporary : public MessageLoopRelay {
private:
scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
+ int file_flags_;
base::FileUtilProxy::CreateTemporaryCallback* callback_;
base::PlatformFile file_handle_;
FilePath file_path_;
@@ -742,9 +748,12 @@ bool FileUtilProxy::CreateOrOpen(
// static
bool FileUtilProxy::CreateTemporary(
scoped_refptr<MessageLoopProxy> message_loop_proxy,
+ int file_flags,
CreateTemporaryCallback* callback) {
return Start(FROM_HERE, message_loop_proxy,
- new RelayCreateTemporary(message_loop_proxy, callback));
+ new RelayCreateTemporary(message_loop_proxy,
+ file_flags,
+ callback));
}
// static

Powered by Google App Engine
This is Rietveld 408576698