Index: chromeos/dbus/cros_disks_client.cc |
diff --git a/chromeos/dbus/cros_disks_client.cc b/chromeos/dbus/cros_disks_client.cc |
index d29cae11a1195bcddc233801426b204e57da7f3e..9819a314908778f07f71fbd40e92be518d3575d3 100644 |
--- a/chromeos/dbus/cros_disks_client.cc |
+++ b/chromeos/dbus/cros_disks_client.cc |
@@ -17,6 +17,7 @@ |
#include "base/task_runner_util.h" |
#include "base/threading/worker_pool.h" |
#include "base/values.h" |
+#include "chromeos/dbus/fake_cros_disks_client.h" |
#include "dbus/bus.h" |
#include "dbus/message.h" |
#include "dbus/object_path.h" |
@@ -454,188 +455,6 @@ class CrosDisksClientImpl : public CrosDisksClient { |
DISALLOW_COPY_AND_ASSIGN(CrosDisksClientImpl); |
}; |
-// A stub implementaion of CrosDisksClient. |
-class CrosDisksClientStubImpl : public CrosDisksClient { |
- public: |
- CrosDisksClientStubImpl() |
- : weak_ptr_factory_(this) {} |
- |
- virtual ~CrosDisksClientStubImpl() {} |
- |
- // CrosDisksClient overrides: |
- virtual void Init(dbus::Bus* bus) override {} |
- virtual void Mount(const std::string& source_path, |
- const std::string& source_format, |
- const std::string& mount_label, |
- const base::Closure& callback, |
- const base::Closure& error_callback) override { |
- // This stub implementation only accepts archive mount requests. |
- const MountType type = MOUNT_TYPE_ARCHIVE; |
- |
- const base::FilePath mounted_path = GetArchiveMountPoint().Append( |
- base::FilePath::FromUTF8Unsafe(mount_label)); |
- |
- // Already mounted path. |
- if (mounted_to_source_path_map_.count(mounted_path.value()) != 0) { |
- FinishMount(MOUNT_ERROR_PATH_ALREADY_MOUNTED, source_path, type, |
- std::string(), callback); |
- return; |
- } |
- |
- // Perform fake mount. |
- base::PostTaskAndReplyWithResult( |
- base::WorkerPool::GetTaskRunner(true /* task_is_slow */).get(), |
- FROM_HERE, |
- base::Bind(&PerformFakeMount, source_path, mounted_path), |
- base::Bind(&CrosDisksClientStubImpl::ContinueMount, |
- weak_ptr_factory_.GetWeakPtr(), |
- source_path, |
- type, |
- callback, |
- mounted_path)); |
- } |
- |
- virtual void Unmount(const std::string& device_path, |
- UnmountOptions options, |
- const base::Closure& callback, |
- const base::Closure& error_callback) override { |
- // Not mounted. |
- if (mounted_to_source_path_map_.count(device_path) == 0) { |
- base::MessageLoopProxy::current()->PostTask(FROM_HERE, error_callback); |
- return; |
- } |
- |
- mounted_to_source_path_map_.erase(device_path); |
- |
- // Remove the directory created in Mount(). |
- base::WorkerPool::PostTaskAndReply( |
- FROM_HERE, |
- base::Bind(base::IgnoreResult(&base::DeleteFile), |
- base::FilePath::FromUTF8Unsafe(device_path), |
- true /* recursive */), |
- callback, |
- true /* task_is_slow */); |
- } |
- |
- virtual void EnumerateAutoMountableDevices( |
- const EnumerateAutoMountableDevicesCallback& callback, |
- const base::Closure& error_callback) override { |
- std::vector<std::string> device_paths; |
- base::MessageLoopProxy::current()->PostTask( |
- FROM_HERE, base::Bind(callback, device_paths)); |
- } |
- |
- virtual void EnumerateMountEntries( |
- const EnumerateMountEntriesCallback& callback, |
- const base::Closure& error_callback) override { |
- std::vector<MountEntry> entries; |
- base::MessageLoopProxy::current()->PostTask( |
- FROM_HERE, base::Bind(callback, entries)); |
- } |
- |
- virtual void Format(const std::string& device_path, |
- const std::string& filesystem, |
- const base::Closure& callback, |
- const base::Closure& error_callback) override { |
- base::MessageLoopProxy::current()->PostTask(FROM_HERE, error_callback); |
- } |
- |
- virtual void GetDeviceProperties( |
- const std::string& device_path, |
- const GetDevicePropertiesCallback& callback, |
- const base::Closure& error_callback) override { |
- base::MessageLoopProxy::current()->PostTask(FROM_HERE, error_callback); |
- } |
- |
- virtual void SetMountEventHandler( |
- const MountEventHandler& mount_event_handler) override { |
- mount_event_handler_ = mount_event_handler; |
- } |
- |
- virtual void SetMountCompletedHandler( |
- const MountCompletedHandler& mount_completed_handler) override { |
- mount_completed_handler_ = mount_completed_handler; |
- } |
- |
- virtual void SetFormatCompletedHandler( |
- const FormatCompletedHandler& format_completed_handler) override { |
- format_completed_handler_ = format_completed_handler; |
- } |
- |
- private: |
- // Performs file actions for Mount(). |
- static MountError PerformFakeMount(const std::string& source_path, |
- const base::FilePath& mounted_path) { |
- // Check the source path exists. |
- if (!base::PathExists(base::FilePath::FromUTF8Unsafe(source_path))) { |
- DLOG(ERROR) << "Source does not exist at " << source_path; |
- return MOUNT_ERROR_INVALID_PATH; |
- } |
- |
- // Just create an empty directory and shows it as the mounted directory. |
- if (!base::CreateDirectory(mounted_path)) { |
- DLOG(ERROR) << "Failed to create directory at " << mounted_path.value(); |
- return MOUNT_ERROR_DIRECTORY_CREATION_FAILED; |
- } |
- |
- // Put a dummy file. |
- const base::FilePath dummy_file_path = |
- mounted_path.Append("SUCCESSFULLY_PERFORMED_FAKE_MOUNT.txt"); |
- const std::string dummy_file_content = "This is a dummy file."; |
- const int write_result = base::WriteFile( |
- dummy_file_path, dummy_file_content.data(), dummy_file_content.size()); |
- if (write_result != static_cast<int>(dummy_file_content.size())) { |
- DLOG(ERROR) << "Failed to put a dummy file at " |
- << dummy_file_path.value(); |
- return MOUNT_ERROR_MOUNT_PROGRAM_FAILED; |
- } |
- |
- return MOUNT_ERROR_NONE; |
- } |
- |
- // Part of Mount() implementation. |
- void ContinueMount(const std::string& source_path, |
- MountType type, |
- const base::Closure& callback, |
- const base::FilePath& mounted_path, |
- MountError mount_error) { |
- if (mount_error != MOUNT_ERROR_NONE) { |
- FinishMount(mount_error, source_path, type, std::string(), callback); |
- return; |
- } |
- mounted_to_source_path_map_[mounted_path.value()] = source_path; |
- FinishMount(MOUNT_ERROR_NONE, source_path, type, |
- mounted_path.AsUTF8Unsafe(), callback); |
- } |
- |
- // Runs |callback| and sends MountCompleted signal. |
- // Part of Mount() implementation. |
- void FinishMount(MountError error, |
- const std::string& source_path, |
- MountType type, |
- const std::string& mounted_path, |
- const base::Closure& callback) { |
- base::MessageLoopProxy::current()->PostTask(FROM_HERE, callback); |
- if (!mount_completed_handler_.is_null()) { |
- base::MessageLoopProxy::current()->PostTask( |
- FROM_HERE, |
- base::Bind(mount_completed_handler_, |
- MountEntry(error, source_path, type, mounted_path))); |
- } |
- } |
- |
- // Mounted path to source path map. |
- std::map<std::string, std::string> mounted_to_source_path_map_; |
- |
- MountEventHandler mount_event_handler_; |
- MountCompletedHandler mount_completed_handler_; |
- FormatCompletedHandler format_completed_handler_; |
- |
- base::WeakPtrFactory<CrosDisksClientStubImpl> weak_ptr_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CrosDisksClientStubImpl); |
-}; |
- |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -822,7 +641,7 @@ CrosDisksClient* CrosDisksClient::Create(DBusClientImplementationType type) { |
if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
return new CrosDisksClientImpl(); |
DCHECK_EQ(STUB_DBUS_CLIENT_IMPLEMENTATION, type); |
- return new CrosDisksClientStubImpl(); |
+ return new FakeCrosDisksClient(); |
} |
// static |