Commit d86cdeca authored by Allen Vicencio's avatar Allen Vicencio Committed by Commit Bot

Move TranslateErrorToMountResult

Moves TranslateErrorToMountResult functions to smb_errors and adds unit
tests

Bug: 757625
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I93c415a5855d05d75cabe312c3f6cce398120d0c
Reviewed-on: https://chromium-review.googlesource.com/1087546
Commit-Queue: Allen Vicencio <allenvic@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Reviewed-by: default avatarDave Schuyler <dschuyler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566960}
parent 6199daf3
......@@ -101,5 +101,44 @@ smbprovider::ErrorType TranslateToErrorType(base::File::Error error) {
return smbprovider::ERROR_NONE;
}
SmbMountResult TranslateErrorToMountResult(smbprovider::ErrorType error) {
DCHECK_NE(smbprovider::ERROR_NONE, error);
switch (error) {
case smbprovider::ERROR_OK:
return SmbMountResult::SUCCESS;
case smbprovider::ERROR_EXISTS:
case smbprovider::ERROR_IN_USE:
return SmbMountResult::MOUNT_EXISTS;
case smbprovider::ERROR_NOT_FOUND:
case smbprovider::ERROR_NOT_A_DIRECTORY:
case smbprovider::ERROR_INVALID_URL:
return SmbMountResult::NOT_FOUND;
case smbprovider::ERROR_ACCESS_DENIED:
case smbprovider::ERROR_SECURITY:
return SmbMountResult::AUTHENTICATION_FAILED;
case smbprovider::ERROR_FAILED:
case smbprovider::ERROR_TOO_MANY_OPENED:
case smbprovider::ERROR_NO_MEMORY:
case smbprovider::ERROR_NO_SPACE:
case smbprovider::ERROR_INVALID_OPERATION:
case smbprovider::ERROR_ABORT:
case smbprovider::ERROR_NOT_A_FILE:
case smbprovider::ERROR_NOT_EMPTY:
case smbprovider::ERROR_IO:
case smbprovider::ERROR_DBUS_PARSE_FAILED:
return SmbMountResult::UNKNOWN_FAILURE;
default:
break;
}
NOTREACHED();
return SmbMountResult::UNKNOWN_FAILURE;
}
SmbMountResult TranslateErrorToMountResult(base::File::Error error) {
return TranslateErrorToMountResult(TranslateToErrorType(error));
}
} // namespace smb_client
} // namespace chromeos
......@@ -11,6 +11,21 @@
namespace chromeos {
namespace smb_client {
// These values are written to logs. New enum values may be added, but existing
// enums must never be renumbered or values reused. Must be kept in sync
// with the SmbMountResult enum in
// chrome/browser/resources/settings/downloads_page/smb_browser_proxy.js.
enum class SmbMountResult {
// TODO(allenvic): Change syntax to kConstantSyntax.
SUCCESS = 0, // Mount succeeded.
UNKNOWN_FAILURE = 1, // Mount failed in an unrecognized way.
AUTHENTICATION_FAILED = 2, // Authentication to the share failed.
NOT_FOUND = 3, // The specified share was not found.
UNSUPPORTED_DEVICE = 4, // The specified share is not supported.
MOUNT_EXISTS = 5, // The specified share is already mounted.
kMaxValue = MOUNT_EXISTS // Max enum value for use in metrics.
};
// Translates an smbprovider::ErrorType to a base::File::Error. Since
// smbprovider::ErrorType is a superset of base::File::Error, errors that do not
// map directly are logged and mapped to the generic failed error.
......@@ -20,6 +35,12 @@ base::File::Error TranslateToFileError(smbprovider::ErrorType error);
// explicit smbprovider::ErrorType for each base::File::Error.
smbprovider::ErrorType TranslateToErrorType(base::File::Error error);
// Translates an smbprovider::ErrorType to an SmbMountResult.
SmbMountResult TranslateErrorToMountResult(smbprovider::ErrorType error);
// Translates a base::File::Error to an SmbMountResult.
SmbMountResult TranslateErrorToMountResult(base::File::Error error);
} // namespace smb_client
} // namespace chromeos
......
......@@ -96,5 +96,84 @@ TEST_F(SmbErrorsTest, FileErrorToSmbError) {
TranslateToErrorType(base::File::FILE_ERROR_IO));
}
TEST_F(SmbErrorsTest, SmbErrorToMountResult) {
EXPECT_EQ(SmbMountResult::SUCCESS,
TranslateErrorToMountResult(smbprovider::ERROR_OK));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_FAILED));
EXPECT_EQ(SmbMountResult::MOUNT_EXISTS,
TranslateErrorToMountResult(smbprovider::ERROR_IN_USE));
EXPECT_EQ(SmbMountResult::MOUNT_EXISTS,
TranslateErrorToMountResult(smbprovider::ERROR_EXISTS));
EXPECT_EQ(SmbMountResult::NOT_FOUND,
TranslateErrorToMountResult(smbprovider::ERROR_NOT_FOUND));
EXPECT_EQ(SmbMountResult::AUTHENTICATION_FAILED,
TranslateErrorToMountResult(smbprovider::ERROR_ACCESS_DENIED));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_TOO_MANY_OPENED));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_NO_MEMORY));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_NO_SPACE));
EXPECT_EQ(SmbMountResult::NOT_FOUND,
TranslateErrorToMountResult(smbprovider::ERROR_NOT_A_DIRECTORY));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_INVALID_OPERATION));
EXPECT_EQ(SmbMountResult::AUTHENTICATION_FAILED,
TranslateErrorToMountResult(smbprovider::ERROR_SECURITY));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_ABORT));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_NOT_A_FILE));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_NOT_EMPTY));
EXPECT_EQ(SmbMountResult::NOT_FOUND,
TranslateErrorToMountResult(smbprovider::ERROR_INVALID_URL));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_IO));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(smbprovider::ERROR_DBUS_PARSE_FAILED));
}
TEST_F(SmbErrorsTest, FileErrorToMountResult) {
EXPECT_EQ(SmbMountResult::SUCCESS,
TranslateErrorToMountResult(base::File::FILE_OK));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_FAILED));
EXPECT_EQ(SmbMountResult::MOUNT_EXISTS,
TranslateErrorToMountResult(base::File::FILE_ERROR_IN_USE));
EXPECT_EQ(SmbMountResult::MOUNT_EXISTS,
TranslateErrorToMountResult(base::File::FILE_ERROR_EXISTS));
EXPECT_EQ(SmbMountResult::NOT_FOUND,
TranslateErrorToMountResult(base::File::FILE_ERROR_NOT_FOUND));
EXPECT_EQ(SmbMountResult::AUTHENTICATION_FAILED,
TranslateErrorToMountResult(base::File::FILE_ERROR_ACCESS_DENIED));
EXPECT_EQ(
SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_TOO_MANY_OPENED));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_NO_MEMORY));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_NO_SPACE));
EXPECT_EQ(
SmbMountResult::NOT_FOUND,
TranslateErrorToMountResult(base::File::FILE_ERROR_NOT_A_DIRECTORY));
EXPECT_EQ(
SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_INVALID_OPERATION));
EXPECT_EQ(SmbMountResult::AUTHENTICATION_FAILED,
TranslateErrorToMountResult(base::File::FILE_ERROR_SECURITY));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_ABORT));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_NOT_A_FILE));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_NOT_EMPTY));
EXPECT_EQ(SmbMountResult::NOT_FOUND,
TranslateErrorToMountResult(base::File::FILE_ERROR_INVALID_URL));
EXPECT_EQ(SmbMountResult::UNKNOWN_FAILURE,
TranslateErrorToMountResult(base::File::FILE_ERROR_IO));
}
} // namespace smb_client
} // namespace chromeos
......@@ -244,47 +244,6 @@ void SmbService::CompleteSetup() {
RestoreMounts();
}
SmbMountResult SmbService::TranslateErrorToMountResult(
smbprovider::ErrorType error) const {
DCHECK_NE(smbprovider::ERROR_NONE, error);
switch (error) {
case smbprovider::ERROR_OK:
return SmbMountResult::SUCCESS;
case smbprovider::ERROR_EXISTS:
case smbprovider::ERROR_IN_USE:
return SmbMountResult::MOUNT_EXISTS;
case smbprovider::ERROR_NOT_FOUND:
case smbprovider::ERROR_NOT_A_DIRECTORY:
case smbprovider::ERROR_INVALID_URL:
return SmbMountResult::NOT_FOUND;
case smbprovider::ERROR_ACCESS_DENIED:
case smbprovider::ERROR_SECURITY:
return SmbMountResult::AUTHENTICATION_FAILED;
case smbprovider::ERROR_FAILED:
case smbprovider::ERROR_TOO_MANY_OPENED:
case smbprovider::ERROR_NO_MEMORY:
case smbprovider::ERROR_NO_SPACE:
case smbprovider::ERROR_INVALID_OPERATION:
case smbprovider::ERROR_ABORT:
case smbprovider::ERROR_NOT_A_FILE:
case smbprovider::ERROR_NOT_EMPTY:
case smbprovider::ERROR_IO:
case smbprovider::ERROR_DBUS_PARSE_FAILED:
return SmbMountResult::UNKNOWN_FAILURE;
default:
break;
}
NOTREACHED();
return SmbMountResult::UNKNOWN_FAILURE;
}
SmbMountResult SmbService::TranslateErrorToMountResult(
base::File::Error error) const {
return TranslateErrorToMountResult(TranslateToErrorType(error));
}
void SmbService::FireMountCallback(MountResponse callback,
SmbMountResult result) {
RecordMountResult(result);
......
......@@ -27,20 +27,6 @@ class FilePath;
namespace chromeos {
namespace smb_client {
// These values are written to logs. New enum values may be added, but existing
// enums must never be runumbered or deleted and reused. Must be kept in sync
// with the SmbMountResult enum in
// chrome/browser/resources/settings/downloads_page/smb_browser_proxy.js.
enum SmbMountResult {
SUCCESS = 0, // Mount succeeded
UNKNOWN_FAILURE = 1, // Mount failed in an unrecognized way
AUTHENTICATION_FAILED = 2, // Authentication to the share failed
NOT_FOUND = 3, // The specified share was not found
UNSUPPORTED_DEVICE = 4, // The specified share is not supported
MOUNT_EXISTS = 5, // The specified share is already mounted
kMaxValue = MOUNT_EXISTS // Max enum value for use in metrics
};
using file_system_provider::Capabilities;
using file_system_provider::ProvidedFileSystemInfo;
using file_system_provider::ProvidedFileSystemInterface;
......@@ -133,11 +119,6 @@ class SmbService : public KeyedService,
void RecordMountCount() const;
// Translates an error |error| into an SmbMountResult.
SmbMountResult TranslateErrorToMountResult(
smbprovider::ErrorType error) const;
SmbMountResult TranslateErrorToMountResult(base::File::Error error) const;
const ProviderId provider_id_;
Profile* profile_;
std::unique_ptr<TempFileManager> temp_file_manager_;
......
......@@ -56,7 +56,7 @@ void SmbHandler::HandleSmbMount(const base::ListValue* args) {
void SmbHandler::HandleSmbMountResponse(SmbMountResult result) {
AllowJavascript();
FireWebUIListener("on-add-smb-share", base::Value(result));
FireWebUIListener("on-add-smb-share", base::Value(static_cast<int>(result)));
}
void SmbHandler::HandleStartDiscovery(const base::ListValue* args) {
......
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