Commit 5b28d1bc authored by Anand K. Mistry's avatar Anand K. Mistry Committed by Commit Bot

Add filesystem type for SmbFs.

SmbFs is a FUSE-based filesystem that provides access to SMB file
shares. It will have similar capabilities to DriveFs, such as
server-side copies, hence the need for a new filesystem type.

Bug: 939235
Change-Id: Ibbc21a3211013259a715a9e07760d8050b7bda97
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1885850Reviewed-by: default avatarSergei Datsenko <dats@chromium.org>
Reviewed-by: default avatarMarijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Anand Mistry <amistry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710681}
parent a443e61f
......@@ -130,6 +130,7 @@ bool IsNonNativeFileSystemType(storage::FileSystemType type) {
case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return false;
default:
// The path indeed corresponds to a mount point not associated with a
......
......@@ -58,7 +58,8 @@ bool FileSystemBackend::CanHandleURL(const storage::FileSystemURL& url) {
url.type() == storage::kFileSystemTypeDeviceMediaAsFileStorage ||
url.type() == storage::kFileSystemTypeArcContent ||
url.type() == storage::kFileSystemTypeArcDocumentsProvider ||
url.type() == storage::kFileSystemTypeDriveFs;
url.type() == storage::kFileSystemTypeDriveFs ||
url.type() == storage::kFileSystemTypeSmbFs;
}
FileSystemBackend::FileSystemBackend(
......@@ -113,6 +114,7 @@ bool FileSystemBackend::CanHandleType(storage::FileSystemType type) const {
case storage::kFileSystemTypeArcContent:
case storage::kFileSystemTypeArcDocumentsProvider:
case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return true;
default:
return false;
......@@ -280,6 +282,7 @@ storage::AsyncFileUtil* FileSystemBackend::GetAsyncFileUtil(
return file_system_provider_delegate_->GetAsyncFileUtil(type);
case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeSmbFs:
return local_file_util_.get();
case storage::kFileSystemTypeDeviceMediaAsFileStorage:
return mtp_delegate_->GetAsyncFileUtil(type);
......@@ -340,7 +343,8 @@ storage::FileSystemOperation* FileSystemBackend::CreateFileSystemOperation(
}
if (url.type() == storage::kFileSystemTypeNativeLocal ||
url.type() == storage::kFileSystemTypeRestrictedNativeLocal ||
url.type() == storage::kFileSystemTypeDriveFs) {
url.type() == storage::kFileSystemTypeDriveFs ||
url.type() == storage::kFileSystemTypeSmbFs) {
return storage::FileSystemOperation::Create(
url, context,
std::make_unique<storage::FileSystemOperationContext>(
......@@ -382,6 +386,8 @@ bool FileSystemBackend::HasInplaceCopyImplementation(
case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeArcContent:
// TODO(crbug.com/939235): Implement in-place copy in SmbFs.
case storage::kFileSystemTypeSmbFs:
return false;
default:
NOTREACHED();
......@@ -408,6 +414,7 @@ FileSystemBackend::CreateFileStreamReader(
case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return std::unique_ptr<storage::FileStreamReader>(
storage::FileStreamReader::CreateForLocalFile(
base::CreateTaskRunner({base::ThreadPool(), base::MayBlock(),
......@@ -445,6 +452,7 @@ FileSystemBackend::CreateFileStreamWriter(
url, offset, context);
case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return storage::FileStreamWriter::CreateForLocalFile(
base::CreateTaskRunner({base::ThreadPool(), base::MayBlock(),
base::TaskPriority::USER_VISIBLE})
......@@ -492,6 +500,7 @@ void FileSystemBackend::GetRedirectURLForContents(
case storage::kFileSystemTypeArcContent:
case storage::kFileSystemTypeArcDocumentsProvider:
case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
callback.Run(GURL());
return;
default:
......
......@@ -103,6 +103,7 @@ blink::mojom::FileSystemType ToMojoFileSystemType(
case storage::FileSystemType::kFileSystemTypeArcContent:
case storage::FileSystemType::kFileSystemTypeArcDocumentsProvider:
case storage::FileSystemType::kFileSystemTypeDriveFs:
case storage::FileSystemType::kFileSystemTypeSmbFs:
case storage::FileSystemType::kFileSystemInternalTypeEnumEnd:
NOTREACHED();
return blink::mojom::FileSystemType::kTemporary;
......
......@@ -102,6 +102,7 @@ int FileSystemContext::GetPermissionPolicy(FileSystemType type) {
case kFileSystemTypeDriveFs:
case kFileSystemTypeArcContent:
case kFileSystemTypeArcDocumentsProvider:
case kFileSystemTypeSmbFs:
return FILE_PERMISSION_USE_FILE_PERMISSION;
case kFileSystemTypeRestrictedNativeLocal:
......
......@@ -126,7 +126,10 @@ enum FileSystemType {
// Indicates a DriveFS filesystem which provides access to Google Drive.
kFileSystemTypeDriveFs,
kFileSystemTypeLast = kFileSystemTypeDriveFs,
// Indicates an SmbFs filesystem which provides access to SMB file shares.
kFileSystemTypeSmbFs,
kFileSystemTypeLast = kFileSystemTypeSmbFs,
// --------------------------------------------------------------------
// Marks the end of internal type enum. (This is not the actual fs type)
......
......@@ -314,6 +314,8 @@ std::string GetFileSystemTypeString(FileSystemType type) {
return "ArcDocumentsProvider";
case kFileSystemTypeDriveFs:
return "DriveFs";
case kFileSystemTypeSmbFs:
return "SmbFs";
case kFileSystemInternalTypeEnumStart:
case kFileSystemInternalTypeEnumEnd:
NOTREACHED();
......
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