| Index: chrome/browser/chromeos/dbus/cros_disks_client.h
|
| diff --git a/chrome/browser/chromeos/cros/mount_library.h b/chrome/browser/chromeos/dbus/cros_disks_client.h
|
| similarity index 65%
|
| rename from chrome/browser/chromeos/cros/mount_library.h
|
| rename to chrome/browser/chromeos/dbus/cros_disks_client.h
|
| index 3eb7b4777e912d81741008dd64732a50b4d0dd21..732927cbd5be9c7a29ed8b066c4314d02518ea9b 100644
|
| --- a/chrome/browser/chromeos/cros/mount_library.h
|
| +++ b/chrome/browser/chromeos/dbus/cros_disks_client.h
|
| @@ -2,21 +2,52 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef CHROME_BROWSER_CHROMEOS_CROS_MOUNT_LIBRARY_H_
|
| -#define CHROME_BROWSER_CHROMEOS_CROS_MOUNT_LIBRARY_H_
|
| +#ifndef CHROME_BROWSER_CHROMEOS_DBUS_CROS_DISKS_CLIENT_H_
|
| +#define CHROME_BROWSER_CHROMEOS_DBUS_CROS_DISKS_CLIENT_H_
|
| #pragma once
|
|
|
| #include <map>
|
| #include <string>
|
| +#include <vector>
|
|
|
| -#include "base/memory/singleton.h"
|
| -#include "base/observer_list.h"
|
| -#include "base/time.h"
|
| -#include "third_party/cros/chromeos_mount.h"
|
| +#include "base/basictypes.h"
|
| +
|
| +namespace dbus {
|
| +class Bus;
|
| +}
|
|
|
| namespace chromeos {
|
|
|
| -typedef enum MountLibraryEventType {
|
| +enum MountType {
|
| + MOUNT_TYPE_INVALID,
|
| + MOUNT_TYPE_DEVICE,
|
| + MOUNT_TYPE_ARCHIVE,
|
| + MOUNT_TYPE_NETWORK_STORAGE
|
| +};
|
| +
|
| +enum DeviceType {
|
| + FLASH,
|
| + HDD,
|
| + OPTICAL,
|
| + UNDEFINED
|
| +};
|
| +
|
| +enum MountError {
|
| + MOUNT_ERROR_NONE = 0,
|
| + MOUNT_ERROR_UNKNOWN = 1,
|
| + MOUNT_ERROR_INTERNAL = 2,
|
| + MOUNT_ERROR_UNKNOWN_FILESYSTEM = 101,
|
| + MOUNT_ERROR_UNSUPORTED_FILESYSTEM = 102,
|
| + MOUNT_ERROR_INVALID_ARCHIVE = 201,
|
| + MOUNT_ERROR_LIBRARY_NOT_LOADED = 501,
|
| + MOUNT_ERROR_PATH_UNMOUNTED = 901
|
| + // TODO(tbarzic): Add more error codes as they get added to cros-disks and
|
| + // consider doing explicit translation from cros-disks error_types.
|
| +};
|
| +
|
| +typedef std::vector<std::pair<std::string, std::string> > MountPathOptions;
|
| +
|
| +enum CrosDisksClientEventType {
|
| MOUNT_DISK_ADDED,
|
| MOUNT_DISK_REMOVED,
|
| MOUNT_DISK_CHANGED,
|
| @@ -27,45 +58,17 @@ typedef enum MountLibraryEventType {
|
| MOUNT_DEVICE_SCANNED,
|
| MOUNT_FORMATTING_STARTED,
|
| MOUNT_FORMATTING_FINISHED
|
| -} MountLibraryEventType;
|
| +};
|
|
|
| -typedef enum MountCondition {
|
| +enum MountCondition {
|
| MOUNT_CONDITION_NONE,
|
| MOUNT_CONDITION_UNKNOWN_FILESYSTEM,
|
| MOUNT_CONDITION_UNSUPPORTED_FILESYSTEM
|
| -} MountCondition;
|
| -
|
| -class MountLibcrosProxy {
|
| - public:
|
| - virtual ~MountLibcrosProxy() {}
|
| - virtual void CallMountPath(const char* source_path,
|
| - MountType type,
|
| - const MountPathOptions& options,
|
| - MountCompletedMonitor callback,
|
| - void* object) = 0;
|
| - virtual void CallUnmountPath(const char* path,
|
| - UnmountRequestCallback callback,
|
| - void* object) = 0;
|
| - virtual void CallRequestMountInfo(RequestMountInfoCallback callback,
|
| - void* object) = 0;
|
| - virtual void CallFormatDevice(const char* device_path,
|
| - const char* filesystem,
|
| - FormatRequestCallback callback,
|
| - void* object) = 0;
|
| - virtual void CallGetDiskProperties(const char* device_path,
|
| - GetDiskPropertiesCallback callback,
|
| - void* object) = 0;
|
| - virtual MountEventConnection MonitorCrosDisks(MountEventMonitor monitor,
|
| - MountCompletedMonitor mount_complete_monitor,
|
| - void* object) = 0;
|
| - virtual void DisconnectCrosDisksMonitorIfSet(MountEventConnection connection)
|
| - = 0;
|
| };
|
|
|
| -// This class handles the interaction with the ChromeOS mount library APIs.
|
| -// Classes can add themselves as observers. Users can get an instance of this
|
| -// library class like this: chromeos::CrosLibrary::Get()->GetMountLibrary()
|
| -class MountLibrary {
|
| +// This class handles the interaction with cros-disks.
|
| +// Classes can add themselves as observers.
|
| +class CrosDisksClient {
|
| public:
|
| enum MountEvent {
|
| MOUNTING,
|
| @@ -124,7 +127,9 @@ class MountLibrary {
|
| // Shoud the device be shown in the UI, or automounted.
|
| bool is_hidden() const { return is_hidden_; }
|
|
|
| - void set_mount_path(const char* mount_path) { mount_path_ = mount_path; }
|
| + void set_mount_path(const std::string& mount_path) {
|
| + mount_path_ = mount_path;
|
| + }
|
| void clear_mount_path() { mount_path_.clear(); }
|
|
|
| private:
|
| @@ -153,10 +158,10 @@ class MountLibrary {
|
| MountType mount_type;
|
| MountCondition mount_condition;
|
|
|
| - MountPointInfo(const char* source, const char* mount, const MountType type,
|
| - MountCondition condition)
|
| - : source_path(source ? source : ""),
|
| - mount_path(mount ? mount : ""),
|
| + MountPointInfo(const std::string& source, const std::string& mount,
|
| + const MountType type, MountCondition condition)
|
| + : source_path(source),
|
| + mount_path(mount),
|
| mount_type(type),
|
| mount_condition(condition) {
|
| }
|
| @@ -171,44 +176,43 @@ class MountLibrary {
|
| public:
|
| virtual ~Observer() {}
|
| // Async API events.
|
| - virtual void DiskChanged(MountLibraryEventType event,
|
| + virtual void DiskChanged(CrosDisksClientEventType event,
|
| const Disk* disk) = 0;
|
| - virtual void DeviceChanged(MountLibraryEventType event,
|
| + virtual void DeviceChanged(CrosDisksClientEventType event,
|
| const std::string& device_path) = 0;
|
| virtual void MountCompleted(MountEvent event_type,
|
| MountError error_code,
|
| const MountPointInfo& mount_info) = 0;
|
| };
|
|
|
| - virtual ~MountLibrary() {}
|
| - virtual void Init() = 0;
|
| + virtual ~CrosDisksClient() {}
|
| virtual void AddObserver(Observer* observer) = 0;
|
| virtual void RemoveObserver(Observer* observer) = 0;
|
| virtual const DiskMap& disks() const = 0;
|
| virtual const MountPointMap& mount_points() const = 0;
|
|
|
| virtual void RequestMountInfoRefresh() = 0;
|
| - virtual void MountPath(const char* source_path,
|
| + virtual void MountPath(const std::string& source_path,
|
| MountType type,
|
| const MountPathOptions& options) = 0;
|
| // |path| is device's mount path.
|
| - virtual void UnmountPath(const char* path) = 0;
|
| + virtual void UnmountPath(const std::string& path) = 0;
|
|
|
| // Retrieves total and remaining available size on |mount_path|.
|
| - virtual void GetSizeStatsOnFileThread(const char* mount_path,
|
| + virtual void GetSizeStatsOnFileThread(const std::string& mount_path,
|
| size_t* total_size_kb,
|
| size_t* remaining_size_kb) = 0;
|
|
|
| // Formats device given its file path.
|
| // Example: file_path: /dev/sdb1
|
| - virtual void FormatUnmountedDevice(const char* file_path) = 0;
|
| + virtual void FormatUnmountedDevice(const std::string& file_path) = 0;
|
|
|
| // Formats Device given its mount path. Unmount's the device
|
| // Example: mount_path: /media/VOLUME_LABEL
|
| - virtual void FormatMountedDevice(const char* mount_path) = 0;
|
| + virtual void FormatMountedDevice(const std::string& mount_path) = 0;
|
|
|
| // Unmounts device_poath and all of its known children.
|
| - virtual void UnmountDeviceRecursive(const char* device_path,
|
| + virtual void UnmountDeviceRecursive(const std::string& device_path,
|
| UnmountDeviceRecursiveCallbackType callback, void* user_data) = 0;
|
|
|
| // Helper functions for parameter conversions.
|
| @@ -216,14 +220,11 @@ class MountLibrary {
|
| static MountType MountTypeFromString(const std::string& type_str);
|
| static std::string MountConditionToString(MountCondition type);
|
|
|
| - // Used in testing. Enables mocking libcros.
|
| - virtual void SetLibcrosProxy(MountLibcrosProxy* proxy) {}
|
| -
|
| // Factory function, creates a new instance and returns ownership.
|
| - // For normal usage, access the singleton via CrosLibrary::Get().
|
| - static MountLibrary* GetImpl(bool stub);
|
| + // For normal usage, access the singleton via DBusThreadManager::Get().
|
| + static CrosDisksClient* Create(dbus::Bus* bus);
|
| };
|
|
|
| } // namespace chromeos
|
|
|
| -#endif // CHROME_BROWSER_CHROMEOS_CROS_MOUNT_LIBRARY_H_
|
| +#endif // CHROME_BROWSER_CHROMEOS_DBUS_CROS_DISKS_CLIENT_H_
|
|
|