Index: base/file_util_proxy.cc |
=================================================================== |
--- base/file_util_proxy.cc (revision 61078) |
+++ base/file_util_proxy.cc (working copy) |
@@ -498,7 +498,7 @@ |
class RelayWrite : public MessageLoopRelay { |
public: |
RelayWrite(base::PlatformFile file, |
- long long offset, |
+ int64 offset, |
const char* buffer, |
int bytes_to_write, |
base::FileUtilProxy::ReadWriteCallback* callback) |
@@ -582,11 +582,11 @@ |
base::Time last_modified_time_; |
}; |
-class RelayTruncate : public RelayWithStatusCallback { |
+class RelayTruncatePlatformFile : public RelayWithStatusCallback { |
public: |
- RelayTruncate(base::PlatformFile file, |
- int64 length, |
- base::FileUtilProxy::StatusCallback* callback) |
+ RelayTruncatePlatformFile(base::PlatformFile file, |
+ int64 length, |
+ base::FileUtilProxy::StatusCallback* callback) |
: RelayWithStatusCallback(callback), |
file_(file), |
length_(length) { |
@@ -603,6 +603,39 @@ |
int64 length_; |
}; |
+class RelayTruncate : public RelayWithStatusCallback { |
+ public: |
+ RelayTruncate(const FilePath& path, |
+ int64 length, |
+ base::FileUtilProxy::StatusCallback* callback) |
+ : RelayWithStatusCallback(callback), |
+ path_(path), |
+ length_(length) { |
+ } |
+ |
+ protected: |
+ virtual void RunWork() { |
+ base::PlatformFileError error_code(base::PLATFORM_FILE_ERROR_FAILED); |
+ base::PlatformFile file = |
+ base::CreatePlatformFile( |
+ path_, |
+ base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_WRITE, |
+ NULL, |
+ &error_code); |
+ if (error_code != base::PLATFORM_FILE_OK) { |
+ set_error_code(error_code); |
+ return; |
+ } |
+ if (!base::TruncatePlatformFile(file, length_)) |
+ set_error_code(base::PLATFORM_FILE_ERROR_FAILED); |
+ base::ClosePlatformFile(file); |
+ } |
+ |
+ private: |
+ FilePath path_; |
+ int64 length_; |
+}; |
+ |
class RelayFlush : public RelayWithStatusCallback { |
public: |
RelayFlush(base::PlatformFile file, |
@@ -782,13 +815,23 @@ |
bool FileUtilProxy::Truncate( |
scoped_refptr<MessageLoopProxy> message_loop_proxy, |
PlatformFile file, |
- long long length, |
+ int64 length, |
StatusCallback* callback) { |
return Start(FROM_HERE, message_loop_proxy, |
- new RelayTruncate(file, length, callback)); |
+ new RelayTruncatePlatformFile(file, length, callback)); |
} |
// static |
+bool FileUtilProxy::Truncate( |
+ scoped_refptr<MessageLoopProxy> message_loop_proxy, |
+ const FilePath& path, |
+ int64 length, |
+ StatusCallback* callback) { |
+ return Start(FROM_HERE, message_loop_proxy, |
+ new RelayTruncate(path, length, callback)); |
+} |
+ |
+// static |
bool FileUtilProxy::Flush( |
scoped_refptr<MessageLoopProxy> message_loop_proxy, |
PlatformFile file, |