// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef STORAGE_BROWSER_FILE_SYSTEM_FILE_SYSTEM_OPERATION_H_ #define STORAGE_BROWSER_FILE_SYSTEM_FILE_SYSTEM_OPERATION_H_ #include <stdint.h> #include <memory> #include <vector> #include "base/component_export.h" #include "base/containers/enum_set.h" #include "base/files/file.h" #include "base/files/file_path.h" #include "base/functional/callback.h" #include "base/process/process.h" #include "base/types/pass_key.h" #include "components/services/filesystem/public/mojom/types.mojom.h" #include "storage/browser/blob/blob_reader.h" #include "storage/browser/file_system/file_system_operation_context.h" namespace base { class Time; } namespace storage { class CopyOrMoveHookDelegate; class FileSystemContext; class FileSystemURL; class FileWriterDelegate; class ShareableFileReference; // Operation type called by FileSystemOperationRunner. enum class OperationType { … }; // The interface class for FileSystemOperation implementations. // // This interface defines file system operations required to implement // "File API: Directories and System" // http://www.w3.org/TR/file-system-api/ // // DESIGN NOTES // // This class is designed to // // 1) Serve one-time file system operation per instance. Only one // method(CreateFile, CreateDirectory, Copy, Move, DirectoryExists, // GetMetadata, ReadDirectory and Remove) may be called during the // lifetime of this object and it should be called no more than once. // // 2) Deliver the results of operations to the client via the callback function // passed as the last parameter of the method. // // Note that it is valid to delete an operation while it is running. // The callback will NOT be fired if the operation is deleted before // it gets called. class FileSystemOperation { … }; } // namespace storage #endif // STORAGE_BROWSER_FILE_SYSTEM_FILE_SYSTEM_OPERATION_H_