| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/chromeos/file_system_provider/throttled_file_system.h" | 5 #include "chrome/browser/chromeos/file_system_provider/throttled_file_system.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 50 int64 offset, | 50 int64 offset, |
| 51 int length, | 51 int length, |
| 52 const ReadChunkReceivedCallback& callback) { | 52 const ReadChunkReceivedCallback& callback) { |
| 53 return file_system_->ReadFile(file_handle, buffer, offset, length, callback); | 53 return file_system_->ReadFile(file_handle, buffer, offset, length, callback); |
| 54 } | 54 } |
| 55 | 55 |
| 56 AbortCallback ThrottledFileSystem::OpenFile(const base::FilePath& file_path, | 56 AbortCallback ThrottledFileSystem::OpenFile(const base::FilePath& file_path, |
| 57 OpenFileMode mode, | 57 OpenFileMode mode, |
| 58 const OpenFileCallback& callback) { | 58 const OpenFileCallback& callback) { |
| 59 const size_t task_token = open_queue_->NewToken(); | 59 const size_t task_token = open_queue_->NewToken(); |
| 60 return open_queue_->Enqueue( | 60 open_queue_->Enqueue( |
| 61 task_token, | 61 task_token, |
| 62 base::Bind( | 62 base::Bind( |
| 63 &ProvidedFileSystemInterface::OpenFile, | 63 &ProvidedFileSystemInterface::OpenFile, |
| 64 base::Unretained(file_system_.get()), // Outlives the queue. | 64 base::Unretained(file_system_.get()), // Outlives the queue. |
| 65 file_path, mode, | 65 file_path, mode, |
| 66 base::Bind(&ThrottledFileSystem::OnOpenFileCompleted, | 66 base::Bind(&ThrottledFileSystem::OnOpenFileCompleted, |
| 67 weak_ptr_factory_.GetWeakPtr(), task_token, callback))); | 67 weak_ptr_factory_.GetWeakPtr(), task_token, callback))); |
| 68 return base::Bind(&ThrottledFileSystem::Abort, weak_ptr_factory_.GetWeakPtr(), |
| 69 task_token); |
| 68 } | 70 } |
| 69 | 71 |
| 70 AbortCallback ThrottledFileSystem::CloseFile( | 72 AbortCallback ThrottledFileSystem::CloseFile( |
| 71 int file_handle, | 73 int file_handle, |
| 72 const storage::AsyncFileUtil::StatusCallback& callback) { | 74 const storage::AsyncFileUtil::StatusCallback& callback) { |
| 73 return file_system_->CloseFile( | 75 return file_system_->CloseFile( |
| 74 file_handle, | 76 file_handle, |
| 75 base::Bind(&ThrottledFileSystem::OnCloseFileCompleted, | 77 base::Bind(&ThrottledFileSystem::OnCloseFileCompleted, |
| 76 weak_ptr_factory_.GetWeakPtr(), file_handle, callback)); | 78 weak_ptr_factory_.GetWeakPtr(), file_handle, callback)); |
| 77 } | 79 } |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 const std::string& tag, | 176 const std::string& tag, |
| 175 const storage::AsyncFileUtil::StatusCallback& callback) { | 177 const storage::AsyncFileUtil::StatusCallback& callback) { |
| 176 return file_system_->Notify(entry_path, recursive, change_type, | 178 return file_system_->Notify(entry_path, recursive, change_type, |
| 177 changes.Pass(), tag, callback); | 179 changes.Pass(), tag, callback); |
| 178 } | 180 } |
| 179 | 181 |
| 180 base::WeakPtr<ProvidedFileSystemInterface> ThrottledFileSystem::GetWeakPtr() { | 182 base::WeakPtr<ProvidedFileSystemInterface> ThrottledFileSystem::GetWeakPtr() { |
| 181 return weak_ptr_factory_.GetWeakPtr(); | 183 return weak_ptr_factory_.GetWeakPtr(); |
| 182 } | 184 } |
| 183 | 185 |
| 186 void ThrottledFileSystem::Abort(int queue_token) { |
| 187 open_queue_->Abort(queue_token); |
| 188 } |
| 189 |
| 184 void ThrottledFileSystem::OnOpenFileCompleted(int queue_token, | 190 void ThrottledFileSystem::OnOpenFileCompleted(int queue_token, |
| 185 const OpenFileCallback& callback, | 191 const OpenFileCallback& callback, |
| 186 int file_handle, | 192 int file_handle, |
| 187 base::File::Error result) { | 193 base::File::Error result) { |
| 188 open_queue_->Complete(queue_token); | 194 open_queue_->Complete(queue_token); |
| 189 | 195 |
| 190 // If the file is opened successfully then hold the queue token until the file | 196 // If the file is opened successfully then hold the queue token until the file |
| 191 // is closed. | 197 // is closed. |
| 192 if (result == base::File::FILE_OK) | 198 if (result == base::File::FILE_OK) |
| 193 opened_files_[file_handle] = queue_token; | 199 opened_files_[file_handle] = queue_token; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 209 | 215 |
| 210 const int queue_token = it->second; | 216 const int queue_token = it->second; |
| 211 open_queue_->Remove(queue_token); | 217 open_queue_->Remove(queue_token); |
| 212 opened_files_.erase(file_handle); | 218 opened_files_.erase(file_handle); |
| 213 | 219 |
| 214 callback.Run(result); | 220 callback.Run(result); |
| 215 } | 221 } |
| 216 | 222 |
| 217 } // namespace file_system_provider | 223 } // namespace file_system_provider |
| 218 } // namespace chromeos | 224 } // namespace chromeos |
| OLD | NEW |