// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ash/fusebox/fusebox_histograms.h"
#include "storage/browser/file_system/file_system_url.h"
#include "storage/common/file_system/file_system_types.h"
namespace fusebox {
HistogramEnumPosixErrorCode GetHistogramEnumPosixErrorCode(
int posix_error_code) {
switch (posix_error_code) {
case 0:
return HistogramEnumPosixErrorCode::kOK;
case EFAULT:
return HistogramEnumPosixErrorCode::kEFAULT;
case EBUSY:
return HistogramEnumPosixErrorCode::kEBUSY;
case EEXIST:
return HistogramEnumPosixErrorCode::kEEXIST;
case ENOENT:
return HistogramEnumPosixErrorCode::kENOENT;
case EACCES:
return HistogramEnumPosixErrorCode::kEACCES;
case EMFILE:
return HistogramEnumPosixErrorCode::kEMFILE;
case ENOMEM:
return HistogramEnumPosixErrorCode::kENOMEM;
case ENOSPC:
return HistogramEnumPosixErrorCode::kENOSPC;
case ENOTDIR:
return HistogramEnumPosixErrorCode::kENOTDIR;
case ENOTSUP:
return HistogramEnumPosixErrorCode::kENOTSUP;
case EINVAL:
return HistogramEnumPosixErrorCode::kEINVAL;
case ENOTEMPTY:
return HistogramEnumPosixErrorCode::kENOTEMPTY;
case EIO:
return HistogramEnumPosixErrorCode::kEIO;
default:
break;
}
return HistogramEnumPosixErrorCode::kEOTHER;
}
HistogramEnumFileSystemType GetHistogramEnumFileSystemType(
const storage::FileSystemURL& fs_url) {
if (fs_url.mount_type() != storage::kFileSystemTypeExternal) {
return HistogramEnumFileSystemType::kNonExternal;
}
switch (fs_url.type()) {
case storage::kFileSystemTypeLocal:
return HistogramEnumFileSystemType::kLocal;
case storage::kFileSystemTypeLocalMedia:
return HistogramEnumFileSystemType::kLocalMedia;
case storage::kFileSystemTypeDeviceMedia:
return HistogramEnumFileSystemType::kDeviceMedia;
case storage::kFileSystemTypeProvided:
return HistogramEnumFileSystemType::kProvided;
case storage::kFileSystemTypeDeviceMediaAsFileStorage:
return HistogramEnumFileSystemType::kDeviceMediaAsFileStorage;
case storage::kFileSystemTypeArcContent:
return HistogramEnumFileSystemType::kArcContent;
case storage::kFileSystemTypeArcDocumentsProvider:
return HistogramEnumFileSystemType::kArcDocumentsProvider;
case storage::kFileSystemTypeDriveFs:
return HistogramEnumFileSystemType::kDriveFs;
default:
break;
}
return HistogramEnumFileSystemType::kOther;
}
const char* NameForHistogramEnumFileSystemType(
const HistogramEnumFileSystemType type) {
switch (type) {
case HistogramEnumFileSystemType::kNonExternal:
return "NonExternal";
case HistogramEnumFileSystemType::kOther:
return "Other";
case HistogramEnumFileSystemType::kLocal:
return "Local";
case HistogramEnumFileSystemType::kLocalMedia:
return "LocalMedia";
case HistogramEnumFileSystemType::kDeviceMedia:
return "DeviceMedia";
case HistogramEnumFileSystemType::kProvided:
return "Provided";
case HistogramEnumFileSystemType::kDeviceMediaAsFileStorage:
return "DeviceMediaAsFileStorage";
case HistogramEnumFileSystemType::kArcContent:
return "ArcContent";
case HistogramEnumFileSystemType::kArcDocumentsProvider:
return "ArcDocumentsProvider";
case HistogramEnumFileSystemType::kDriveFs:
return "DriveFs";
default:
break;
}
return "Unknown";
}
} // namespace fusebox