| 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 "chrome/browser/media_galleries/linux/mtp_device_task_helper.h" | 5 #include "chrome/browser/media_galleries/linux/mtp_device_task_helper.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/numerics/safe_conversions.h" | 10 #include "base/numerics/safe_conversions.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 MTPDeviceTaskHelper::MTPDeviceTaskHelper() | 52 MTPDeviceTaskHelper::MTPDeviceTaskHelper() |
| 53 : weak_ptr_factory_(this) { | 53 : weak_ptr_factory_(this) { |
| 54 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 54 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 55 } | 55 } |
| 56 | 56 |
| 57 MTPDeviceTaskHelper::~MTPDeviceTaskHelper() { | 57 MTPDeviceTaskHelper::~MTPDeviceTaskHelper() { |
| 58 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 58 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 59 } | 59 } |
| 60 | 60 |
| 61 void MTPDeviceTaskHelper::OpenStorage(const std::string& storage_name, | 61 void MTPDeviceTaskHelper::OpenStorage(const std::string& storage_name, |
| 62 const bool read_only, |
| 62 const OpenStorageCallback& callback) { | 63 const OpenStorageCallback& callback) { |
| 63 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 64 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 64 DCHECK(!storage_name.empty()); | 65 DCHECK(!storage_name.empty()); |
| 65 if (!device_handle_.empty()) { | 66 if (!device_handle_.empty()) { |
| 66 content::BrowserThread::PostTask(content::BrowserThread::IO, | 67 content::BrowserThread::PostTask(content::BrowserThread::IO, |
| 67 FROM_HERE, | 68 FROM_HERE, |
| 68 base::Bind(callback, true)); | 69 base::Bind(callback, true)); |
| 69 return; | 70 return; |
| 70 } | 71 } |
| 72 |
| 73 const std::string mode = |
| 74 read_only ? mtpd::kReadOnlyMode : mtpd::kReadWriteMode; |
| 71 GetMediaTransferProtocolManager()->OpenStorage( | 75 GetMediaTransferProtocolManager()->OpenStorage( |
| 72 storage_name, mtpd::kReadOnlyMode, | 76 storage_name, mode, base::Bind(&MTPDeviceTaskHelper::OnDidOpenStorage, |
| 73 base::Bind(&MTPDeviceTaskHelper::OnDidOpenStorage, | 77 weak_ptr_factory_.GetWeakPtr(), callback)); |
| 74 weak_ptr_factory_.GetWeakPtr(), | |
| 75 callback)); | |
| 76 } | 78 } |
| 77 | 79 |
| 78 void MTPDeviceTaskHelper::GetFileInfo( | 80 void MTPDeviceTaskHelper::GetFileInfo( |
| 79 uint32 file_id, | 81 uint32 file_id, |
| 80 const GetFileInfoSuccessCallback& success_callback, | 82 const GetFileInfoSuccessCallback& success_callback, |
| 81 const ErrorCallback& error_callback) { | 83 const ErrorCallback& error_callback) { |
| 82 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 84 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 83 if (device_handle_.empty()) | 85 if (device_handle_.empty()) |
| 84 return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED); | 86 return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED); |
| 85 | 87 |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 return HandleDeviceError(request.error_callback, | 131 return HandleDeviceError(request.error_callback, |
| 130 base::File::FILE_ERROR_FAILED); | 132 base::File::FILE_ERROR_FAILED); |
| 131 } | 133 } |
| 132 | 134 |
| 133 GetMediaTransferProtocolManager()->GetFileInfo( | 135 GetMediaTransferProtocolManager()->GetFileInfo( |
| 134 device_handle_, request.file_id, | 136 device_handle_, request.file_id, |
| 135 base::Bind(&MTPDeviceTaskHelper::OnGetFileInfoToReadBytes, | 137 base::Bind(&MTPDeviceTaskHelper::OnGetFileInfoToReadBytes, |
| 136 weak_ptr_factory_.GetWeakPtr(), request)); | 138 weak_ptr_factory_.GetWeakPtr(), request)); |
| 137 } | 139 } |
| 138 | 140 |
| 141 void MTPDeviceTaskHelper::CopyFileFromLocal( |
| 142 const std::string& storage_name, |
| 143 const int source_file_descriptor, |
| 144 const uint32 parent_id, |
| 145 const std::string& file_name, |
| 146 const CopyFileFromLocalSuccessCallback& success_callback, |
| 147 const ErrorCallback& error_callback) { |
| 148 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 149 |
| 150 GetMediaTransferProtocolManager()->CopyFileFromLocal( |
| 151 device_handle_, source_file_descriptor, parent_id, file_name, |
| 152 base::Bind(&MTPDeviceTaskHelper::OnCopyFileFromLocal, |
| 153 weak_ptr_factory_.GetWeakPtr(), success_callback, |
| 154 error_callback)); |
| 155 } |
| 156 |
| 139 void MTPDeviceTaskHelper::CloseStorage() const { | 157 void MTPDeviceTaskHelper::CloseStorage() const { |
| 140 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 158 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 141 if (device_handle_.empty()) | 159 if (device_handle_.empty()) |
| 142 return; | 160 return; |
| 143 GetMediaTransferProtocolManager()->CloseStorage(device_handle_, | 161 GetMediaTransferProtocolManager()->CloseStorage(device_handle_, |
| 144 base::Bind(&DoNothing)); | 162 base::Bind(&DoNothing)); |
| 145 } | 163 } |
| 146 | 164 |
| 147 void MTPDeviceTaskHelper::OnDidOpenStorage( | 165 void MTPDeviceTaskHelper::OnDidOpenStorage( |
| 148 const OpenStorageCallback& completion_callback, | 166 const OpenStorageCallback& completion_callback, |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 259 | 277 |
| 260 CHECK_LE(base::checked_cast<int>(data.length()), request.buf_len); | 278 CHECK_LE(base::checked_cast<int>(data.length()), request.buf_len); |
| 261 std::copy(data.begin(), data.end(), request.buf->data()); | 279 std::copy(data.begin(), data.end(), request.buf->data()); |
| 262 | 280 |
| 263 content::BrowserThread::PostTask(content::BrowserThread::IO, | 281 content::BrowserThread::PostTask(content::BrowserThread::IO, |
| 264 FROM_HERE, | 282 FROM_HERE, |
| 265 base::Bind(request.success_callback, | 283 base::Bind(request.success_callback, |
| 266 file_info, data.length())); | 284 file_info, data.length())); |
| 267 } | 285 } |
| 268 | 286 |
| 287 void MTPDeviceTaskHelper::OnCopyFileFromLocal( |
| 288 const CopyFileFromLocalSuccessCallback& success_callback, |
| 289 const ErrorCallback& error_callback, |
| 290 const bool error) const { |
| 291 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 292 if (error) { |
| 293 content::BrowserThread::PostTask( |
| 294 content::BrowserThread::IO, FROM_HERE, |
| 295 base::Bind(error_callback, base::File::FILE_ERROR_FAILED)); |
| 296 return; |
| 297 } |
| 298 |
| 299 content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE, |
| 300 base::Bind(success_callback)); |
| 301 } |
| 302 |
| 269 void MTPDeviceTaskHelper::HandleDeviceError( | 303 void MTPDeviceTaskHelper::HandleDeviceError( |
| 270 const ErrorCallback& error_callback, | 304 const ErrorCallback& error_callback, |
| 271 base::File::Error error) const { | 305 base::File::Error error) const { |
| 272 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 306 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 273 content::BrowserThread::PostTask(content::BrowserThread::IO, | 307 content::BrowserThread::PostTask(content::BrowserThread::IO, |
| 274 FROM_HERE, | 308 FROM_HERE, |
| 275 base::Bind(error_callback, error)); | 309 base::Bind(error_callback, error)); |
| 276 } | 310 } |
| OLD | NEW |