Commit 25b15981 authored by Anand K. Mistry's avatar Anand K. Mistry Committed by Commit Bot

Split chromeos::MountError from cros_disks::MountErrorType.

Make chromeos::MountError contiguous and add explicit translation
between the two types. This will allow mount errors to be recorded in
UMA.

BUG=873903

Change-Id: Ib9225cf7befd0521cc329c47dd482e24cd1dd0de
Reviewed-on: https://chromium-review.googlesource.com/1174090
Commit-Queue: Anand Mistry <amistry@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583481}
parent 97f3b920
...@@ -73,6 +73,52 @@ DeviceType DeviceMediaTypeToDeviceType(uint32_t media_type_uint32) { ...@@ -73,6 +73,52 @@ DeviceType DeviceMediaTypeToDeviceType(uint32_t media_type_uint32) {
} }
} }
MountError CrosDisksMountErrorToChromeMountError(
cros_disks::MountErrorType mount_error) {
switch (mount_error) {
case cros_disks::MOUNT_ERROR_NONE:
return MOUNT_ERROR_NONE;
case cros_disks::MOUNT_ERROR_UNKNOWN:
return MOUNT_ERROR_UNKNOWN;
case cros_disks::MOUNT_ERROR_INTERNAL:
return MOUNT_ERROR_INTERNAL;
case cros_disks::MOUNT_ERROR_INVALID_ARGUMENT:
return MOUNT_ERROR_INVALID_ARGUMENT;
case cros_disks::MOUNT_ERROR_INVALID_PATH:
return MOUNT_ERROR_INVALID_PATH;
case cros_disks::MOUNT_ERROR_PATH_ALREADY_MOUNTED:
return MOUNT_ERROR_PATH_ALREADY_MOUNTED;
case cros_disks::MOUNT_ERROR_PATH_NOT_MOUNTED:
return MOUNT_ERROR_PATH_NOT_MOUNTED;
case cros_disks::MOUNT_ERROR_DIRECTORY_CREATION_FAILED:
return MOUNT_ERROR_DIRECTORY_CREATION_FAILED;
case cros_disks::MOUNT_ERROR_INVALID_MOUNT_OPTIONS:
return MOUNT_ERROR_INVALID_MOUNT_OPTIONS;
case cros_disks::MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS:
return MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS;
case cros_disks::MOUNT_ERROR_INSUFFICIENT_PERMISSIONS:
return MOUNT_ERROR_INSUFFICIENT_PERMISSIONS;
case cros_disks::MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND:
return MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND;
case cros_disks::MOUNT_ERROR_MOUNT_PROGRAM_FAILED:
return MOUNT_ERROR_MOUNT_PROGRAM_FAILED;
case cros_disks::MOUNT_ERROR_INVALID_DEVICE_PATH:
return MOUNT_ERROR_INVALID_DEVICE_PATH;
case cros_disks::MOUNT_ERROR_UNKNOWN_FILESYSTEM:
return MOUNT_ERROR_UNKNOWN_FILESYSTEM;
case cros_disks::MOUNT_ERROR_UNSUPPORTED_FILESYSTEM:
return MOUNT_ERROR_UNSUPPORTED_FILESYSTEM;
case cros_disks::MOUNT_ERROR_INVALID_ARCHIVE:
return MOUNT_ERROR_INVALID_ARCHIVE;
case cros_disks::MOUNT_ERROR_UNSUPPORTED_ARCHIVE:
// TODO(amistry): Add MOUNT_ERROR_UNSUPPORTED_ARCHIVE.
return MOUNT_ERROR_UNKNOWN;
default:
NOTREACHED() << "Unrecognised mount error code " << mount_error;
return MOUNT_ERROR_UNKNOWN;
}
}
bool ReadMountEntryFromDbus(dbus::MessageReader* reader, MountEntry* entry) { bool ReadMountEntryFromDbus(dbus::MessageReader* reader, MountEntry* entry) {
uint32_t error_code = 0; uint32_t error_code = 0;
std::string source_path; std::string source_path;
...@@ -84,8 +130,10 @@ bool ReadMountEntryFromDbus(dbus::MessageReader* reader, MountEntry* entry) { ...@@ -84,8 +130,10 @@ bool ReadMountEntryFromDbus(dbus::MessageReader* reader, MountEntry* entry) {
!reader->PopString(&mount_path)) { !reader->PopString(&mount_path)) {
return false; return false;
} }
*entry = MountEntry(static_cast<MountError>(error_code), source_path, *entry =
static_cast<MountType>(mount_type), mount_path); MountEntry(CrosDisksMountErrorToChromeMountError(
static_cast<cros_disks::MountErrorType>(error_code)),
source_path, static_cast<MountType>(mount_type), mount_path);
return true; return true;
} }
...@@ -293,7 +341,9 @@ class CrosDisksClientImpl : public CrosDisksClient { ...@@ -293,7 +341,9 @@ class CrosDisksClientImpl : public CrosDisksClient {
dbus::MessageReader reader(response); dbus::MessageReader reader(response);
uint32_t error_code = 0; uint32_t error_code = 0;
if (reader.PopUint32(&error_code) && if (reader.PopUint32(&error_code) &&
static_cast<MountError>(error_code) != MOUNT_ERROR_NONE) { CrosDisksMountErrorToChromeMountError(
static_cast<cros_disks::MountErrorType>(error_code)) !=
MOUNT_ERROR_NONE) {
std::move(callback).Run(false); std::move(callback).Run(false);
return; return;
} }
......
...@@ -50,26 +50,25 @@ enum DeviceType { ...@@ -50,26 +50,25 @@ enum DeviceType {
}; };
// Mount error code used by cros-disks. // Mount error code used by cros-disks.
// These values are not the same as cros_disks::MountErrorType.
enum MountError { enum MountError {
MOUNT_ERROR_NONE = 0, MOUNT_ERROR_NONE,
MOUNT_ERROR_UNKNOWN = 1, MOUNT_ERROR_UNKNOWN,
MOUNT_ERROR_INTERNAL = 2, MOUNT_ERROR_INTERNAL,
MOUNT_ERROR_INVALID_ARGUMENT = 3, MOUNT_ERROR_INVALID_ARGUMENT,
MOUNT_ERROR_INVALID_PATH = 4, MOUNT_ERROR_INVALID_PATH,
MOUNT_ERROR_PATH_ALREADY_MOUNTED = 5, MOUNT_ERROR_PATH_ALREADY_MOUNTED,
MOUNT_ERROR_PATH_NOT_MOUNTED = 6, MOUNT_ERROR_PATH_NOT_MOUNTED,
MOUNT_ERROR_DIRECTORY_CREATION_FAILED = 7, MOUNT_ERROR_DIRECTORY_CREATION_FAILED,
MOUNT_ERROR_INVALID_MOUNT_OPTIONS = 8, MOUNT_ERROR_INVALID_MOUNT_OPTIONS,
MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS = 9, MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS,
MOUNT_ERROR_INSUFFICIENT_PERMISSIONS = 10, MOUNT_ERROR_INSUFFICIENT_PERMISSIONS,
MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND = 11, MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND,
MOUNT_ERROR_MOUNT_PROGRAM_FAILED = 12, MOUNT_ERROR_MOUNT_PROGRAM_FAILED,
MOUNT_ERROR_INVALID_DEVICE_PATH = 100, MOUNT_ERROR_INVALID_DEVICE_PATH,
MOUNT_ERROR_UNKNOWN_FILESYSTEM = 101, MOUNT_ERROR_UNKNOWN_FILESYSTEM,
MOUNT_ERROR_UNSUPPORTED_FILESYSTEM = 102, MOUNT_ERROR_UNSUPPORTED_FILESYSTEM,
MOUNT_ERROR_INVALID_ARCHIVE = 201, MOUNT_ERROR_INVALID_ARCHIVE,
// TODO(tbarzic): Add more error codes as they get added to cros-disks and
// consider doing explicit translation from cros-disks error_types.
}; };
// Rename error reported by cros-disks. // Rename error reported by cros-disks.
......
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