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

Unified Diff: chrome/browser/media_galleries/linux/mtp_device_task_helper.cc

Issue 2358493002: Remove MTP support on Linux. (Closed)
Patch Set: move files Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
diff --git a/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc b/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
deleted file mode 100644
index 859eb6584c16fbdb1d85c3e686f3c05b29467629..0000000000000000000000000000000000000000
--- a/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
+++ /dev/null
@@ -1,399 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/media_galleries/linux/mtp_device_task_helper.h"
-
-#include <algorithm>
-#include <limits>
-
-#include "base/logging.h"
-#include "chrome/browser/media_galleries/linux/mtp_device_object_enumerator.h"
-#include "chrome/browser/media_galleries/linux/mtp_read_file_worker.h"
-#include "chrome/browser/media_galleries/linux/snapshot_file_details.h"
-#include "components/storage_monitor/storage_monitor.h"
-#include "content/public/browser/browser_thread.h"
-#include "device/media_transfer_protocol/media_transfer_protocol_manager.h"
-#include "net/base/io_buffer.h"
-#include "storage/browser/fileapi/async_file_util.h"
-#include "storage/common/fileapi/file_system_util.h"
-#include "third_party/cros_system_api/dbus/service_constants.h"
-
-using storage_monitor::StorageMonitor;
-
-namespace {
-
-// Does nothing.
-// This method is used to handle the results of
-// MediaTransferProtocolManager::CloseStorage method call.
-void DoNothing(bool error) {
-}
-
-device::MediaTransferProtocolManager* GetMediaTransferProtocolManager() {
- return StorageMonitor::GetInstance()->media_transfer_protocol_manager();
-}
-
-base::File::Info FileInfoFromMTPFileEntry(const MtpFileEntry& file_entry) {
- base::File::Info file_entry_info;
- file_entry_info.size = file_entry.file_size();
- file_entry_info.is_directory =
- file_entry.file_type() == MtpFileEntry::FILE_TYPE_FOLDER;
- file_entry_info.is_symbolic_link = false;
- file_entry_info.last_modified =
- base::Time::FromTimeT(file_entry.modification_time());
- file_entry_info.last_accessed = file_entry_info.last_modified;
- file_entry_info.creation_time = base::Time();
- return file_entry_info;
-}
-
-} // namespace
-
-MTPDeviceTaskHelper::MTPDeviceTaskHelper()
- : weak_ptr_factory_(this) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-}
-
-MTPDeviceTaskHelper::~MTPDeviceTaskHelper() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-}
-
-void MTPDeviceTaskHelper::OpenStorage(const std::string& storage_name,
- const bool read_only,
- const OpenStorageCallback& callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- DCHECK(!storage_name.empty());
- if (!device_handle_.empty()) {
- content::BrowserThread::PostTask(content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(callback, true));
- return;
- }
-
- const std::string mode =
- read_only ? mtpd::kReadOnlyMode : mtpd::kReadWriteMode;
- GetMediaTransferProtocolManager()->OpenStorage(
- storage_name, mode, base::Bind(&MTPDeviceTaskHelper::OnDidOpenStorage,
- weak_ptr_factory_.GetWeakPtr(), callback));
-}
-
-void MTPDeviceTaskHelper::GetFileInfo(
- uint32_t file_id,
- const GetFileInfoSuccessCallback& success_callback,
- const ErrorCallback& error_callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (device_handle_.empty())
- return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED);
-
- GetMediaTransferProtocolManager()->GetFileInfo(
- device_handle_, file_id,
- base::Bind(&MTPDeviceTaskHelper::OnGetFileInfo,
- weak_ptr_factory_.GetWeakPtr(),
- success_callback,
- error_callback));
-}
-
-void MTPDeviceTaskHelper::CreateDirectory(
- const uint32_t parent_id,
- const std::string& directory_name,
- const CreateDirectorySuccessCallback& success_callback,
- const ErrorCallback& error_callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (device_handle_.empty())
- return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED);
-
- GetMediaTransferProtocolManager()->CreateDirectory(
- device_handle_, parent_id, directory_name,
- base::Bind(&MTPDeviceTaskHelper::OnCreateDirectory,
- weak_ptr_factory_.GetWeakPtr(), success_callback,
- error_callback));
-}
-
-void MTPDeviceTaskHelper::ReadDirectory(
- const uint32_t directory_id,
- const size_t max_size,
- const ReadDirectorySuccessCallback& success_callback,
- const ErrorCallback& error_callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (device_handle_.empty())
- return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED);
-
- GetMediaTransferProtocolManager()->ReadDirectory(
- device_handle_, directory_id, max_size,
- base::Bind(&MTPDeviceTaskHelper::OnDidReadDirectory,
- weak_ptr_factory_.GetWeakPtr(), success_callback,
- error_callback));
-}
-
-void MTPDeviceTaskHelper::WriteDataIntoSnapshotFile(
- const SnapshotRequestInfo& request_info,
- const base::File::Info& snapshot_file_info) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (device_handle_.empty()) {
- return HandleDeviceError(request_info.error_callback,
- base::File::FILE_ERROR_FAILED);
- }
-
- if (!read_file_worker_)
- read_file_worker_.reset(new MTPReadFileWorker(device_handle_));
- read_file_worker_->WriteDataIntoSnapshotFile(request_info,
- snapshot_file_info);
-}
-
-void MTPDeviceTaskHelper::ReadBytes(
- const MTPDeviceAsyncDelegate::ReadBytesRequest& request) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (device_handle_.empty()) {
- return HandleDeviceError(request.error_callback,
- base::File::FILE_ERROR_FAILED);
- }
-
- GetMediaTransferProtocolManager()->GetFileInfo(
- device_handle_, request.file_id,
- base::Bind(&MTPDeviceTaskHelper::OnGetFileInfoToReadBytes,
- weak_ptr_factory_.GetWeakPtr(), request));
-}
-
-void MTPDeviceTaskHelper::RenameObject(
- const uint32_t object_id,
- const std::string& new_name,
- const RenameObjectSuccessCallback& success_callback,
- const ErrorCallback& error_callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- GetMediaTransferProtocolManager()->RenameObject(
- device_handle_, object_id, new_name,
- base::Bind(&MTPDeviceTaskHelper::OnRenameObject,
- weak_ptr_factory_.GetWeakPtr(), success_callback,
- error_callback));
-}
-
-MTPDeviceTaskHelper::MTPEntry::MTPEntry() : file_id(0) {}
-
-// TODO(yawano) storage_name is not used, delete it.
-void MTPDeviceTaskHelper::CopyFileFromLocal(
- const std::string& storage_name,
- const int source_file_descriptor,
- const uint32_t parent_id,
- const std::string& file_name,
- const CopyFileFromLocalSuccessCallback& success_callback,
- const ErrorCallback& error_callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- GetMediaTransferProtocolManager()->CopyFileFromLocal(
- device_handle_, source_file_descriptor, parent_id, file_name,
- base::Bind(&MTPDeviceTaskHelper::OnCopyFileFromLocal,
- weak_ptr_factory_.GetWeakPtr(), success_callback,
- error_callback));
-}
-
-void MTPDeviceTaskHelper::DeleteObject(
- const uint32_t object_id,
- const DeleteObjectSuccessCallback& success_callback,
- const ErrorCallback& error_callback) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
-
- GetMediaTransferProtocolManager()->DeleteObject(
- device_handle_, object_id,
- base::Bind(&MTPDeviceTaskHelper::OnDeleteObject,
- weak_ptr_factory_.GetWeakPtr(), success_callback,
- error_callback));
-}
-
-void MTPDeviceTaskHelper::CloseStorage() const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (device_handle_.empty())
- return;
- GetMediaTransferProtocolManager()->CloseStorage(device_handle_,
- base::Bind(&DoNothing));
-}
-
-void MTPDeviceTaskHelper::OnDidOpenStorage(
- const OpenStorageCallback& completion_callback,
- const std::string& device_handle,
- bool error) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- device_handle_ = device_handle;
- content::BrowserThread::PostTask(content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(completion_callback, !error));
-}
-
-void MTPDeviceTaskHelper::OnGetFileInfo(
- const GetFileInfoSuccessCallback& success_callback,
- const ErrorCallback& error_callback,
- const MtpFileEntry& file_entry,
- bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error) {
- return HandleDeviceError(error_callback,
- base::File::FILE_ERROR_NOT_FOUND);
- }
-
- content::BrowserThread::PostTask(
- content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(success_callback, FileInfoFromMTPFileEntry(file_entry)));
-}
-
-void MTPDeviceTaskHelper::OnCreateDirectory(
- const CreateDirectorySuccessCallback& success_callback,
- const ErrorCallback& error_callback,
- const bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error) {
- content::BrowserThread::PostTask(
- content::BrowserThread::IO, FROM_HERE,
- base::Bind(error_callback, base::File::FILE_ERROR_FAILED));
- return;
- }
-
- content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
- success_callback);
-}
-
-void MTPDeviceTaskHelper::OnDidReadDirectory(
- const ReadDirectorySuccessCallback& success_callback,
- const ErrorCallback& error_callback,
- const std::vector<MtpFileEntry>& file_entries,
- bool has_more,
- bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error)
- return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED);
-
- MTPEntries entries;
- base::FilePath current;
- MTPDeviceObjectEnumerator file_enum(file_entries);
- while (!(current = file_enum.Next()).empty()) {
- MTPEntry entry;
- entry.name = storage::VirtualPath::BaseName(current).value();
- bool ret = file_enum.GetEntryId(&entry.file_id);
- DCHECK(ret);
- entry.file_info.is_directory = file_enum.IsDirectory();
- entry.file_info.size = file_enum.Size();
- entry.file_info.last_modified = file_enum.LastModifiedTime();
- entries.push_back(entry);
- }
- content::BrowserThread::PostTask(
- content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(success_callback, entries, has_more));
-}
-
-void MTPDeviceTaskHelper::OnGetFileInfoToReadBytes(
- const MTPDeviceAsyncDelegate::ReadBytesRequest& request,
- const MtpFileEntry& file_entry,
- bool error) {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- DCHECK(request.buf.get());
- DCHECK_GE(request.buf_len, 0);
- DCHECK_GE(request.offset, 0);
- if (error) {
- return HandleDeviceError(request.error_callback,
- base::File::FILE_ERROR_FAILED);
- }
-
- base::File::Info file_info = FileInfoFromMTPFileEntry(file_entry);
- if (file_info.is_directory) {
- return HandleDeviceError(request.error_callback,
- base::File::FILE_ERROR_NOT_A_FILE);
- } else if (file_info.size < 0 ||
- file_info.size > std::numeric_limits<uint32_t>::max() ||
- request.offset > file_info.size) {
- return HandleDeviceError(request.error_callback,
- base::File::FILE_ERROR_FAILED);
- } else if (request.offset == file_info.size) {
- content::BrowserThread::PostTask(content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(request.success_callback,
- file_info, 0u));
- return;
- }
-
- uint32_t bytes_to_read =
- std::min(base::checked_cast<uint32_t>(request.buf_len),
- base::saturated_cast<uint32_t>(file_info.size - request.offset));
-
- GetMediaTransferProtocolManager()->ReadFileChunk(
- device_handle_, request.file_id,
- base::checked_cast<uint32_t>(request.offset), bytes_to_read,
- base::Bind(&MTPDeviceTaskHelper::OnDidReadBytes,
- weak_ptr_factory_.GetWeakPtr(), request, file_info));
-}
-
-void MTPDeviceTaskHelper::OnDidReadBytes(
- const MTPDeviceAsyncDelegate::ReadBytesRequest& request,
- const base::File::Info& file_info,
- const std::string& data,
- bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error) {
- return HandleDeviceError(request.error_callback,
- base::File::FILE_ERROR_FAILED);
- }
-
- CHECK_LE(base::checked_cast<int>(data.length()), request.buf_len);
- std::copy(data.begin(), data.end(), request.buf->data());
-
- content::BrowserThread::PostTask(content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(request.success_callback,
- file_info, data.length()));
-}
-
-void MTPDeviceTaskHelper::OnRenameObject(
- const RenameObjectSuccessCallback& success_callback,
- const ErrorCallback& error_callback,
- const bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error) {
- content::BrowserThread::PostTask(
- content::BrowserThread::IO, FROM_HERE,
- base::Bind(error_callback, base::File::FILE_ERROR_FAILED));
- return;
- }
-
- content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
- success_callback);
-}
-
-void MTPDeviceTaskHelper::OnCopyFileFromLocal(
- const CopyFileFromLocalSuccessCallback& success_callback,
- const ErrorCallback& error_callback,
- const bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error) {
- content::BrowserThread::PostTask(
- content::BrowserThread::IO, FROM_HERE,
- base::Bind(error_callback, base::File::FILE_ERROR_FAILED));
- return;
- }
-
- content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
- success_callback);
-}
-
-void MTPDeviceTaskHelper::OnDeleteObject(
- const DeleteObjectSuccessCallback& success_callback,
- const ErrorCallback& error_callback,
- const bool error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (error) {
- content::BrowserThread::PostTask(
- content::BrowserThread::IO, FROM_HERE,
- base::Bind(error_callback, base::File::FILE_ERROR_FAILED));
- return;
- }
-
- content::BrowserThread::PostTask(content::BrowserThread::IO, FROM_HERE,
- success_callback);
-}
-
-void MTPDeviceTaskHelper::HandleDeviceError(
- const ErrorCallback& error_callback,
- base::File::Error error) const {
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- content::BrowserThread::PostTask(content::BrowserThread::IO,
- FROM_HERE,
- base::Bind(error_callback, error));
-}

Powered by Google App Engine
This is Rietveld 408576698