Commit 90c0bb3a authored by Xida Chen's avatar Xida Chen Committed by Chromium LUCI CQ

[Code health] Convert GetFileInfoSuccessCallback to OnceCallback

As a result of this convert, the PendingTaskInfo::task is
converted to a base::OnceClosure.

This is a code health CL, no behaviour change is expected.

Bug: 1152278
Change-Id: I1bb1434f01b35818336a37bed6687ab71b1dfaf3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2593480
Commit-Queue: Xida Chen <xidachen@chromium.org>
Reviewed-by: default avatarTommy Li <tommycli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#837712}
parent 4e2e4686
......@@ -196,14 +196,15 @@ void GetFileInfoOnUIThread(
const std::string& storage_name,
const bool read_only,
uint32_t file_id,
const MTPDeviceTaskHelper::GetFileInfoSuccessCallback& success_callback,
MTPDeviceTaskHelper::GetFileInfoSuccessCallback success_callback,
const MTPDeviceTaskHelper::ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
MTPDeviceTaskHelper* task_helper =
GetDeviceTaskHelperForStorage(storage_name, read_only);
if (!task_helper)
return;
task_helper->GetFileInfo(file_id, success_callback, error_callback);
task_helper->GetFileInfo(file_id, std::move(success_callback),
error_callback);
}
// Copies the contents of |device_file_path| to |snapshot_file_path|.
......@@ -394,11 +395,18 @@ MTPDeviceDelegateImplLinux::PendingTaskInfo::PendingTaskInfo(
const base::FilePath& path,
content::BrowserThread::ID thread_id,
const base::Location& location,
const base::Closure& task)
: path(path), thread_id(thread_id), location(location), task(task) {}
base::OnceClosure task)
: path(path),
thread_id(thread_id),
location(location),
task(std::move(task)) {}
MTPDeviceDelegateImplLinux::PendingTaskInfo::PendingTaskInfo(
const PendingTaskInfo& other) = default;
PendingTaskInfo&& other)
: path(other.path),
thread_id(other.thread_id),
location(other.location),
task(std::move(other.task)) {}
MTPDeviceDelegateImplLinux::PendingTaskInfo::~PendingTaskInfo() {
}
......@@ -563,17 +571,18 @@ void MTPDeviceDelegateImplLinux::CreateDirectory(
components.push_back(directory_path);
}
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::CreateDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), components, exclusive,
success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(
directory_path, content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::CreateDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), components, exclusive,
success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(directory_path,
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::GetFileInfo(
const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!file_path.empty());
......@@ -585,19 +594,15 @@ void MTPDeviceDelegateImplLinux::GetFileInfo(
// TODO(thestig): This code is repeated in several places. Combine them.
// e.g. c/b/media_galleries/win/mtp_device_operations_util.cc
const MTPDeviceTaskHelper::MTPEntry& cached_file_entry = it->second;
success_callback.Run(cached_file_entry.file_info);
std::move(success_callback).Run(cached_file_entry.file_info);
return;
}
base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(),
file_path,
success_callback,
error_callback);
EnsureInitAndRunTask(PendingTaskInfo(file_path,
content::BrowserThread::IO,
FROM_HERE,
closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
std::move(success_callback), error_callback);
EnsureInitAndRunTask(PendingTaskInfo(file_path, content::BrowserThread::IO,
FROM_HERE, std::move(closure)));
}
void MTPDeviceDelegateImplLinux::ReadDirectory(
......@@ -606,16 +611,11 @@ void MTPDeviceDelegateImplLinux::ReadDirectory(
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!root.empty());
base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::ReadDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(),
root,
success_callback,
error_callback);
EnsureInitAndRunTask(PendingTaskInfo(root,
content::BrowserThread::IO,
FROM_HERE,
closure));
base::OnceClosure closure = base::BindOnce(
&MTPDeviceDelegateImplLinux::ReadDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), root, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(root, content::BrowserThread::IO,
FROM_HERE, std::move(closure)));
}
void MTPDeviceDelegateImplLinux::CreateSnapshotFile(
......@@ -626,17 +626,13 @@ void MTPDeviceDelegateImplLinux::CreateSnapshotFile(
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!device_file_path.empty());
DCHECK(!local_path.empty());
base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::CreateSnapshotFileInternal,
weak_ptr_factory_.GetWeakPtr(),
device_file_path,
local_path,
success_callback,
error_callback);
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::CreateSnapshotFileInternal,
weak_ptr_factory_.GetWeakPtr(), device_file_path,
local_path, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(device_file_path,
content::BrowserThread::IO,
FROM_HERE,
closure));
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
bool MTPDeviceDelegateImplLinux::IsStreaming() {
......@@ -652,14 +648,13 @@ void MTPDeviceDelegateImplLinux::ReadBytes(
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!device_file_path.empty());
base::Closure closure = base::Bind(
base::OnceClosure closure = base::BindOnce(
&MTPDeviceDelegateImplLinux::ReadBytesInternal,
weak_ptr_factory_.GetWeakPtr(), device_file_path, base::RetainedRef(buf),
offset, buf_len, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(device_file_path,
content::BrowserThread::IO,
FROM_HERE,
closure));
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
bool MTPDeviceDelegateImplLinux::IsReadOnly() const {
......@@ -700,16 +695,17 @@ void MTPDeviceDelegateImplLinux::MoveFileLocal(
DCHECK(!device_file_path.empty());
// Get file info to move file on local.
const GetFileInfoSuccessCallback success_callback_wrapper = base::Bind(
GetFileInfoSuccessCallback success_callback_wrapper = base::BindOnce(
&MTPDeviceDelegateImplLinux::MoveFileLocalInternal,
weak_ptr_factory_.GetWeakPtr(), source_file_path, device_file_path,
create_temporary_file_callback, success_callback, error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), source_file_path,
success_callback_wrapper, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(
source_file_path, content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), source_file_path,
std::move(success_callback_wrapper), error_callback);
EnsureInitAndRunTask(PendingTaskInfo(source_file_path,
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::CopyFileFromLocal(
......@@ -722,19 +718,20 @@ void MTPDeviceDelegateImplLinux::CopyFileFromLocal(
DCHECK(!device_file_path.empty());
// Get file info of destination file path.
const GetFileInfoSuccessCallback success_callback_wrapper = base::Bind(
GetFileInfoSuccessCallback success_callback_wrapper = base::BindOnce(
&MTPDeviceDelegateImplLinux::OnDidGetDestFileInfoToCopyFileFromLocal,
weak_ptr_factory_.GetWeakPtr(), error_callback);
const ErrorCallback error_callback_wrapper = base::Bind(
&MTPDeviceDelegateImplLinux::OnGetDestFileInfoErrorToCopyFileFromLocal,
weak_ptr_factory_.GetWeakPtr(), source_file_path, device_file_path,
success_callback, error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), device_file_path,
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
device_file_path, content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure = base::BindOnce(
&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), device_file_path,
std::move(success_callback_wrapper), error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(device_file_path,
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::DeleteFile(
......@@ -744,17 +741,17 @@ void MTPDeviceDelegateImplLinux::DeleteFile(
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!file_path.empty());
const GetFileInfoSuccessCallback& success_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::DeleteFileInternal,
weak_ptr_factory_.GetWeakPtr(), file_path, success_callback,
error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
success_callback_wrapper, error_callback);
GetFileInfoSuccessCallback success_callback_wrapper =
base::BindOnce(&MTPDeviceDelegateImplLinux::DeleteFileInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
success_callback, error_callback);
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
std::move(success_callback_wrapper), error_callback);
EnsureInitAndRunTask(PendingTaskInfo(file_path, content::BrowserThread::IO,
FROM_HERE, closure));
FROM_HERE, std::move(closure)));
}
void MTPDeviceDelegateImplLinux::DeleteDirectory(
......@@ -764,17 +761,17 @@ void MTPDeviceDelegateImplLinux::DeleteDirectory(
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!file_path.empty());
const GetFileInfoSuccessCallback& success_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::DeleteDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), file_path, success_callback,
error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
success_callback_wrapper, error_callback);
GetFileInfoSuccessCallback success_callback_wrapper =
base::BindOnce(&MTPDeviceDelegateImplLinux::DeleteDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
success_callback, error_callback);
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), file_path,
std::move(success_callback_wrapper), error_callback);
EnsureInitAndRunTask(PendingTaskInfo(file_path, content::BrowserThread::IO,
FROM_HERE, closure));
FROM_HERE, std::move(closure)));
}
void MTPDeviceDelegateImplLinux::AddWatcher(
......@@ -857,27 +854,25 @@ void MTPDeviceDelegateImplLinux::CancelPendingTasksAndDeleteDelegate() {
void MTPDeviceDelegateImplLinux::GetFileInfoInternal(
const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
base::Optional<uint32_t> file_id = CachedPathToId(file_path);
if (file_id) {
GetFileInfoSuccessCallback success_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::OnDidGetFileInfo,
weak_ptr_factory_.GetWeakPtr(),
success_callback);
GetFileInfoSuccessCallback success_callback_wrapper = base::BindOnce(
&MTPDeviceDelegateImplLinux::OnDidGetFileInfo,
weak_ptr_factory_.GetWeakPtr(), std::move(success_callback));
ErrorCallback error_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError,
weak_ptr_factory_.GetWeakPtr(), error_callback, *file_id);
base::Closure closure =
base::Bind(&GetFileInfoOnUIThread, storage_name_, read_only_, *file_id,
success_callback_wrapper, error_callback_wrapper);
base::OnceClosure closure = base::BindOnce(
&GetFileInfoOnUIThread, storage_name_, read_only_, *file_id,
std::move(success_callback_wrapper), error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI,
FROM_HERE,
closure));
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
} else {
error_callback.Run(base::File::FILE_ERROR_NOT_FOUND);
}
......@@ -901,12 +896,13 @@ void MTPDeviceDelegateImplLinux::CreateDirectoryInternal(
base::Optional<uint32_t> parent_id =
CachedPathToId(current_component.DirName());
if (parent_id) {
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::CreateSingleDirectory,
weak_ptr_factory_.GetWeakPtr(), current_component,
exclusive, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::CreateSingleDirectory,
weak_ptr_factory_.GetWeakPtr(), current_component,
exclusive, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::IO,
FROM_HERE, std::move(closure)));
} else {
error_callback.Run(base::File::FILE_ERROR_NOT_FOUND);
}
......@@ -916,12 +912,13 @@ void MTPDeviceDelegateImplLinux::CreateDirectoryInternal(
if (directory_id) {
// Parent directory |current_component| already exists, continue creating
// directories.
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::CreateDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), other_components,
exclusive, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::CreateDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), other_components,
exclusive, success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::IO,
FROM_HERE, std::move(closure)));
} else {
// If parent directory |current_component| does not exist, create it.
const CreateDirectorySuccessCallback success_callback_wrapper =
......@@ -936,13 +933,14 @@ void MTPDeviceDelegateImplLinux::CreateDirectoryInternal(
base::Bind(&MTPDeviceDelegateImplLinux::
OnCreateParentDirectoryErrorToCreateDirectory,
weak_ptr_factory_.GetWeakPtr(), error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::CreateSingleDirectory,
weak_ptr_factory_.GetWeakPtr(), current_component,
false /* not exclusive */, success_callback_wrapper,
error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::CreateSingleDirectory,
weak_ptr_factory_.GetWeakPtr(), current_component,
false /* not exclusive */, success_callback_wrapper,
error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::IO,
FROM_HERE, std::move(closure)));
}
}
......@@ -963,18 +961,18 @@ void MTPDeviceDelegateImplLinux::ReadDirectoryInternal(
return;
}
GetFileInfoSuccessCallback success_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::OnDidGetFileInfoToReadDirectory,
weak_ptr_factory_.GetWeakPtr(), *dir_id, success_callback,
error_callback);
GetFileInfoSuccessCallback success_callback_wrapper = base::BindOnce(
&MTPDeviceDelegateImplLinux::OnDidGetFileInfoToReadDirectory,
weak_ptr_factory_.GetWeakPtr(), *dir_id, success_callback,
error_callback);
ErrorCallback error_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError,
weak_ptr_factory_.GetWeakPtr(), error_callback, *dir_id);
base::Closure closure =
base::Bind(&GetFileInfoOnUIThread, storage_name_, read_only_, *dir_id,
success_callback_wrapper, error_callback_wrapper);
base::OnceClosure closure = base::BindOnce(
&GetFileInfoOnUIThread, storage_name_, read_only_, *dir_id,
std::move(success_callback_wrapper), error_callback_wrapper);
content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, closure);
content::GetUIThreadTaskRunner({})->PostTask(FROM_HERE, std::move(closure));
}
void MTPDeviceDelegateImplLinux::CreateSnapshotFileInternal(
......@@ -988,21 +986,18 @@ void MTPDeviceDelegateImplLinux::CreateSnapshotFileInternal(
if (file_id) {
auto request_info = std::make_unique<SnapshotRequestInfo>(
*file_id, local_path, success_callback, error_callback);
GetFileInfoSuccessCallback success_callback_wrapper =
base::Bind(
&MTPDeviceDelegateImplLinux::OnDidGetFileInfoToCreateSnapshotFile,
weak_ptr_factory_.GetWeakPtr(),
base::Passed(&request_info));
GetFileInfoSuccessCallback success_callback_wrapper = base::BindOnce(
&MTPDeviceDelegateImplLinux::OnDidGetFileInfoToCreateSnapshotFile,
weak_ptr_factory_.GetWeakPtr(), base::Passed(&request_info));
ErrorCallback error_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError,
weak_ptr_factory_.GetWeakPtr(), error_callback, *file_id);
base::Closure closure =
base::Bind(&GetFileInfoOnUIThread, storage_name_, read_only_, *file_id,
success_callback_wrapper, error_callback_wrapper);
base::OnceClosure closure = base::BindOnce(
&GetFileInfoOnUIThread, storage_name_, read_only_, *file_id,
std::move(success_callback_wrapper), error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI,
FROM_HERE,
closure));
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
} else {
error_callback.Run(base::File::FILE_ERROR_NOT_FOUND);
}
......@@ -1028,12 +1023,11 @@ void MTPDeviceDelegateImplLinux::ReadBytesInternal(
weak_ptr_factory_.GetWeakPtr(), error_callback,
*file_id));
base::Closure closure =
base::Bind(&ReadBytesOnUIThread, storage_name_, read_only_, request);
base::OnceClosure closure = base::BindOnce(
&ReadBytesOnUIThread, storage_name_, read_only_, request);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI,
FROM_HERE,
closure));
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
} else {
error_callback.Run(base::File::FILE_ERROR_NOT_FOUND);
}
......@@ -1066,12 +1060,13 @@ void MTPDeviceDelegateImplLinux::MoveFileLocalInternal(
const MTPDeviceTaskHelper::ErrorCallback error_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError,
weak_ptr_factory_.GetWeakPtr(), error_callback, *file_id);
const base::Closure closure =
base::Bind(&RenameObjectOnUIThread, storage_name_, read_only_,
*file_id, device_file_path.BaseName().value(),
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::UI, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&RenameObjectOnUIThread, storage_name_, read_only_,
*file_id, device_file_path.BaseName().value(),
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI,
FROM_HERE, std::move(closure)));
} else {
error_callback.Run(base::File::FILE_ERROR_NOT_FOUND);
}
......@@ -1121,13 +1116,14 @@ void MTPDeviceDelegateImplLinux::OnDidOpenFDToCopyFileFromLocal(
&MTPDeviceDelegateImplLinux::HandleCopyFileFromLocalError,
weak_ptr_factory_.GetWeakPtr(), error_callback, source_file_descriptor);
base::Closure closure = base::Bind(
base::OnceClosure closure = base::BindOnce(
&CopyFileFromLocalOnUIThread, storage_name_, read_only_,
source_file_descriptor, *parent_id, device_file_path.BaseName().value(),
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::UI, FROM_HERE, closure));
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::DeleteFileInternal(
......@@ -1190,11 +1186,12 @@ void MTPDeviceDelegateImplLinux::DeleteDirectoryInternal(
const MTPDeviceTaskHelper::ErrorCallback error_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError,
weak_ptr_factory_.GetWeakPtr(), error_callback, *directory_id);
const base::Closure closure = base::Bind(
base::OnceClosure closure = base::BindOnce(
&CheckDirectoryEmptyOnUIThread, storage_name_, read_only_, *directory_id,
base::Passed(&success_callback_wrapper), error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::UI, FROM_HERE, closure));
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::CreateSingleDirectory(
......@@ -1204,7 +1201,7 @@ void MTPDeviceDelegateImplLinux::CreateSingleDirectory(
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
const GetFileInfoSuccessCallback success_callback_wrapper = base::Bind(
GetFileInfoSuccessCallback success_callback_wrapper = base::BindOnce(
&MTPDeviceDelegateImplLinux::OnPathAlreadyExistsForCreateSingleDirectory,
weak_ptr_factory_.GetWeakPtr(), exclusive, success_callback,
error_callback);
......@@ -1212,12 +1209,13 @@ void MTPDeviceDelegateImplLinux::CreateSingleDirectory(
&MTPDeviceDelegateImplLinux::OnPathDoesNotExistForCreateSingleDirectory,
weak_ptr_factory_.GetWeakPtr(), directory_path, success_callback,
error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), directory_path,
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure = base::BindOnce(
&MTPDeviceDelegateImplLinux::GetFileInfoInternal,
weak_ptr_factory_.GetWeakPtr(), directory_path,
std::move(success_callback_wrapper), error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
PendingRequestDone();
}
......@@ -1233,12 +1231,13 @@ void MTPDeviceDelegateImplLinux::OnDidReadDirectoryToCreateDirectory(
if (has_more)
return; // Wait until all entries have been read.
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::CreateDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), components, exclusive,
success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&MTPDeviceDelegateImplLinux::CreateDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), components, exclusive,
success_callback, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::OnDidCheckDirectoryEmptyToDeleteDirectory(
......@@ -1274,27 +1273,28 @@ void MTPDeviceDelegateImplLinux::RunDeleteObjectOnUIThread(
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeleteFileOrDirectoryError,
weak_ptr_factory_.GetWeakPtr(), error_callback);
const base::Closure closure =
base::Bind(&DeleteObjectOnUIThread, storage_name_, read_only_, object_id,
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::UI, FROM_HERE, closure));
base::OnceClosure closure = base::BindOnce(
&DeleteObjectOnUIThread, storage_name_, read_only_, object_id,
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::EnsureInitAndRunTask(
const PendingTaskInfo& task_info) {
PendingTaskInfo task_info) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
if ((init_state_ == INITIALIZED) && !task_in_progress_) {
RunTask(task_info);
RunTask(std::move(task_info));
return;
}
// Only *Internal functions have empty paths. Since they are the continuation
// of the current running task, they get to cut in line.
if (task_info.path.empty())
pending_tasks_.push_front(task_info);
pending_tasks_.push_front(std::move(task_info));
else
pending_tasks_.push_back(task_info);
pending_tasks_.push_back(std::move(task_info));
if (init_state_ == UNINITIALIZED) {
init_state_ = PENDING_INIT;
......@@ -1307,7 +1307,7 @@ void MTPDeviceDelegateImplLinux::EnsureInitAndRunTask(
}
}
void MTPDeviceDelegateImplLinux::RunTask(const PendingTaskInfo& task_info) {
void MTPDeviceDelegateImplLinux::RunTask(PendingTaskInfo task_info) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK_EQ(INITIALIZED, init_state_);
DCHECK(!task_in_progress_);
......@@ -1319,13 +1319,14 @@ void MTPDeviceDelegateImplLinux::RunTask(const PendingTaskInfo& task_info) {
NextUncachedPathComponent(task_info.path, task_info.cached_path);
if (!uncached_path.empty()) {
// Save the current task and do a cache lookup first.
pending_tasks_.push_front(task_info);
pending_tasks_.push_front(std::move(task_info));
FillFileCache(uncached_path);
return;
}
}
base::PostTask(task_info.location, {task_info.thread_id}, task_info.task);
base::PostTask(task_info.location, {task_info.thread_id},
std::move(task_info.task));
}
void MTPDeviceDelegateImplLinux::WriteDataIntoSnapshotFile(
......@@ -1364,9 +1365,9 @@ void MTPDeviceDelegateImplLinux::ProcessNextPendingRequest() {
if (pending_tasks_.empty())
return;
PendingTaskInfo task_info = pending_tasks_.front();
PendingTaskInfo task_info = std::move(pending_tasks_.front());
pending_tasks_.pop_front();
RunTask(task_info);
RunTask(std::move(task_info));
}
void MTPDeviceDelegateImplLinux::OnInitCompleted(bool succeeded) {
......@@ -1376,10 +1377,10 @@ void MTPDeviceDelegateImplLinux::OnInitCompleted(bool succeeded) {
}
void MTPDeviceDelegateImplLinux::OnDidGetFileInfo(
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const base::File::Info& file_info) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
success_callback.Run(file_info);
std::move(success_callback).Run(file_info);
PendingRequestDone();
}
......@@ -1421,12 +1422,13 @@ void MTPDeviceDelegateImplLinux::OnPathDoesNotExistForCreateSingleDirectory(
const MTPDeviceTaskHelper::ErrorCallback error_callback_wrapper =
base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError,
weak_ptr_factory_.GetWeakPtr(), error_callback, *parent_id);
const base::Closure closure =
base::Bind(&CreateDirectoryOnUIThread, storage_name_, read_only_,
*parent_id, directory_path.BaseName().value(),
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::UI, FROM_HERE, closure));
base::OnceClosure closure =
base::BindOnce(&CreateDirectoryOnUIThread, storage_name_, read_only_,
*parent_id, directory_path.BaseName().value(),
success_callback_wrapper, error_callback_wrapper);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::UI, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::OnDidGetFileInfoToReadDirectory(
......@@ -1543,12 +1545,13 @@ void MTPDeviceDelegateImplLinux::OnDidCreateParentDirectoryToCreateDirectory(
&MTPDeviceDelegateImplLinux::OnDidReadDirectoryToCreateDirectory,
weak_ptr_factory_.GetWeakPtr(), components, exclusive, success_callback,
error_callback);
const base::Closure closure =
base::Bind(&MTPDeviceDelegateImplLinux::ReadDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), created_directory.DirName(),
success_callback_wrapper, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(
base::FilePath(), content::BrowserThread::IO, FROM_HERE, closure));
base::OnceClosure closure = base::BindOnce(
&MTPDeviceDelegateImplLinux::ReadDirectoryInternal,
weak_ptr_factory_.GetWeakPtr(), created_directory.DirName(),
success_callback_wrapper, error_callback);
EnsureInitAndRunTask(PendingTaskInfo(base::FilePath(),
content::BrowserThread::IO, FROM_HERE,
std::move(closure)));
}
void MTPDeviceDelegateImplLinux::OnCreateParentDirectoryErrorToCreateDirectory(
......
......@@ -52,15 +52,15 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
PendingTaskInfo(const base::FilePath& path,
content::BrowserThread::ID thread_id,
const base::Location& location,
const base::Closure& task);
PendingTaskInfo(const PendingTaskInfo& other);
base::OnceClosure task);
PendingTaskInfo(PendingTaskInfo&& other);
~PendingTaskInfo();
base::FilePath path;
base::FilePath cached_path;
const content::BrowserThread::ID thread_id;
const base::Location location;
const base::Closure task;
base::OnceClosure task;
};
class MTPFileNode;
......@@ -84,7 +84,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
// MTPDeviceAsyncDelegate:
void GetFileInfo(const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) override;
void CreateDirectory(const base::FilePath& directory_path,
const bool exclusive,
......@@ -146,7 +146,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
// The internal methods correspond to the similarly named methods above.
// The |root_node_| cache should be filled at this point.
void GetFileInfoInternal(const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback);
void CreateDirectoryInternal(
const std::vector<base::FilePath>& components,
......@@ -233,13 +233,13 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
// If the device is uninitialized, store the |task_info| in a pending task
// queue and runs the pending tasks in the queue once the device is
// successfully initialized.
void EnsureInitAndRunTask(const PendingTaskInfo& task_info);
void EnsureInitAndRunTask(PendingTaskInfo task_info);
// Runs a task. If |task_info.path| is empty, or if the path is cached, runs
// the task immediately.
// Otherwise, fills the cache first before running the task.
// |task_info.task| runs on the UI thread.
void RunTask(const PendingTaskInfo& task_info);
void RunTask(PendingTaskInfo task_info);
// Writes data from the device to the snapshot file path based on the
// parameters in |current_snapshot_request_info_| by doing a call-and-reply to
......@@ -263,7 +263,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
// Called when GetFileInfo() succeeds. |file_info| specifies the
// requested file details. |success_callback| is invoked to notify the caller
// about the requested file details.
void OnDidGetFileInfo(const GetFileInfoSuccessCallback& success_callback,
void OnDidGetFileInfo(GetFileInfoSuccessCallback success_callback,
const base::File::Info& file_info);
// Called when GetFileInfo() of |directory_path| succeeded at checking the
......
......@@ -106,7 +106,7 @@ void MTPDeviceTaskHelper::OpenStorage(const std::string& storage_name,
void MTPDeviceTaskHelper::GetFileInfo(
uint32_t file_id,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (device_handle_.empty())
......@@ -116,8 +116,8 @@ void MTPDeviceTaskHelper::GetFileInfo(
GetMediaTransferProtocolManager()->GetFileInfo(
device_handle_, file_ids,
base::BindOnce(&MTPDeviceTaskHelper::OnGetFileInfo,
weak_ptr_factory_.GetWeakPtr(), success_callback,
error_callback));
weak_ptr_factory_.GetWeakPtr(),
std::move(success_callback), error_callback));
}
void MTPDeviceTaskHelper::CreateDirectory(
......@@ -260,7 +260,7 @@ void MTPDeviceTaskHelper::OnDidOpenStorage(
}
void MTPDeviceTaskHelper::OnGetFileInfo(
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback,
std::vector<device::mojom::MtpFileEntryPtr> entries,
bool error) const {
......@@ -271,8 +271,9 @@ void MTPDeviceTaskHelper::OnGetFileInfo(
}
content::GetIOThreadTaskRunner({})->PostTask(
FROM_HERE, base::BindOnce(success_callback, FileInfoFromMTPFileEntry(
std::move(entries[0]))));
FROM_HERE,
base::BindOnce(std::move(success_callback),
FileInfoFromMTPFileEntry(std::move(entries[0]))));
}
void MTPDeviceTaskHelper::OnCreateDirectory(
......
......@@ -86,7 +86,7 @@ class MTPDeviceTaskHelper {
// If there is an error, |error_callback| is invoked on the IO thread to
// notify the caller about the file error.
void GetFileInfo(uint32_t file_id,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback);
// Forwards CreateDirectory request to the MediaTransferProtocolManager.
......@@ -184,7 +184,7 @@ class MTPDeviceTaskHelper {
// When |entries| has a size other than 1, or if |error| is true, then an
// error has occurred. In this case, |error_callback| is invoked on the IO
// thread to notify the caller.
void OnGetFileInfo(const GetFileInfoSuccessCallback& success_callback,
void OnGetFileInfo(GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback,
std::vector<device::mojom::MtpFileEntryPtr> entries,
bool error) const;
......
......@@ -375,10 +375,10 @@ void DeviceMediaAsyncFileUtil::GetFileInfo(
auto copyable_callback = base::AdaptCallbackForRepeating(std::move(callback));
delegate->GetFileInfo(
url.path(),
base::Bind(&DeviceMediaAsyncFileUtil::OnDidGetFileInfo,
weak_ptr_factory_.GetWeakPtr(),
base::RetainedRef(context->task_runner()), url.path(),
copyable_callback),
base::BindOnce(&DeviceMediaAsyncFileUtil::OnDidGetFileInfo,
weak_ptr_factory_.GetWeakPtr(),
base::RetainedRef(context->task_runner()), url.path(),
copyable_callback),
base::BindRepeating(&OnGetFileInfoError, copyable_callback));
}
......
......@@ -30,8 +30,8 @@ class IOBuffer;
class MTPDeviceAsyncDelegate {
public:
// A callback to be called when GetFileInfo method call succeeds.
typedef base::Callback<
void(const base::File::Info& file_info)> GetFileInfoSuccessCallback;
typedef base::OnceCallback<void(const base::File::Info& file_info)>
GetFileInfoSuccessCallback;
// A callback to be called when CreateDirectory method call succeeds.
typedef base::Closure CreateDirectorySuccessCallback;
......@@ -98,10 +98,9 @@ class MTPDeviceAsyncDelegate {
// Gets information about the given |file_path| and invokes the appropriate
// callback asynchronously when complete.
virtual void GetFileInfo(
const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
const ErrorCallback& error_callback) = 0;
virtual void GetFileInfo(const base::FilePath& file_path,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) = 0;
// Creates a directory to |directory_path|. When |exclusive| is true, this
// returns base::File::FILE_ERROR_EXISTS if a directory already exists for
......
......@@ -91,8 +91,8 @@ int64_t MTPFileStreamReader::GetLength(
get_length_callback_ = std::move(callback);
delegate->GetFileInfo(
url_.path(),
base::Bind(&MTPFileStreamReader::FinishGetLength,
weak_factory_.GetWeakPtr()),
base::BindOnce(&MTPFileStreamReader::FinishGetLength,
weak_factory_.GetWeakPtr()),
base::BindRepeating(
&MTPFileStreamReader::CallGetLengthCallbackWithPlatformFileError,
weak_factory_.GetWeakPtr()));
......
......@@ -36,7 +36,7 @@ class MTPDeviceDelegateImplMac : public MTPDeviceAsyncDelegate {
// IO thread by the async filesystem file util. They forward to
// similarly-named methods on the UI thread.
void GetFileInfo(const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) override;
void CreateDirectory(const base::FilePath& directory_path,
......
......@@ -149,13 +149,12 @@ MTPDeviceDelegateImplMac::~MTPDeviceDelegateImplMac() {
namespace {
void ForwardGetFileInfo(
base::File::Info* info,
base::File::Error* error,
const GetFileInfoSuccessCallback& success_callback,
const ErrorCallback& error_callback) {
void ForwardGetFileInfo(base::File::Info* info,
base::File::Error* error,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) {
if (*error == base::File::FILE_OK)
success_callback.Run(*info);
std::move(success_callback).Run(*info);
else
error_callback.Run(*error);
}
......@@ -164,7 +163,7 @@ void ForwardGetFileInfo(
void MTPDeviceDelegateImplMac::GetFileInfo(
const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) {
base::File::Info* info = new base::File::Info;
base::File::Error* error = new base::File::Error;
......@@ -173,8 +172,8 @@ void MTPDeviceDelegateImplMac::GetFileInfo(
FROM_HERE,
base::Bind(&MTPDeviceDelegateImplMac::GetFileInfoImpl,
base::Unretained(this), file_path, info, error),
base::Bind(&ForwardGetFileInfo, base::Owned(info), base::Owned(error),
success_callback, error_callback));
base::BindOnce(&ForwardGetFileInfo, base::Owned(info), base::Owned(error),
std::move(success_callback), error_callback));
}
void MTPDeviceDelegateImplMac::CreateDirectory(
......
......@@ -375,7 +375,7 @@ MTPDeviceDelegateImplWin::~MTPDeviceDelegateImplWin() {
void MTPDeviceDelegateImplWin::GetFileInfo(
const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!file_path.empty());
......@@ -385,8 +385,9 @@ void MTPDeviceDelegateImplWin::GetFileInfo(
base::BindOnce(&GetFileInfoOnBlockingPoolThread, storage_device_info_,
file_path, base::Unretained(file_info)),
base::BindOnce(&MTPDeviceDelegateImplWin::OnGetFileInfo,
weak_ptr_factory_.GetWeakPtr(), success_callback,
error_callback, base::Owned(file_info))));
weak_ptr_factory_.GetWeakPtr(),
std::move(success_callback), error_callback,
base::Owned(file_info))));
}
void MTPDeviceDelegateImplWin::CreateDirectory(
......@@ -584,14 +585,14 @@ void MTPDeviceDelegateImplWin::OnInitCompleted(bool succeeded) {
}
void MTPDeviceDelegateImplWin::OnGetFileInfo(
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback,
base::File::Info* file_info,
base::File::Error error) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(file_info);
if (error == base::File::FILE_OK)
success_callback.Run(*file_info);
std::move(success_callback).Run(*file_info);
else
error_callback.Run(error);
task_in_progress_ = false;
......
......@@ -95,7 +95,7 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate {
// MTPDeviceAsyncDelegate:
void GetFileInfo(const base::FilePath& file_path,
const GetFileInfoSuccessCallback& success_callback,
GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback) override;
void CreateDirectory(
const base::FilePath& directory_path,
......@@ -189,7 +189,7 @@ class MTPDeviceDelegateImplWin : public MTPDeviceAsyncDelegate {
//
// If the GetFileInfo() fails, |file_info| is not set and |error_callback| is
// invoked to notify the caller about the platform file |error|.
void OnGetFileInfo(const GetFileInfoSuccessCallback& success_callback,
void OnGetFileInfo(GetFileInfoSuccessCallback success_callback,
const ErrorCallback& error_callback,
base::File::Info* file_info,
base::File::Error error);
......
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