Index: chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc |
diff --git a/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc b/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc |
index 50f6291400d111d00acb186aba83813b121fb75e..158f75f553bad333c60f7d2fda95781c9d2c4ee8 100644 |
--- a/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc |
+++ b/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc |
@@ -4,8 +4,11 @@ |
#include "chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.h" |
+#include <algorithm> |
+ |
#include "base/bind.h" |
#include "base/files/file_path.h" |
+#include "base/numerics/safe_conversions.h" |
#include "base/strings/string_util.h" |
#include "chrome/browser/media_galleries/linux/mtp_device_task_helper.h" |
#include "chrome/browser/media_galleries/linux/mtp_device_task_helper_map_service.h" |
@@ -292,17 +295,17 @@ void MTPDeviceDelegateImplLinux::ReadBytes( |
DCHECK(!device_file_path.empty()); |
std::string device_file_relative_path = |
GetDeviceRelativePath(device_path_, device_file_path); |
- ReadBytesRequest request(device_file_relative_path, buf, offset, buf_len, |
- success_callback, error_callback); |
+ |
+ ReadBytesRequest request( |
+ device_file_relative_path, buf, offset, buf_len, |
+ base::Bind(&MTPDeviceDelegateImplLinux::OnDidReadBytes, |
+ weak_ptr_factory_.GetWeakPtr(), success_callback), |
+ base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError, |
+ weak_ptr_factory_.GetWeakPtr(), error_callback)); |
+ |
base::Closure call_closure = |
- base::Bind( |
- &GetFileInfoOnUIThread, |
- storage_name_, |
- device_file_relative_path, |
- base::Bind(&MTPDeviceDelegateImplLinux::OnDidGetFileInfoToReadBytes, |
- weak_ptr_factory_.GetWeakPtr(), request), |
- base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError, |
- weak_ptr_factory_.GetWeakPtr(), error_callback)); |
+ base::Bind(base::Bind(&ReadBytesOnUIThread, storage_name_, request)); |
+ |
EnsureInitAndRunTask(PendingTaskInfo(FROM_HERE, call_closure)); |
} |
@@ -452,38 +455,6 @@ void MTPDeviceDelegateImplLinux::OnDidGetFileInfoToCreateSnapshotFile( |
WriteDataIntoSnapshotFile(snapshot_file_info); |
} |
-void MTPDeviceDelegateImplLinux::OnDidGetFileInfoToReadBytes( |
- const ReadBytesRequest& request, |
- const base::File::Info& file_info) { |
- DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
- DCHECK(request.buf); |
- DCHECK(request.buf_len >= 0); |
- DCHECK(task_in_progress_); |
- base::File::Error error = base::File::FILE_OK; |
- if (file_info.is_directory) |
- error = base::File::FILE_ERROR_NOT_A_FILE; |
- else if (file_info.size < 0 || file_info.size > kuint32max) |
- error = base::File::FILE_ERROR_FAILED; |
- |
- if (error != base::File::FILE_OK) |
- return HandleDeviceFileError(request.error_callback, error); |
- |
- ReadBytesRequest new_request( |
- request.device_file_relative_path, |
- request.buf, |
- request.offset, |
- request.buf_len, |
- base::Bind(&MTPDeviceDelegateImplLinux::OnDidReadBytes, |
- weak_ptr_factory_.GetWeakPtr(), request.success_callback), |
- base::Bind(&MTPDeviceDelegateImplLinux::HandleDeviceFileError, |
- weak_ptr_factory_.GetWeakPtr(), request.error_callback)); |
- |
- content::BrowserThread::PostTask( |
- content::BrowserThread::UI, |
- FROM_HERE, |
- base::Bind(&ReadBytesOnUIThread, storage_name_, new_request)); |
-} |
- |
void MTPDeviceDelegateImplLinux::OnDidReadDirectory( |
const ReadDirectorySuccessCallback& success_callback, |
const fileapi::AsyncFileUtil::EntryList& file_list) { |
@@ -519,10 +490,10 @@ void MTPDeviceDelegateImplLinux::OnWriteDataIntoSnapshotFileError( |
void MTPDeviceDelegateImplLinux::OnDidReadBytes( |
const ReadBytesSuccessCallback& success_callback, |
- int bytes_read) { |
+ const base::File::Info& file_info, int bytes_read) { |
DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
DCHECK(task_in_progress_); |
- success_callback.Run(bytes_read); |
+ success_callback.Run(file_info, bytes_read); |
task_in_progress_ = false; |
ProcessNextPendingRequest(); |
} |