Commit 28765c8d authored by Evan Stade's avatar Evan Stade Committed by Chromium LUCI CQ

[Code health] Convert ErrorCallback to OnceCallback.

This was recently marked as RepeatingCallback, but should actually be
OnceCallback, as it's fired at most once.

MTPDeviceDelegateImplLinux does at times try to pass this callback off
to more than one owner, however this is an implementation detail that
should not make it into the public API. To circumvent this hurdle, a
wrapper is introduced in MTPDeviceDelegateImplLinux.

Bug: 1152278
Change-Id: Ie00927fad8f8fa95961380fcd391e6b463263a23
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2598010Reviewed-by: default avatarTommy Li <tommycli@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#840231}
parent cbdae5ba
...@@ -87,13 +87,13 @@ class MTPDeviceTaskHelper { ...@@ -87,13 +87,13 @@ class MTPDeviceTaskHelper {
// notify the caller about the file error. // notify the caller about the file error.
void GetFileInfo(uint32_t file_id, void GetFileInfo(uint32_t file_id,
GetFileInfoSuccessCallback success_callback, GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Forwards CreateDirectory request to the MediaTransferProtocolManager. // Forwards CreateDirectory request to the MediaTransferProtocolManager.
void CreateDirectory(const uint32_t parent_id, void CreateDirectory(const uint32_t parent_id,
const std::string& directory_name, const std::string& directory_name,
const CreateDirectorySuccessCallback& success_callback, const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Dispatches the read directory request to the MediaTransferProtocolManager. // Dispatches the read directory request to the MediaTransferProtocolManager.
// //
...@@ -110,7 +110,7 @@ class MTPDeviceTaskHelper { ...@@ -110,7 +110,7 @@ class MTPDeviceTaskHelper {
// notify the caller about the file error. // notify the caller about the file error.
void ReadDirectory(const uint32_t directory_id, void ReadDirectory(const uint32_t directory_id,
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Dispatches a read directory request to the MediaTransferProtocolManager to // Dispatches a read directory request to the MediaTransferProtocolManager to
// check if |directory_id| is empty. // check if |directory_id| is empty.
...@@ -122,16 +122,15 @@ class MTPDeviceTaskHelper { ...@@ -122,16 +122,15 @@ class MTPDeviceTaskHelper {
// notify the caller about the file error. // notify the caller about the file error.
void CheckDirectoryEmpty(uint32_t directory_id, void CheckDirectoryEmpty(uint32_t directory_id,
CheckDirectoryEmptySuccessCallback success_callback, CheckDirectoryEmptySuccessCallback success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Forwards the WriteDataIntoSnapshotFile request to the MTPReadFileWorker // Forwards the WriteDataIntoSnapshotFile request to the MTPReadFileWorker
// object. // object.
// //
// |request_info| specifies the snapshot file request params. // |request_info| specifies the snapshot file request params.
// |snapshot_file_info| specifies the metadata of the snapshot file. // |snapshot_file_info| specifies the metadata of the snapshot file.
void WriteDataIntoSnapshotFile( void WriteDataIntoSnapshotFile(SnapshotRequestInfo request_info,
const SnapshotRequestInfo& request_info, const base::File::Info& snapshot_file_info);
const base::File::Info& snapshot_file_info);
// Dispatches the read bytes request to the MediaTransferProtocolManager. // Dispatches the read bytes request to the MediaTransferProtocolManager.
// //
...@@ -144,7 +143,7 @@ class MTPDeviceTaskHelper { ...@@ -144,7 +143,7 @@ class MTPDeviceTaskHelper {
void RenameObject(const uint32_t object_id, void RenameObject(const uint32_t object_id,
const std::string& new_name, const std::string& new_name,
const RenameObjectSuccessCallback& success_callback, const RenameObjectSuccessCallback& success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Forwards CopyFileFromLocal request to the MediaTransferProtocolManager. // Forwards CopyFileFromLocal request to the MediaTransferProtocolManager.
void CopyFileFromLocal( void CopyFileFromLocal(
...@@ -153,12 +152,12 @@ class MTPDeviceTaskHelper { ...@@ -153,12 +152,12 @@ class MTPDeviceTaskHelper {
const uint32_t parent_id, const uint32_t parent_id,
const std::string& file_name, const std::string& file_name,
const CopyFileFromLocalSuccessCallback& success_callback, const CopyFileFromLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Forwards DeleteObject request to the MediaTransferProtocolManager. // Forwards DeleteObject request to the MediaTransferProtocolManager.
void DeleteObject(const uint32_t object_id, void DeleteObject(const uint32_t object_id,
const DeleteObjectSuccessCallback& success_callback, const DeleteObjectSuccessCallback& success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
// Dispatches the CloseStorage request to the MediaTransferProtocolManager. // Dispatches the CloseStorage request to the MediaTransferProtocolManager.
void CloseStorage() const; void CloseStorage() const;
...@@ -185,13 +184,13 @@ class MTPDeviceTaskHelper { ...@@ -185,13 +184,13 @@ class MTPDeviceTaskHelper {
// error has occurred. In this case, |error_callback| is invoked on the IO // error has occurred. In this case, |error_callback| is invoked on the IO
// thread to notify the caller. // thread to notify the caller.
void OnGetFileInfo(GetFileInfoSuccessCallback success_callback, void OnGetFileInfo(GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
std::vector<device::mojom::MtpFileEntryPtr> entries, std::vector<device::mojom::MtpFileEntryPtr> entries,
bool error) const; bool error) const;
// Called when CreateDirectory completes. // Called when CreateDirectory completes.
void OnCreateDirectory(const CreateDirectorySuccessCallback& success_callback, void OnCreateDirectory(const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const bool error) const; const bool error) const;
// Query callback for ReadDirectoryEntryIds(). // Query callback for ReadDirectoryEntryIds().
...@@ -205,7 +204,7 @@ class MTPDeviceTaskHelper { ...@@ -205,7 +204,7 @@ class MTPDeviceTaskHelper {
// invoked on the IO thread to notify the caller. // invoked on the IO thread to notify the caller.
void OnReadDirectoryEntryIdsToReadDirectory( void OnReadDirectoryEntryIdsToReadDirectory(
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const std::vector<uint32_t>& file_ids, const std::vector<uint32_t>& file_ids,
bool error); bool error);
...@@ -220,7 +219,7 @@ class MTPDeviceTaskHelper { ...@@ -220,7 +219,7 @@ class MTPDeviceTaskHelper {
// |error| indicates if the GetFileInfo() call succeeded or failed. // |error| indicates if the GetFileInfo() call succeeded or failed.
void OnGotDirectoryEntries( void OnGotDirectoryEntries(
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const std::vector<uint32_t>& expected_file_ids, const std::vector<uint32_t>& expected_file_ids,
const std::vector<uint32_t>& file_ids_to_read, const std::vector<uint32_t>& file_ids_to_read,
std::vector<device::mojom::MtpFileEntryPtr> file_entries, std::vector<device::mojom::MtpFileEntryPtr> file_entries,
...@@ -236,7 +235,7 @@ class MTPDeviceTaskHelper { ...@@ -236,7 +235,7 @@ class MTPDeviceTaskHelper {
// and |error_callback| is invoked on the IO thread to notify the caller. // and |error_callback| is invoked on the IO thread to notify the caller.
void OnCheckedDirectoryEmpty( void OnCheckedDirectoryEmpty(
CheckDirectoryEmptySuccessCallback success_callback, CheckDirectoryEmptySuccessCallback success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const std::vector<uint32_t>& file_ids, const std::vector<uint32_t>& file_ids,
bool error) const; bool error) const;
...@@ -262,25 +261,25 @@ class MTPDeviceTaskHelper { ...@@ -262,25 +261,25 @@ class MTPDeviceTaskHelper {
// Called when RenameObject completes. // Called when RenameObject completes.
void OnRenameObject(const RenameObjectSuccessCallback& success_callback, void OnRenameObject(const RenameObjectSuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const bool error) const; const bool error) const;
// Called when CopyFileFromLocal completes. // Called when CopyFileFromLocal completes.
void OnCopyFileFromLocal( void OnCopyFileFromLocal(
const CopyFileFromLocalSuccessCallback& success_callback, const CopyFileFromLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const bool error) const; const bool error) const;
// Called when DeleteObject completes. // Called when DeleteObject completes.
void OnDeleteObject(const DeleteObjectSuccessCallback& success_callback, void OnDeleteObject(const DeleteObjectSuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
const bool error) const; const bool error) const;
// Called when the device is uninitialized. // Called when the device is uninitialized.
// //
// Runs |error_callback| on the IO thread to notify the caller about the // Runs |error_callback| on the IO thread to notify the caller about the
// device |error|. // device |error|.
void HandleDeviceError(const ErrorCallback& error_callback, void HandleDeviceError(ErrorCallback error_callback,
base::File::Error error) const; base::File::Error error) const;
// Handle to communicate with the MTP device. // Handle to communicate with the MTP device.
......
...@@ -46,11 +46,11 @@ MTPReadFileWorker::~MTPReadFileWorker() { ...@@ -46,11 +46,11 @@ MTPReadFileWorker::~MTPReadFileWorker() {
} }
void MTPReadFileWorker::WriteDataIntoSnapshotFile( void MTPReadFileWorker::WriteDataIntoSnapshotFile(
const SnapshotRequestInfo& request_info, SnapshotRequestInfo request_info,
const base::File::Info& snapshot_file_info) { const base::File::Info& snapshot_file_info) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
ReadDataChunkFromDeviceFile( ReadDataChunkFromDeviceFile(std::make_unique<SnapshotFileDetails>(
std::make_unique<SnapshotFileDetails>(request_info, snapshot_file_info)); std::move(request_info), snapshot_file_info));
} }
void MTPReadFileWorker::ReadDataChunkFromDeviceFile( void MTPReadFileWorker::ReadDataChunkFromDeviceFile(
......
...@@ -30,9 +30,8 @@ class MTPReadFileWorker { ...@@ -30,9 +30,8 @@ class MTPReadFileWorker {
// //
// |request_info| specifies the snapshot file request params. // |request_info| specifies the snapshot file request params.
// |snapshot_file_info| specifies the metadata of the snapshot file. // |snapshot_file_info| specifies the metadata of the snapshot file.
void WriteDataIntoSnapshotFile( void WriteDataIntoSnapshotFile(SnapshotRequestInfo request_info,
const SnapshotRequestInfo& request_info, const base::File::Info& snapshot_file_info);
const base::File::Info& snapshot_file_info);
private: private:
// Called when WriteDataIntoSnapshotFile() completes. // Called when WriteDataIntoSnapshotFile() completes.
......
...@@ -17,33 +17,28 @@ SnapshotRequestInfo::SnapshotRequestInfo( ...@@ -17,33 +17,28 @@ SnapshotRequestInfo::SnapshotRequestInfo(
const base::FilePath& snapshot_file_path, const base::FilePath& snapshot_file_path,
const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback& const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback&
success_callback, success_callback,
const MTPDeviceAsyncDelegate::ErrorCallback& error_callback) MTPDeviceAsyncDelegate::ErrorCallback error_callback)
: file_id(file_id), : file_id(file_id),
snapshot_file_path(snapshot_file_path), snapshot_file_path(snapshot_file_path),
success_callback(success_callback), success_callback(success_callback),
error_callback(error_callback) {} error_callback(std::move(error_callback)) {}
SnapshotRequestInfo::SnapshotRequestInfo(const SnapshotRequestInfo& other) = SnapshotRequestInfo::SnapshotRequestInfo(SnapshotRequestInfo&& other) = default;
default;
SnapshotRequestInfo::~SnapshotRequestInfo() { SnapshotRequestInfo::~SnapshotRequestInfo() = default;
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// SnapshotFileDetails // // SnapshotFileDetails //
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
SnapshotFileDetails::SnapshotFileDetails( SnapshotFileDetails::SnapshotFileDetails(SnapshotRequestInfo request_info,
const SnapshotRequestInfo& request_info, const base::File::Info& file_info)
const base::File::Info& file_info) : request_info_(std::move(request_info)),
: request_info_(request_info),
file_info_(file_info), file_info_(file_info),
bytes_written_(0), bytes_written_(0),
error_occurred_(false) { error_occurred_(false) {}
}
SnapshotFileDetails::~SnapshotFileDetails() { SnapshotFileDetails::~SnapshotFileDetails() = default;
}
void SnapshotFileDetails::set_error_occurred(bool error) { void SnapshotFileDetails::set_error_occurred(bool error) {
error_occurred_ = error; error_occurred_ = error;
......
...@@ -22,8 +22,10 @@ struct SnapshotRequestInfo { ...@@ -22,8 +22,10 @@ struct SnapshotRequestInfo {
const base::FilePath& snapshot_file_path, const base::FilePath& snapshot_file_path,
const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback& const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback&
success_callback, success_callback,
const MTPDeviceAsyncDelegate::ErrorCallback& error_callback); MTPDeviceAsyncDelegate::ErrorCallback error_callback);
SnapshotRequestInfo(const SnapshotRequestInfo& other); SnapshotRequestInfo(SnapshotRequestInfo&& other);
SnapshotRequestInfo(const SnapshotRequestInfo& other) = delete;
SnapshotRequestInfo& operator=(const SnapshotRequestInfo& other) = delete;
~SnapshotRequestInfo(); ~SnapshotRequestInfo();
// MTP device file id. // MTP device file id.
...@@ -37,7 +39,7 @@ struct SnapshotRequestInfo { ...@@ -37,7 +39,7 @@ struct SnapshotRequestInfo {
success_callback; success_callback;
// A callback to be called when CreateSnapshotFile() fails. // A callback to be called when CreateSnapshotFile() fails.
const MTPDeviceAsyncDelegate::ErrorCallback error_callback; MTPDeviceAsyncDelegate::ErrorCallback error_callback;
}; };
// SnapshotFileDetails tracks the current state of the snapshot file (e.g how // SnapshotFileDetails tracks the current state of the snapshot file (e.g how
...@@ -45,7 +47,7 @@ struct SnapshotRequestInfo { ...@@ -45,7 +47,7 @@ struct SnapshotRequestInfo {
// metadata information, etc). // metadata information, etc).
class SnapshotFileDetails { class SnapshotFileDetails {
public: public:
SnapshotFileDetails(const SnapshotRequestInfo& request_info, SnapshotFileDetails(SnapshotRequestInfo request_info,
const base::File::Info& file_info); const base::File::Info& file_info);
~SnapshotFileDetails(); ~SnapshotFileDetails();
...@@ -67,8 +69,8 @@ class SnapshotFileDetails { ...@@ -67,8 +69,8 @@ class SnapshotFileDetails {
return request_info_.success_callback; return request_info_.success_callback;
} }
const MTPDeviceAsyncDelegate::ErrorCallback error_callback() const { MTPDeviceAsyncDelegate::ErrorCallback error_callback() {
return request_info_.error_callback; return std::move(request_info_.error_callback);
} }
bool error_occurred() const { bool error_occurred() const {
...@@ -94,7 +96,7 @@ class SnapshotFileDetails { ...@@ -94,7 +96,7 @@ class SnapshotFileDetails {
private: private:
// Snapshot file request params. // Snapshot file request params.
const SnapshotRequestInfo request_info_; SnapshotRequestInfo request_info_;
// Metadata of the snapshot file (such as name, size, type, etc). // Metadata of the snapshot file (such as name, size, type, etc).
const base::File::Info file_info_; const base::File::Info file_info_;
......
...@@ -12,13 +12,13 @@ MTPDeviceAsyncDelegate::ReadBytesRequest::ReadBytesRequest( ...@@ -12,13 +12,13 @@ MTPDeviceAsyncDelegate::ReadBytesRequest::ReadBytesRequest(
int64_t offset, int64_t offset,
int buf_len, int buf_len,
ReadBytesSuccessCallback success_callback, ReadBytesSuccessCallback success_callback,
const ErrorCallback& error_callback) ErrorCallback error_callback)
: file_id(file_id), : file_id(file_id),
buf(buf), buf(buf),
offset(offset), offset(offset),
buf_len(buf_len), buf_len(buf_len),
success_callback(std::move(success_callback)), success_callback(std::move(success_callback)),
error_callback(error_callback) {} error_callback(std::move(error_callback)) {}
MTPDeviceAsyncDelegate::ReadBytesRequest::ReadBytesRequest( MTPDeviceAsyncDelegate::ReadBytesRequest::ReadBytesRequest(
ReadBytesRequest&& other) ReadBytesRequest&& other)
...@@ -27,6 +27,6 @@ MTPDeviceAsyncDelegate::ReadBytesRequest::ReadBytesRequest( ...@@ -27,6 +27,6 @@ MTPDeviceAsyncDelegate::ReadBytesRequest::ReadBytesRequest(
offset(other.offset), offset(other.offset),
buf_len(other.buf_len), buf_len(other.buf_len),
success_callback(std::move(other.success_callback)), success_callback(std::move(other.success_callback)),
error_callback(other.error_callback) {} error_callback(std::move(other.error_callback)) {}
MTPDeviceAsyncDelegate::ReadBytesRequest::~ReadBytesRequest() {} MTPDeviceAsyncDelegate::ReadBytesRequest::~ReadBytesRequest() = default;
...@@ -43,7 +43,7 @@ class MTPDeviceAsyncDelegate { ...@@ -43,7 +43,7 @@ class MTPDeviceAsyncDelegate {
// A callback to be called when GetFileInfo/ReadDirectory/CreateSnapshot // A callback to be called when GetFileInfo/ReadDirectory/CreateSnapshot
// method call fails. // method call fails.
typedef base::RepeatingCallback<void(base::File::Error error)> ErrorCallback; using ErrorCallback = base::OnceCallback<void(base::File::Error error)>;
// A callback to be called when CreateSnapshotFile method call succeeds. // A callback to be called when CreateSnapshotFile method call succeeds.
// TODO: consider make this a OnceCallback. Right now it is repeating because // TODO: consider make this a OnceCallback. Right now it is repeating because
...@@ -64,7 +64,7 @@ class MTPDeviceAsyncDelegate { ...@@ -64,7 +64,7 @@ class MTPDeviceAsyncDelegate {
int64_t offset, int64_t offset,
int buf_len, int buf_len,
ReadBytesSuccessCallback success_callback, ReadBytesSuccessCallback success_callback,
const ErrorCallback& error_callback); ErrorCallback error_callback);
ReadBytesRequest(ReadBytesRequest&& other); ReadBytesRequest(ReadBytesRequest&& other);
~ReadBytesRequest(); ~ReadBytesRequest();
...@@ -103,7 +103,7 @@ class MTPDeviceAsyncDelegate { ...@@ -103,7 +103,7 @@ class MTPDeviceAsyncDelegate {
// callback asynchronously when complete. // callback asynchronously when complete.
virtual void GetFileInfo(const base::FilePath& file_path, virtual void GetFileInfo(const base::FilePath& file_path,
GetFileInfoSuccessCallback success_callback, GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Creates a directory to |directory_path|. When |exclusive| is true, this // Creates a directory to |directory_path|. When |exclusive| is true, this
// returns base::File::FILE_ERROR_EXISTS if a directory already exists for // returns base::File::FILE_ERROR_EXISTS if a directory already exists for
...@@ -114,14 +114,14 @@ class MTPDeviceAsyncDelegate { ...@@ -114,14 +114,14 @@ class MTPDeviceAsyncDelegate {
const bool exclusive, const bool exclusive,
const bool recursive, const bool recursive,
const CreateDirectorySuccessCallback& success_callback, const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Enumerates the |root| directory contents and invokes the appropriate // Enumerates the |root| directory contents and invokes the appropriate
// callback asynchronously when complete. // callback asynchronously when complete.
virtual void ReadDirectory( virtual void ReadDirectory(
const base::FilePath& root, const base::FilePath& root,
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Copy the contents of |device_file_path| to |local_path|. Invokes the // Copy the contents of |device_file_path| to |local_path|. Invokes the
// appropriate callback asynchronously when complete. // appropriate callback asynchronously when complete.
...@@ -129,7 +129,7 @@ class MTPDeviceAsyncDelegate { ...@@ -129,7 +129,7 @@ class MTPDeviceAsyncDelegate {
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const base::FilePath& local_path, const base::FilePath& local_path,
const CreateSnapshotFileSuccessCallback& success_callback, const CreateSnapshotFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Platform-specific implementations that are streaming don't create a local // Platform-specific implementations that are streaming don't create a local
// snapshot file. Blobs are instead FileSystemURL backed and read in a stream. // snapshot file. Blobs are instead FileSystemURL backed and read in a stream.
...@@ -143,7 +143,7 @@ class MTPDeviceAsyncDelegate { ...@@ -143,7 +143,7 @@ class MTPDeviceAsyncDelegate {
int64_t offset, int64_t offset,
int buf_len, int buf_len,
ReadBytesSuccessCallback success_callback, ReadBytesSuccessCallback success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Returns true if storage is opened for read only. // Returns true if storage is opened for read only.
virtual bool IsReadOnly() const = 0; virtual bool IsReadOnly() const = 0;
...@@ -156,7 +156,7 @@ class MTPDeviceAsyncDelegate { ...@@ -156,7 +156,7 @@ class MTPDeviceAsyncDelegate {
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const CopyFileProgressCallback& progress_callback, const CopyFileProgressCallback& progress_callback,
const CopyFileLocalSuccessCallback& success_callback, const CopyFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Moves a file |source_file_path| to |device_file_path|. // Moves a file |source_file_path| to |device_file_path|.
// |create_temporary_file_callback| can be used to create a temporary file. // |create_temporary_file_callback| can be used to create a temporary file.
...@@ -165,25 +165,25 @@ class MTPDeviceAsyncDelegate { ...@@ -165,25 +165,25 @@ class MTPDeviceAsyncDelegate {
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const MoveFileLocalSuccessCallback& success_callback, const MoveFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Copies a file from |source_file_path| to |device_file_path|. // Copies a file from |source_file_path| to |device_file_path|.
virtual void CopyFileFromLocal( virtual void CopyFileFromLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CopyFileFromLocalSuccessCallback& success_callback, const CopyFileFromLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Deletes a file at |file_path|. // Deletes a file at |file_path|.
virtual void DeleteFile(const base::FilePath& file_path, virtual void DeleteFile(const base::FilePath& file_path,
const DeleteFileSuccessCallback& success_callback, const DeleteFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Deletes a directory at |file_path|. The directory must be empty. // Deletes a directory at |file_path|. The directory must be empty.
virtual void DeleteDirectory( virtual void DeleteDirectory(
const base::FilePath& file_path, const base::FilePath& file_path,
const DeleteDirectorySuccessCallback& success_callback, const DeleteDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0; ErrorCallback error_callback) = 0;
// Adds watcher to |file_path| as |origin|. // Adds watcher to |file_path| as |origin|.
virtual void AddWatcher( virtual void AddWatcher(
......
...@@ -37,32 +37,32 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate { ...@@ -37,32 +37,32 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate {
// similarly-named methods on the UI thread. // similarly-named methods on the UI thread.
void GetFileInfo(const base::FilePath& file_path, void GetFileInfo(const base::FilePath& file_path,
GetFileInfoSuccessCallback success_callback, GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void CreateDirectory(const base::FilePath& directory_path, void CreateDirectory(const base::FilePath& directory_path,
const bool exclusive, const bool exclusive,
const bool recursive, const bool recursive,
const CreateDirectorySuccessCallback& success_callback, const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
// Note: passed absolute paths, but expects relative paths in reply. // Note: passed absolute paths, but expects relative paths in reply.
void ReadDirectory(const base::FilePath& root, void ReadDirectory(const base::FilePath& root,
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
// Note: passed absolute paths. // Note: passed absolute paths.
void CreateSnapshotFile( void CreateSnapshotFile(
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const base::FilePath& local_path, const base::FilePath& local_path,
const CreateSnapshotFileSuccessCallback& success_callback, const CreateSnapshotFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
bool IsStreaming() override; bool IsStreaming() override;
void ReadBytes(const base::FilePath& device_file_path, void ReadBytes(const base::FilePath& device_file_path,
const scoped_refptr<net::IOBuffer>& buf, const scoped_refptr<net::IOBuffer>& buf,
int64_t offset, int64_t offset,
int buf_len, int buf_len,
ReadBytesSuccessCallback success_callback, ReadBytesSuccessCallback success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
bool IsReadOnly() const override; bool IsReadOnly() const override;
void CopyFileLocal( void CopyFileLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
...@@ -70,24 +70,24 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate { ...@@ -70,24 +70,24 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate {
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const CopyFileProgressCallback& progress_callback, const CopyFileProgressCallback& progress_callback,
const CopyFileLocalSuccessCallback& success_callback, const CopyFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void MoveFileLocal( void MoveFileLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const MoveFileLocalSuccessCallback& success_callback, const MoveFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void CopyFileFromLocal( void CopyFileFromLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CopyFileFromLocalSuccessCallback& success_callback, const CopyFileFromLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void DeleteFile(const base::FilePath& file_path, void DeleteFile(const base::FilePath& file_path,
const DeleteFileSuccessCallback& success_callback, const DeleteFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void DeleteDirectory(const base::FilePath& file_path, void DeleteDirectory(const base::FilePath& file_path,
const DeleteDirectorySuccessCallback& success_callback, const DeleteDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void AddWatcher(const GURL& origin, void AddWatcher(const GURL& origin,
const base::FilePath& file_path, const base::FilePath& file_path,
const bool recursive, const bool recursive,
...@@ -124,17 +124,15 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate { ...@@ -124,17 +124,15 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate {
base::File::Error* error); base::File::Error* error);
// Delegate for ReadDirectory, called on the UI thread. // Delegate for ReadDirectory, called on the UI thread.
void ReadDirectoryImpl( void ReadDirectoryImpl(const base::FilePath& root,
const base::FilePath& root, const ReadDirectorySuccessCallback& success_callback,
const ReadDirectorySuccessCallback& success_callback, ErrorCallback error_callback);
const ErrorCallback& error_callback);
// Delegate for CreateSnapshotFile, called on the UI thread. // Delegate for CreateSnapshotFile, called on the UI thread.
void DownloadFile( void DownloadFile(const base::FilePath& device_file_path,
const base::FilePath& device_file_path, const base::FilePath& local_path,
const base::FilePath& local_path, const CreateSnapshotFileSuccessCallback& success_callback,
const CreateSnapshotFileSuccessCallback& success_callback, ErrorCallback error_callback);
const ErrorCallback& error_callback);
// Public for closures; should not be called except by // Public for closures; should not be called except by
// CancelTasksAndDeleteDelegate. // CancelTasksAndDeleteDelegate.
...@@ -168,7 +166,6 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate { ...@@ -168,7 +166,6 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate {
const base::FilePath& snapshot_filename, const base::FilePath& snapshot_filename,
CreateSnapshotFileSuccessCallback success_cb, CreateSnapshotFileSuccessCallback success_cb,
ErrorCallback error_cb); ErrorCallback error_cb);
ReadFileRequest(const ReadFileRequest& other);
~ReadFileRequest(); ~ReadFileRequest();
std::string request_file; std::string request_file;
...@@ -183,7 +180,6 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate { ...@@ -183,7 +180,6 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate {
ReadDirectoryRequest(const base::FilePath& dir, ReadDirectoryRequest(const base::FilePath& dir,
ReadDirectorySuccessCallback success_cb, ReadDirectorySuccessCallback success_cb,
ErrorCallback error_cb); ErrorCallback error_cb);
ReadDirectoryRequest(const ReadDirectoryRequest& other);
~ReadDirectoryRequest(); ~ReadDirectoryRequest();
base::FilePath directory; base::FilePath directory;
......
...@@ -273,13 +273,14 @@ base::File::Error GetFileStreamOnBlockingPoolThread( ...@@ -273,13 +273,14 @@ base::File::Error GetFileStreamOnBlockingPoolThread(
// Returns the total number of bytes written to the snapshot file for non-empty // Returns the total number of bytes written to the snapshot file for non-empty
// files, or 0 on failure. For empty files, just return 0. // files, or 0 on failure. For empty files, just return 0.
DWORD WriteDataChunkIntoSnapshotFileOnBlockingPoolThread( DWORD WriteDataChunkIntoSnapshotFileOnBlockingPoolThread(
const SnapshotFileDetails& file_details) { const base::File::Info& file_info,
if (file_details.file_info().size == 0) Microsoft::WRL::ComPtr<IStream> device_file_stream,
const base::FilePath& snapshot_file_path,
DWORD optimal_transfer_size) {
if (file_info.size == 0)
return 0; return 0;
return media_transfer_protocol::CopyDataChunkToLocalFile( return media_transfer_protocol::CopyDataChunkToLocalFile(
file_details.device_file_stream(), device_file_stream.Get(), snapshot_file_path, optimal_transfer_size);
file_details.request_info().snapshot_file_path,
file_details.optimal_transfer_size());
} }
void DeletePortableDeviceOnBlockingPoolThread( void DeletePortableDeviceOnBlockingPoolThread(
...@@ -376,7 +377,7 @@ MTPDeviceDelegateImplWin::~MTPDeviceDelegateImplWin() { ...@@ -376,7 +377,7 @@ MTPDeviceDelegateImplWin::~MTPDeviceDelegateImplWin() {
void MTPDeviceDelegateImplWin::GetFileInfo( void MTPDeviceDelegateImplWin::GetFileInfo(
const base::FilePath& file_path, const base::FilePath& file_path,
GetFileInfoSuccessCallback success_callback, GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!file_path.empty()); DCHECK(!file_path.empty());
base::File::Info* file_info = new base::File::Info; base::File::Info* file_info = new base::File::Info;
...@@ -386,7 +387,7 @@ void MTPDeviceDelegateImplWin::GetFileInfo( ...@@ -386,7 +387,7 @@ void MTPDeviceDelegateImplWin::GetFileInfo(
file_path, base::Unretained(file_info)), file_path, base::Unretained(file_info)),
base::BindOnce(&MTPDeviceDelegateImplWin::OnGetFileInfo, base::BindOnce(&MTPDeviceDelegateImplWin::OnGetFileInfo,
weak_ptr_factory_.GetWeakPtr(), weak_ptr_factory_.GetWeakPtr(),
std::move(success_callback), error_callback, std::move(success_callback), std::move(error_callback),
base::Owned(file_info)))); base::Owned(file_info))));
} }
...@@ -395,14 +396,14 @@ void MTPDeviceDelegateImplWin::CreateDirectory( ...@@ -395,14 +396,14 @@ void MTPDeviceDelegateImplWin::CreateDirectory(
const bool exclusive, const bool exclusive,
const bool recursive, const bool recursive,
const CreateDirectorySuccessCallback& success_callback, const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
void MTPDeviceDelegateImplWin::ReadDirectory( void MTPDeviceDelegateImplWin::ReadDirectory(
const base::FilePath& root, const base::FilePath& root,
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!root.empty()); DCHECK(!root.empty());
storage::AsyncFileUtil::EntryList* entries = storage::AsyncFileUtil::EntryList* entries =
...@@ -413,20 +414,20 @@ void MTPDeviceDelegateImplWin::ReadDirectory( ...@@ -413,20 +414,20 @@ void MTPDeviceDelegateImplWin::ReadDirectory(
root, base::Unretained(entries)), root, base::Unretained(entries)),
base::BindOnce(&MTPDeviceDelegateImplWin::OnDidReadDirectory, base::BindOnce(&MTPDeviceDelegateImplWin::OnDidReadDirectory,
weak_ptr_factory_.GetWeakPtr(), success_callback, weak_ptr_factory_.GetWeakPtr(), success_callback,
error_callback, base::Owned(entries)))); std::move(error_callback), base::Owned(entries))));
} }
void MTPDeviceDelegateImplWin::CreateSnapshotFile( void MTPDeviceDelegateImplWin::CreateSnapshotFile(
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const base::FilePath& snapshot_file_path, const base::FilePath& snapshot_file_path,
const CreateSnapshotFileSuccessCallback& success_callback, const CreateSnapshotFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!device_file_path.empty()); DCHECK(!device_file_path.empty());
DCHECK(!snapshot_file_path.empty()); DCHECK(!snapshot_file_path.empty());
std::unique_ptr<SnapshotFileDetails> file_details(new SnapshotFileDetails( std::unique_ptr<SnapshotFileDetails> file_details(new SnapshotFileDetails(
SnapshotRequestInfo(device_file_path, snapshot_file_path, SnapshotRequestInfo(device_file_path, snapshot_file_path,
success_callback, error_callback))); success_callback, std::move(error_callback))));
// Passing a raw SnapshotFileDetails* to the blocking pool is safe, because // Passing a raw SnapshotFileDetails* to the blocking pool is safe, because
// it is owned by |file_details| in the reply callback. // it is owned by |file_details| in the reply callback.
EnsureInitAndRunTask(PendingTaskInfo( EnsureInitAndRunTask(PendingTaskInfo(
...@@ -447,7 +448,7 @@ void MTPDeviceDelegateImplWin::ReadBytes( ...@@ -447,7 +448,7 @@ void MTPDeviceDelegateImplWin::ReadBytes(
int64_t offset, int64_t offset,
int buf_len, int buf_len,
ReadBytesSuccessCallback success_callback, ReadBytesSuccessCallback success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
...@@ -461,7 +462,7 @@ void MTPDeviceDelegateImplWin::CopyFileLocal( ...@@ -461,7 +462,7 @@ void MTPDeviceDelegateImplWin::CopyFileLocal(
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const CopyFileProgressCallback& progress_callback, const CopyFileProgressCallback& progress_callback,
const CopyFileLocalSuccessCallback& success_callback, const CopyFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
...@@ -470,7 +471,7 @@ void MTPDeviceDelegateImplWin::MoveFileLocal( ...@@ -470,7 +471,7 @@ void MTPDeviceDelegateImplWin::MoveFileLocal(
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const MoveFileLocalSuccessCallback& success_callback, const MoveFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
...@@ -478,21 +479,21 @@ void MTPDeviceDelegateImplWin::CopyFileFromLocal( ...@@ -478,21 +479,21 @@ void MTPDeviceDelegateImplWin::CopyFileFromLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CopyFileFromLocalSuccessCallback& success_callback, const CopyFileFromLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
void MTPDeviceDelegateImplWin::DeleteFile( void MTPDeviceDelegateImplWin::DeleteFile(
const base::FilePath& file_path, const base::FilePath& file_path,
const DeleteFileSuccessCallback& success_callback, const DeleteFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
void MTPDeviceDelegateImplWin::DeleteDirectory( void MTPDeviceDelegateImplWin::DeleteDirectory(
const base::FilePath& file_path, const base::FilePath& file_path,
const DeleteDirectorySuccessCallback& success_callback, const DeleteDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) { ErrorCallback error_callback) {
NOTREACHED(); NOTREACHED();
} }
...@@ -557,8 +558,13 @@ void MTPDeviceDelegateImplWin::WriteDataChunkIntoSnapshotFile() { ...@@ -557,8 +558,13 @@ void MTPDeviceDelegateImplWin::WriteDataChunkIntoSnapshotFile() {
DCHECK(current_snapshot_details_.get()); DCHECK(current_snapshot_details_.get());
base::PostTaskAndReplyWithResult( base::PostTaskAndReplyWithResult(
media_task_runner_.get(), FROM_HERE, media_task_runner_.get(), FROM_HERE,
base::BindOnce(&WriteDataChunkIntoSnapshotFileOnBlockingPoolThread, base::BindOnce(
*current_snapshot_details_), &WriteDataChunkIntoSnapshotFileOnBlockingPoolThread,
current_snapshot_details_->file_info(),
Microsoft::WRL::ComPtr<IStream>(
current_snapshot_details_->device_file_stream()),
current_snapshot_details_->request_info().snapshot_file_path,
current_snapshot_details_->optimal_transfer_size()),
base::BindOnce( base::BindOnce(
&MTPDeviceDelegateImplWin::OnWroteDataChunkIntoSnapshotFile, &MTPDeviceDelegateImplWin::OnWroteDataChunkIntoSnapshotFile,
weak_ptr_factory_.GetWeakPtr(), weak_ptr_factory_.GetWeakPtr(),
...@@ -586,7 +592,7 @@ void MTPDeviceDelegateImplWin::OnInitCompleted(bool succeeded) { ...@@ -586,7 +592,7 @@ void MTPDeviceDelegateImplWin::OnInitCompleted(bool succeeded) {
void MTPDeviceDelegateImplWin::OnGetFileInfo( void MTPDeviceDelegateImplWin::OnGetFileInfo(
GetFileInfoSuccessCallback success_callback, GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
base::File::Info* file_info, base::File::Info* file_info,
base::File::Error error) { base::File::Error error) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
...@@ -594,14 +600,14 @@ void MTPDeviceDelegateImplWin::OnGetFileInfo( ...@@ -594,14 +600,14 @@ void MTPDeviceDelegateImplWin::OnGetFileInfo(
if (error == base::File::FILE_OK) if (error == base::File::FILE_OK)
std::move(success_callback).Run(*file_info); std::move(success_callback).Run(*file_info);
else else
error_callback.Run(error); std::move(error_callback).Run(error);
task_in_progress_ = false; task_in_progress_ = false;
ProcessNextPendingRequest(); ProcessNextPendingRequest();
} }
void MTPDeviceDelegateImplWin::OnDidReadDirectory( void MTPDeviceDelegateImplWin::OnDidReadDirectory(
const ReadDirectorySuccessCallback& success_callback, const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
storage::AsyncFileUtil::EntryList* file_list, storage::AsyncFileUtil::EntryList* file_list,
base::File::Error error) { base::File::Error error) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
...@@ -609,7 +615,7 @@ void MTPDeviceDelegateImplWin::OnDidReadDirectory( ...@@ -609,7 +615,7 @@ void MTPDeviceDelegateImplWin::OnDidReadDirectory(
if (error == base::File::FILE_OK) if (error == base::File::FILE_OK)
success_callback.Run(*file_list, false /*no more entries*/); success_callback.Run(*file_list, false /*no more entries*/);
else else
error_callback.Run(error); std::move(error_callback).Run(error);
task_in_progress_ = false; task_in_progress_ = false;
ProcessNextPendingRequest(); ProcessNextPendingRequest();
} }
...@@ -623,7 +629,7 @@ void MTPDeviceDelegateImplWin::OnGetFileStream( ...@@ -623,7 +629,7 @@ void MTPDeviceDelegateImplWin::OnGetFileStream(
DCHECK(!file_details->request_info().snapshot_file_path.empty()); DCHECK(!file_details->request_info().snapshot_file_path.empty());
DCHECK(!current_snapshot_details_.get()); DCHECK(!current_snapshot_details_.get());
if (error != base::File::FILE_OK) { if (error != base::File::FILE_OK) {
file_details->request_info().error_callback.Run(error); std::move(file_details->error_callback()).Run(error);
task_in_progress_ = false; task_in_progress_ = false;
ProcessNextPendingRequest(); ProcessNextPendingRequest();
return; return;
...@@ -670,8 +676,8 @@ void MTPDeviceDelegateImplWin::OnWroteDataChunkIntoSnapshotFile( ...@@ -670,8 +676,8 @@ void MTPDeviceDelegateImplWin::OnWroteDataChunkIntoSnapshotFile(
current_snapshot_details_->file_info(), current_snapshot_details_->file_info(),
current_snapshot_details_->request_info().snapshot_file_path); current_snapshot_details_->request_info().snapshot_file_path);
} else { } else {
current_snapshot_details_->request_info().error_callback.Run( std::move(current_snapshot_details_->error_callback())
base::File::FILE_ERROR_FAILED); .Run(base::File::FILE_ERROR_FAILED);
} }
task_in_progress_ = false; task_in_progress_ = false;
current_snapshot_details_.reset(); current_snapshot_details_.reset();
......
...@@ -96,29 +96,27 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate { ...@@ -96,29 +96,27 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate {
// MTPDeviceAsyncDelegate: // MTPDeviceAsyncDelegate:
void GetFileInfo(const base::FilePath& file_path, void GetFileInfo(const base::FilePath& file_path,
GetFileInfoSuccessCallback success_callback, GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void CreateDirectory( void CreateDirectory(const base::FilePath& directory_path,
const base::FilePath& directory_path, const bool exclusive,
const bool exclusive, const bool recursive,
const bool recursive, const CreateDirectorySuccessCallback& success_callback,
const CreateDirectorySuccessCallback& success_callback, ErrorCallback error_callback) override;
const ErrorCallback& error_callback) override; void ReadDirectory(const base::FilePath& root,
void ReadDirectory( const ReadDirectorySuccessCallback& success_callback,
const base::FilePath& root, ErrorCallback error_callback) override;
const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) override;
void CreateSnapshotFile( void CreateSnapshotFile(
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const base::FilePath& local_path, const base::FilePath& local_path,
const CreateSnapshotFileSuccessCallback& success_callback, const CreateSnapshotFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
bool IsStreaming() override; bool IsStreaming() override;
void ReadBytes(const base::FilePath& device_file_path, void ReadBytes(const base::FilePath& device_file_path,
const scoped_refptr<net::IOBuffer>& buf, const scoped_refptr<net::IOBuffer>& buf,
int64_t offset, int64_t offset,
int buf_len, int buf_len,
ReadBytesSuccessCallback success_callback, ReadBytesSuccessCallback success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
bool IsReadOnly() const override; bool IsReadOnly() const override;
void CopyFileLocal( void CopyFileLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
...@@ -126,24 +124,24 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate { ...@@ -126,24 +124,24 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate {
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const CopyFileProgressCallback& progress_callback, const CopyFileProgressCallback& progress_callback,
const CopyFileLocalSuccessCallback& success_callback, const CopyFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void MoveFileLocal( void MoveFileLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CreateTemporaryFileCallback& create_temporary_file_callback, const CreateTemporaryFileCallback& create_temporary_file_callback,
const MoveFileLocalSuccessCallback& success_callback, const MoveFileLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void CopyFileFromLocal( void CopyFileFromLocal(
const base::FilePath& source_file_path, const base::FilePath& source_file_path,
const base::FilePath& device_file_path, const base::FilePath& device_file_path,
const CopyFileFromLocalSuccessCallback& success_callback, const CopyFileFromLocalSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void DeleteFile(const base::FilePath& file_path, void DeleteFile(const base::FilePath& file_path,
const DeleteFileSuccessCallback& success_callback, const DeleteFileSuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void DeleteDirectory(const base::FilePath& file_path, void DeleteDirectory(const base::FilePath& file_path,
const DeleteDirectorySuccessCallback& success_callback, const DeleteDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback) override; ErrorCallback error_callback) override;
void AddWatcher(const GURL& origin, void AddWatcher(const GURL& origin,
const base::FilePath& file_path, const base::FilePath& file_path,
const bool recursive, const bool recursive,
...@@ -190,7 +188,7 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate { ...@@ -190,7 +188,7 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate {
// If the GetFileInfo() fails, |file_info| is not set and |error_callback| is // If the GetFileInfo() fails, |file_info| is not set and |error_callback| is
// invoked to notify the caller about the platform file |error|. // invoked to notify the caller about the platform file |error|.
void OnGetFileInfo(GetFileInfoSuccessCallback success_callback, void OnGetFileInfo(GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
base::File::Info* file_info, base::File::Info* file_info,
base::File::Error error); base::File::Error error);
...@@ -203,7 +201,7 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate { ...@@ -203,7 +201,7 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate {
// If the ReadDirectory() fails, |file_list| is not set and |error_callback| // If the ReadDirectory() fails, |file_list| is not set and |error_callback|
// is invoked to notify the caller about the platform file |error|. // is invoked to notify the caller about the platform file |error|.
void OnDidReadDirectory(const ReadDirectorySuccessCallback& success_callback, void OnDidReadDirectory(const ReadDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback, ErrorCallback error_callback,
storage::AsyncFileUtil::EntryList* file_list, storage::AsyncFileUtil::EntryList* file_list,
base::File::Error error); base::File::Error error);
......
...@@ -17,32 +17,24 @@ SnapshotRequestInfo::SnapshotRequestInfo( ...@@ -17,32 +17,24 @@ SnapshotRequestInfo::SnapshotRequestInfo(
const base::FilePath& snapshot_file_path, const base::FilePath& snapshot_file_path,
const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback& const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback&
success_callback, success_callback,
const MTPDeviceAsyncDelegate::ErrorCallback& error_callback) MTPDeviceAsyncDelegate::ErrorCallback error_callback)
: device_file_path(device_file_path), : device_file_path(device_file_path),
snapshot_file_path(snapshot_file_path), snapshot_file_path(snapshot_file_path),
success_callback(success_callback), success_callback(success_callback),
error_callback(error_callback) { error_callback(std::move(error_callback)) {}
}
SnapshotRequestInfo::SnapshotRequestInfo(const SnapshotRequestInfo& other) = SnapshotRequestInfo::SnapshotRequestInfo(SnapshotRequestInfo&& other) = default;
default;
SnapshotRequestInfo::~SnapshotRequestInfo() { SnapshotRequestInfo::~SnapshotRequestInfo() = default;
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// SnapshotFileDetails // // SnapshotFileDetails //
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
SnapshotFileDetails::SnapshotFileDetails( SnapshotFileDetails::SnapshotFileDetails(SnapshotRequestInfo request_info)
const SnapshotRequestInfo& request_info) : request_info_(std::move(request_info)),
: request_info_(request_info),
optimal_transfer_size_(0), optimal_transfer_size_(0),
bytes_written_(0) { bytes_written_(0) {}
}
SnapshotFileDetails::SnapshotFileDetails(const SnapshotFileDetails& other) =
default;
SnapshotFileDetails::~SnapshotFileDetails() { SnapshotFileDetails::~SnapshotFileDetails() {
file_stream_.Reset(); file_stream_.Reset();
......
...@@ -18,8 +18,10 @@ struct SnapshotRequestInfo { ...@@ -18,8 +18,10 @@ struct SnapshotRequestInfo {
const base::FilePath& snapshot_file_path, const base::FilePath& snapshot_file_path,
const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback& const MTPDeviceAsyncDelegate::CreateSnapshotFileSuccessCallback&
success_callback, success_callback,
const MTPDeviceAsyncDelegate::ErrorCallback& error_callback); MTPDeviceAsyncDelegate::ErrorCallback error_callback);
SnapshotRequestInfo(const SnapshotRequestInfo& other); SnapshotRequestInfo(SnapshotRequestInfo&& other);
SnapshotRequestInfo(const SnapshotRequestInfo& other) = delete;
SnapshotRequestInfo& operator=(const SnapshotRequestInfo& other) = delete;
~SnapshotRequestInfo(); ~SnapshotRequestInfo();
// Device file path. // Device file path.
...@@ -39,16 +41,17 @@ struct SnapshotRequestInfo { ...@@ -39,16 +41,17 @@ struct SnapshotRequestInfo {
// Provides the details for the the creation of snapshot file. // Provides the details for the the creation of snapshot file.
class SnapshotFileDetails { class SnapshotFileDetails {
public: public:
explicit SnapshotFileDetails(const SnapshotRequestInfo& request_info); explicit SnapshotFileDetails(SnapshotRequestInfo request_info);
SnapshotFileDetails(const SnapshotFileDetails& other);
~SnapshotFileDetails(); ~SnapshotFileDetails();
void set_file_info(const base::File::Info& file_info); void set_file_info(const base::File::Info& file_info);
void set_device_file_stream(IStream* file_stream); void set_device_file_stream(IStream* file_stream);
void set_optimal_transfer_size(DWORD optimal_transfer_size); void set_optimal_transfer_size(DWORD optimal_transfer_size);
SnapshotRequestInfo request_info() const { const SnapshotRequestInfo& request_info() const { return request_info_; }
return request_info_;
MTPDeviceAsyncDelegate::ErrorCallback error_callback() {
return std::move(request_info_.error_callback);
} }
base::File::Info file_info() const { base::File::Info file_info() const {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment