Commit af33df0e authored by Ramin Halavati's avatar Ramin Halavati Committed by Commit Bot

Remove on-disk directory residue of in-memory file system.

Unnecessary directories created on disk for in-memory file system are
removed.
A related bug in ObfuscatedFileUtil that expected these directories to
exist on disk is fixed.

Bug: 93417
Change-Id: I3e39d7d7ce3ad51bbef3b3d69fdcc67375413379
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1584268Reviewed-by: default avatarMarijn Kruisselbrink <mek@chromium.org>
Commit-Queue: Ramin Halavati <rhalavati@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654791}
parent e996d16c
...@@ -213,9 +213,12 @@ class ObfuscatedOriginEnumerator ...@@ -213,9 +213,12 @@ class ObfuscatedOriginEnumerator
: public ObfuscatedFileUtil::AbstractOriginEnumerator { : public ObfuscatedFileUtil::AbstractOriginEnumerator {
public: public:
using OriginRecord = SandboxOriginDatabase::OriginRecord; using OriginRecord = SandboxOriginDatabase::OriginRecord;
ObfuscatedOriginEnumerator(SandboxOriginDatabaseInterface* origin_database, ObfuscatedOriginEnumerator(
const base::FilePath& base_file_path) SandboxOriginDatabaseInterface* origin_database,
: base_file_path_(base_file_path) { base::WeakPtr<ObfuscatedFileUtilMemoryDelegate> memory_file_util,
const base::FilePath& base_file_path)
: base_file_path_(base_file_path),
memory_file_util_(std::move(memory_file_util)) {
if (origin_database) if (origin_database)
origin_database->ListAllOrigins(&origins_); origin_database->ListAllOrigins(&origins_);
} }
...@@ -243,13 +246,17 @@ class ObfuscatedOriginEnumerator ...@@ -243,13 +246,17 @@ class ObfuscatedOriginEnumerator
} }
base::FilePath path = base::FilePath path =
base_file_path_.Append(current_.path).AppendASCII(type_string); base_file_path_.Append(current_.path).AppendASCII(type_string);
return base::DirectoryExists(path); if (memory_file_util_)
return memory_file_util_->DirectoryExists(path);
else
return base::DirectoryExists(path);
} }
private: private:
std::vector<OriginRecord> origins_; std::vector<OriginRecord> origins_;
OriginRecord current_; OriginRecord current_;
base::FilePath base_file_path_; base::FilePath base_file_path_;
base::WeakPtr<ObfuscatedFileUtilMemoryDelegate> memory_file_util_;
}; };
ObfuscatedFileUtil::ObfuscatedFileUtil( ObfuscatedFileUtil::ObfuscatedFileUtil(
...@@ -947,8 +954,15 @@ ObfuscatedFileUtil::CreateOriginEnumerator() { ...@@ -947,8 +954,15 @@ ObfuscatedFileUtil::CreateOriginEnumerator() {
std::vector<SandboxOriginDatabase::OriginRecord> origins; std::vector<SandboxOriginDatabase::OriginRecord> origins;
InitOriginDatabase(GURL(), false); InitOriginDatabase(GURL(), false);
return std::make_unique<ObfuscatedOriginEnumerator>(origin_database_.get(), base::WeakPtr<ObfuscatedFileUtilMemoryDelegate> file_util_delegate;
file_system_directory_); if (is_incognito() &&
base::FeatureList::IsEnabled(features::kEnableFilesystemInIncognito)) {
file_util_delegate =
static_cast<ObfuscatedFileUtilMemoryDelegate*>(delegate())
->GetWeakPtr();
}
return std::make_unique<ObfuscatedOriginEnumerator>(
origin_database_.get(), file_util_delegate, file_system_directory_);
} }
void ObfuscatedFileUtil::DestroyDirectoryDatabase( void ObfuscatedFileUtil::DestroyDirectoryDatabase(
......
...@@ -225,27 +225,13 @@ class ObfuscatedFileUtilTest : public testing::Test, ...@@ -225,27 +225,13 @@ class ObfuscatedFileUtilTest : public testing::Test,
void TearDown() override { void TearDown() override {
if (in_memory_test()) if (in_memory_test())
CheckFilesInFileSystemDirectory(); ASSERT_TRUE(IsDirectoryEmpty(data_dir_.GetPath()));
quota_manager_ = nullptr; quota_manager_ = nullptr;
scoped_task_environment_.RunUntilIdle(); scoped_task_environment_.RunUntilIdle();
sandbox_file_system_.TearDown(); sandbox_file_system_.TearDown();
} }
void CheckFilesInFileSystemDirectory() {
// Make sure there is no file on disk for in memory file system. Ignore
// directories created by the ObfuscatedFileUtil as they do not represent
// user directories.
// TODO(https://crbug.com/93417): Investigate why directories are created.
std::unique_ptr<storage::FileSystemFileUtil::AbstractFileEnumerator>
enumerator = storage::NativeFileUtil::CreateFileEnumerator(
data_dir_.GetPath(), true);
for (base::FilePath path = enumerator->Next(); !path.empty();
path = enumerator->Next()) {
ASSERT_TRUE(storage::NativeFileUtil::DirectoryExists(path));
}
}
std::unique_ptr<FileSystemOperationContext> LimitedContext( std::unique_ptr<FileSystemOperationContext> LimitedContext(
int64_t allowed_bytes_growth) { int64_t allowed_bytes_growth) {
std::unique_ptr<FileSystemOperationContext> context( std::unique_ptr<FileSystemOperationContext> context(
......
...@@ -165,9 +165,6 @@ void SandboxFileSystemTestHelper::SetUpFileSystem() { ...@@ -165,9 +165,6 @@ void SandboxFileSystemTestHelper::SetUpFileSystem() {
file_system_context_->sandbox_delegate()-> file_system_context_->sandbox_delegate()->
GetBaseDirectoryForOriginAndType(origin_, type_, true /* create */); GetBaseDirectoryForOriginAndType(origin_, type_, true /* create */);
// Initialize the usage cache file. The directory does not exist and should be
// created for in memory tests.
base::CreateDirectory(GetUsageCachePath().DirName());
base::FilePath usage_cache_path = GetUsageCachePath(); base::FilePath usage_cache_path = GetUsageCachePath();
if (!usage_cache_path.empty()) if (!usage_cache_path.empty())
usage_cache()->UpdateUsage(usage_cache_path, 0); usage_cache()->UpdateUsage(usage_cache_path, 0);
......
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