// Copyright 2019 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_OBFUSCATED_FILE_UTIL_MEMORY_DELEGATE_H_ #define STORAGE_BROWSER_FILE_SYSTEM_OBFUSCATED_FILE_UTIL_MEMORY_DELEGATE_H_ #include <map> #include <memory> #include <vector> #include "base/component_export.h" #include "base/containers/span.h" #include "base/files/file.h" #include "base/files/file_path.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "storage/browser/file_system/native_file_util.h" #include "storage/browser/file_system/obfuscated_file_util_delegate.h" namespace storage { // This delegate performs all ObfuscatedFileUtil tasks that require touching // disk and peforms them in memory. // The given paths should be subpaths of the |file_system_directory| folder // passed to the constructor. No normalization is done on the this root folder // and it is expected that all input paths would start with it. // Directories and files are both stored in |Entry| structures, keeping the type // of the entry, creation, modification, and last access time, and // |file_content| or |directory_content| based on the type. // Directory tree is kept in a tree structure starting from |root_|. All API // functions that receive a |FilePath|, convert it to a |DecomposedPath| which // has separated normalized components, is ensured that it is under the root, // and has the respective |Entry| (if exists) and its parent in the directory // tree starting from |root_|. class COMPONENT_EXPORT(STORAGE_BROWSER) ObfuscatedFileUtilMemoryDelegate : public ObfuscatedFileUtilDelegate { … }; } // namespace storage #endif // STORAGE_BROWSER_FILE_SYSTEM_OBFUSCATED_FILE_UTIL_MEMORY_DELEGATE_H_