| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "components/drive/file_system/truncate_operation.h" | 5 #include "components/drive/file_system/truncate_operation.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback_helpers.h" | 8 #include "base/callback_helpers.h" |
| 9 #include "base/files/file.h" | 9 #include "base/files/file.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 namespace drive { | 22 namespace drive { |
| 23 namespace file_system { | 23 namespace file_system { |
| 24 namespace { | 24 namespace { |
| 25 | 25 |
| 26 // Truncates the local file at |local_cache_path| to the |length| bytes, | 26 // Truncates the local file at |local_cache_path| to the |length| bytes, |
| 27 // then marks the resource is dirty on |cache|. | 27 // then marks the resource is dirty on |cache|. |
| 28 FileError TruncateOnBlockingPool(internal::ResourceMetadata* metadata, | 28 FileError TruncateOnBlockingPool(internal::ResourceMetadata* metadata, |
| 29 internal::FileCache* cache, | 29 internal::FileCache* cache, |
| 30 const std::string& local_id, | 30 const std::string& local_id, |
| 31 const base::FilePath& local_cache_path, | 31 const base::FilePath& local_cache_path, |
| 32 int64 length) { | 32 int64_t length) { |
| 33 DCHECK(metadata); | 33 DCHECK(metadata); |
| 34 DCHECK(cache); | 34 DCHECK(cache); |
| 35 | 35 |
| 36 scoped_ptr<base::ScopedClosureRunner> file_closer; | 36 scoped_ptr<base::ScopedClosureRunner> file_closer; |
| 37 FileError error = cache->OpenForWrite(local_id, &file_closer); | 37 FileError error = cache->OpenForWrite(local_id, &file_closer); |
| 38 if (error != FILE_ERROR_OK) | 38 if (error != FILE_ERROR_OK) |
| 39 return error; | 39 return error; |
| 40 | 40 |
| 41 base::File file(local_cache_path, | 41 base::File file(local_cache_path, |
| 42 base::File::FLAG_OPEN | base::File::FLAG_WRITE); | 42 base::File::FLAG_OPEN | base::File::FLAG_WRITE); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 68 metadata, | 68 metadata, |
| 69 cache, | 69 cache, |
| 70 temporary_file_directory)), | 70 temporary_file_directory)), |
| 71 weak_ptr_factory_(this) { | 71 weak_ptr_factory_(this) { |
| 72 } | 72 } |
| 73 | 73 |
| 74 TruncateOperation::~TruncateOperation() { | 74 TruncateOperation::~TruncateOperation() { |
| 75 } | 75 } |
| 76 | 76 |
| 77 void TruncateOperation::Truncate(const base::FilePath& file_path, | 77 void TruncateOperation::Truncate(const base::FilePath& file_path, |
| 78 int64 length, | 78 int64_t length, |
| 79 const FileOperationCallback& callback) { | 79 const FileOperationCallback& callback) { |
| 80 DCHECK(thread_checker_.CalledOnValidThread()); | 80 DCHECK(thread_checker_.CalledOnValidThread()); |
| 81 DCHECK(!callback.is_null()); | 81 DCHECK(!callback.is_null()); |
| 82 | 82 |
| 83 if (length < 0) { | 83 if (length < 0) { |
| 84 base::ThreadTaskRunnerHandle::Get()->PostTask( | 84 base::ThreadTaskRunnerHandle::Get()->PostTask( |
| 85 FROM_HERE, | 85 FROM_HERE, |
| 86 base::Bind(callback, FILE_ERROR_INVALID_OPERATION)); | 86 base::Bind(callback, FILE_ERROR_INVALID_OPERATION)); |
| 87 return; | 87 return; |
| 88 } | 88 } |
| 89 | 89 |
| 90 // TODO(kinaba): http://crbug.com/132780. | 90 // TODO(kinaba): http://crbug.com/132780. |
| 91 // Optimize the cases for small |length|, at least for |length| == 0. | 91 // Optimize the cases for small |length|, at least for |length| == 0. |
| 92 download_operation_->EnsureFileDownloadedByPath( | 92 download_operation_->EnsureFileDownloadedByPath( |
| 93 file_path, | 93 file_path, |
| 94 ClientContext(USER_INITIATED), | 94 ClientContext(USER_INITIATED), |
| 95 GetFileContentInitializedCallback(), | 95 GetFileContentInitializedCallback(), |
| 96 google_apis::GetContentCallback(), | 96 google_apis::GetContentCallback(), |
| 97 base::Bind(&TruncateOperation::TruncateAfterEnsureFileDownloadedByPath, | 97 base::Bind(&TruncateOperation::TruncateAfterEnsureFileDownloadedByPath, |
| 98 weak_ptr_factory_.GetWeakPtr(), length, callback)); | 98 weak_ptr_factory_.GetWeakPtr(), length, callback)); |
| 99 } | 99 } |
| 100 | 100 |
| 101 void TruncateOperation::TruncateAfterEnsureFileDownloadedByPath( | 101 void TruncateOperation::TruncateAfterEnsureFileDownloadedByPath( |
| 102 int64 length, | 102 int64_t length, |
| 103 const FileOperationCallback& callback, | 103 const FileOperationCallback& callback, |
| 104 FileError error, | 104 FileError error, |
| 105 const base::FilePath& local_file_path, | 105 const base::FilePath& local_file_path, |
| 106 scoped_ptr<ResourceEntry> entry) { | 106 scoped_ptr<ResourceEntry> entry) { |
| 107 DCHECK(thread_checker_.CalledOnValidThread()); | 107 DCHECK(thread_checker_.CalledOnValidThread()); |
| 108 DCHECK(!callback.is_null()); | 108 DCHECK(!callback.is_null()); |
| 109 | 109 |
| 110 if (error != FILE_ERROR_OK) { | 110 if (error != FILE_ERROR_OK) { |
| 111 callback.Run(error); | 111 callback.Run(error); |
| 112 return; | 112 return; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 136 DCHECK(thread_checker_.CalledOnValidThread()); | 136 DCHECK(thread_checker_.CalledOnValidThread()); |
| 137 DCHECK(!callback.is_null()); | 137 DCHECK(!callback.is_null()); |
| 138 | 138 |
| 139 delegate_->OnEntryUpdatedByOperation(ClientContext(USER_INITIATED), local_id); | 139 delegate_->OnEntryUpdatedByOperation(ClientContext(USER_INITIATED), local_id); |
| 140 | 140 |
| 141 callback.Run(error); | 141 callback.Run(error); |
| 142 } | 142 } |
| 143 | 143 |
| 144 } // namespace file_system | 144 } // namespace file_system |
| 145 } // namespace drive | 145 } // namespace drive |
| OLD | NEW |