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

Side by Side Diff: chrome/browser/media_galleries/linux/mtp_device_task_helper.cc

Issue 947943002: Implement CopyFileFromLocal of MTPDeviceAsyncDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 9 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 unified diff | Download patch
OLDNEW
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698