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) { ...@@ -130,6 +130,7 @@ bool IsNonNativeFileSystemType(storage::FileSystemType type) {
case storage::kFileSystemTypeNativeLocal: case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal: case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeDriveFs: case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return false; return false;
default: default:
// The path indeed corresponds to a mount point not associated with a // The path indeed corresponds to a mount point not associated with a
......
...@@ -58,7 +58,8 @@ bool FileSystemBackend::CanHandleURL(const storage::FileSystemURL& url) { ...@@ -58,7 +58,8 @@ bool FileSystemBackend::CanHandleURL(const storage::FileSystemURL& url) {
url.type() == storage::kFileSystemTypeDeviceMediaAsFileStorage || url.type() == storage::kFileSystemTypeDeviceMediaAsFileStorage ||
url.type() == storage::kFileSystemTypeArcContent || url.type() == storage::kFileSystemTypeArcContent ||
url.type() == storage::kFileSystemTypeArcDocumentsProvider || url.type() == storage::kFileSystemTypeArcDocumentsProvider ||
url.type() == storage::kFileSystemTypeDriveFs; url.type() == storage::kFileSystemTypeDriveFs ||
url.type() == storage::kFileSystemTypeSmbFs;
} }
FileSystemBackend::FileSystemBackend( FileSystemBackend::FileSystemBackend(
...@@ -113,6 +114,7 @@ bool FileSystemBackend::CanHandleType(storage::FileSystemType type) const { ...@@ -113,6 +114,7 @@ bool FileSystemBackend::CanHandleType(storage::FileSystemType type) const {
case storage::kFileSystemTypeArcContent: case storage::kFileSystemTypeArcContent:
case storage::kFileSystemTypeArcDocumentsProvider: case storage::kFileSystemTypeArcDocumentsProvider:
case storage::kFileSystemTypeDriveFs: case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return true; return true;
default: default:
return false; return false;
...@@ -280,6 +282,7 @@ storage::AsyncFileUtil* FileSystemBackend::GetAsyncFileUtil( ...@@ -280,6 +282,7 @@ storage::AsyncFileUtil* FileSystemBackend::GetAsyncFileUtil(
return file_system_provider_delegate_->GetAsyncFileUtil(type); return file_system_provider_delegate_->GetAsyncFileUtil(type);
case storage::kFileSystemTypeNativeLocal: case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal: case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeSmbFs:
return local_file_util_.get(); return local_file_util_.get();
case storage::kFileSystemTypeDeviceMediaAsFileStorage: case storage::kFileSystemTypeDeviceMediaAsFileStorage:
return mtp_delegate_->GetAsyncFileUtil(type); return mtp_delegate_->GetAsyncFileUtil(type);
...@@ -340,7 +343,8 @@ storage::FileSystemOperation* FileSystemBackend::CreateFileSystemOperation( ...@@ -340,7 +343,8 @@ storage::FileSystemOperation* FileSystemBackend::CreateFileSystemOperation(
} }
if (url.type() == storage::kFileSystemTypeNativeLocal || if (url.type() == storage::kFileSystemTypeNativeLocal ||
url.type() == storage::kFileSystemTypeRestrictedNativeLocal || url.type() == storage::kFileSystemTypeRestrictedNativeLocal ||
url.type() == storage::kFileSystemTypeDriveFs) { url.type() == storage::kFileSystemTypeDriveFs ||
url.type() == storage::kFileSystemTypeSmbFs) {
return storage::FileSystemOperation::Create( return storage::FileSystemOperation::Create(
url, context, url, context,
std::make_unique<storage::FileSystemOperationContext>( std::make_unique<storage::FileSystemOperationContext>(
...@@ -382,6 +386,8 @@ bool FileSystemBackend::HasInplaceCopyImplementation( ...@@ -382,6 +386,8 @@ bool FileSystemBackend::HasInplaceCopyImplementation(
case storage::kFileSystemTypeNativeLocal: case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal: case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeArcContent: case storage::kFileSystemTypeArcContent:
// TODO(crbug.com/939235): Implement in-place copy in SmbFs.
case storage::kFileSystemTypeSmbFs:
return false; return false;
default: default:
NOTREACHED(); NOTREACHED();
...@@ -408,6 +414,7 @@ FileSystemBackend::CreateFileStreamReader( ...@@ -408,6 +414,7 @@ FileSystemBackend::CreateFileStreamReader(
case storage::kFileSystemTypeNativeLocal: case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeRestrictedNativeLocal: case storage::kFileSystemTypeRestrictedNativeLocal:
case storage::kFileSystemTypeDriveFs: case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return std::unique_ptr<storage::FileStreamReader>( return std::unique_ptr<storage::FileStreamReader>(
storage::FileStreamReader::CreateForLocalFile( storage::FileStreamReader::CreateForLocalFile(
base::CreateTaskRunner({base::ThreadPool(), base::MayBlock(), base::CreateTaskRunner({base::ThreadPool(), base::MayBlock(),
...@@ -445,6 +452,7 @@ FileSystemBackend::CreateFileStreamWriter( ...@@ -445,6 +452,7 @@ FileSystemBackend::CreateFileStreamWriter(
url, offset, context); url, offset, context);
case storage::kFileSystemTypeNativeLocal: case storage::kFileSystemTypeNativeLocal:
case storage::kFileSystemTypeDriveFs: case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
return storage::FileStreamWriter::CreateForLocalFile( return storage::FileStreamWriter::CreateForLocalFile(
base::CreateTaskRunner({base::ThreadPool(), base::MayBlock(), base::CreateTaskRunner({base::ThreadPool(), base::MayBlock(),
base::TaskPriority::USER_VISIBLE}) base::TaskPriority::USER_VISIBLE})
...@@ -492,6 +500,7 @@ void FileSystemBackend::GetRedirectURLForContents( ...@@ -492,6 +500,7 @@ void FileSystemBackend::GetRedirectURLForContents(
case storage::kFileSystemTypeArcContent: case storage::kFileSystemTypeArcContent:
case storage::kFileSystemTypeArcDocumentsProvider: case storage::kFileSystemTypeArcDocumentsProvider:
case storage::kFileSystemTypeDriveFs: case storage::kFileSystemTypeDriveFs:
case storage::kFileSystemTypeSmbFs:
callback.Run(GURL()); callback.Run(GURL());
return; return;
default: default:
......
...@@ -103,6 +103,7 @@ blink::mojom::FileSystemType ToMojoFileSystemType( ...@@ -103,6 +103,7 @@ blink::mojom::FileSystemType ToMojoFileSystemType(
case storage::FileSystemType::kFileSystemTypeArcContent: case storage::FileSystemType::kFileSystemTypeArcContent:
case storage::FileSystemType::kFileSystemTypeArcDocumentsProvider: case storage::FileSystemType::kFileSystemTypeArcDocumentsProvider:
case storage::FileSystemType::kFileSystemTypeDriveFs: case storage::FileSystemType::kFileSystemTypeDriveFs:
case storage::FileSystemType::kFileSystemTypeSmbFs:
case storage::FileSystemType::kFileSystemInternalTypeEnumEnd: case storage::FileSystemType::kFileSystemInternalTypeEnumEnd:
NOTREACHED(); NOTREACHED();
return blink::mojom::FileSystemType::kTemporary; return blink::mojom::FileSystemType::kTemporary;
......
...@@ -102,6 +102,7 @@ int FileSystemContext::GetPermissionPolicy(FileSystemType type) { ...@@ -102,6 +102,7 @@ int FileSystemContext::GetPermissionPolicy(FileSystemType type) {
case kFileSystemTypeDriveFs: case kFileSystemTypeDriveFs:
case kFileSystemTypeArcContent: case kFileSystemTypeArcContent:
case kFileSystemTypeArcDocumentsProvider: case kFileSystemTypeArcDocumentsProvider:
case kFileSystemTypeSmbFs:
return FILE_PERMISSION_USE_FILE_PERMISSION; return FILE_PERMISSION_USE_FILE_PERMISSION;
case kFileSystemTypeRestrictedNativeLocal: case kFileSystemTypeRestrictedNativeLocal:
......
...@@ -126,7 +126,10 @@ enum FileSystemType { ...@@ -126,7 +126,10 @@ enum FileSystemType {
// Indicates a DriveFS filesystem which provides access to Google Drive. // Indicates a DriveFS filesystem which provides access to Google Drive.
kFileSystemTypeDriveFs, 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) // Marks the end of internal type enum. (This is not the actual fs type)
......
...@@ -314,6 +314,8 @@ std::string GetFileSystemTypeString(FileSystemType type) { ...@@ -314,6 +314,8 @@ std::string GetFileSystemTypeString(FileSystemType type) {
return "ArcDocumentsProvider"; return "ArcDocumentsProvider";
case kFileSystemTypeDriveFs: case kFileSystemTypeDriveFs:
return "DriveFs"; return "DriveFs";
case kFileSystemTypeSmbFs:
return "SmbFs";
case kFileSystemInternalTypeEnumStart: case kFileSystemInternalTypeEnumStart:
case kFileSystemInternalTypeEnumEnd: case kFileSystemInternalTypeEnumEnd:
NOTREACHED(); 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