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) {
}
}
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) {
uint32_t error_code = 0;
std::string source_path;
......@@ -84,8 +130,10 @@ bool ReadMountEntryFromDbus(dbus::MessageReader* reader, MountEntry* entry) {
!reader->PopString(&mount_path)) {
return false;
}
*entry = MountEntry(static_cast<MountError>(error_code), source_path,
static_cast<MountType>(mount_type), mount_path);
*entry =
MountEntry(CrosDisksMountErrorToChromeMountError(
static_cast<cros_disks::MountErrorType>(error_code)),
source_path, static_cast<MountType>(mount_type), mount_path);
return true;
}
......@@ -293,7 +341,9 @@ class CrosDisksClientImpl : public CrosDisksClient {
dbus::MessageReader reader(response);
uint32_t error_code = 0;
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);
return;
}
......
......@@ -50,26 +50,25 @@ enum DeviceType {
};
// Mount error code used by cros-disks.
// These values are not the same as cros_disks::MountErrorType.
enum MountError {
MOUNT_ERROR_NONE = 0,
MOUNT_ERROR_UNKNOWN = 1,
MOUNT_ERROR_INTERNAL = 2,
MOUNT_ERROR_INVALID_ARGUMENT = 3,
MOUNT_ERROR_INVALID_PATH = 4,
MOUNT_ERROR_PATH_ALREADY_MOUNTED = 5,
MOUNT_ERROR_PATH_NOT_MOUNTED = 6,
MOUNT_ERROR_DIRECTORY_CREATION_FAILED = 7,
MOUNT_ERROR_INVALID_MOUNT_OPTIONS = 8,
MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS = 9,
MOUNT_ERROR_INSUFFICIENT_PERMISSIONS = 10,
MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND = 11,
MOUNT_ERROR_MOUNT_PROGRAM_FAILED = 12,
MOUNT_ERROR_INVALID_DEVICE_PATH = 100,
MOUNT_ERROR_UNKNOWN_FILESYSTEM = 101,
MOUNT_ERROR_UNSUPPORTED_FILESYSTEM = 102,
MOUNT_ERROR_INVALID_ARCHIVE = 201,
// TODO(tbarzic): Add more error codes as they get added to cros-disks and
// consider doing explicit translation from cros-disks error_types.
MOUNT_ERROR_NONE,
MOUNT_ERROR_UNKNOWN,
MOUNT_ERROR_INTERNAL,
MOUNT_ERROR_INVALID_ARGUMENT,
MOUNT_ERROR_INVALID_PATH,
MOUNT_ERROR_PATH_ALREADY_MOUNTED,
MOUNT_ERROR_PATH_NOT_MOUNTED,
MOUNT_ERROR_DIRECTORY_CREATION_FAILED,
MOUNT_ERROR_INVALID_MOUNT_OPTIONS,
MOUNT_ERROR_INVALID_UNMOUNT_OPTIONS,
MOUNT_ERROR_INSUFFICIENT_PERMISSIONS,
MOUNT_ERROR_MOUNT_PROGRAM_NOT_FOUND,
MOUNT_ERROR_MOUNT_PROGRAM_FAILED,
MOUNT_ERROR_INVALID_DEVICE_PATH,
MOUNT_ERROR_UNKNOWN_FILESYSTEM,
MOUNT_ERROR_UNSUPPORTED_FILESYSTEM,
MOUNT_ERROR_INVALID_ARCHIVE,
};
// 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