blob: 766d4f1ba519200943e3a36967a95d8f1bde6c88 [file]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_PERSISTENT_CACHE_SQLITE_BACKEND_STORAGE_DELEGATE_H_
#define COMPONENTS_PERSISTENT_CACHE_SQLITE_BACKEND_STORAGE_DELEGATE_H_
#include "base/component_export.h"
#include "components/persistent_cache/backend_storage.h"
namespace persistent_cache::sqlite {
// A delegate that manages storage on behalf of SqliteBackendImpl.
class COMPONENT_EXPORT(PERSISTENT_CACHE) BackendStorageDelegate
: public BackendStorage::Delegate {
public:
// BackendStorage::Delegate:
std::optional<PendingBackend> MakePendingBackend(
const base::FilePath& directory,
const base::FilePath& base_name,
bool single_connection,
bool journal_mode_wal) override;
std::unique_ptr<Backend> MakeBackend(const base::FilePath& directory,
const base::FilePath& base_name,
bool single_connection,
bool journal_mode_wal) override;
std::optional<PendingBackend> ShareReadOnlyConnection(
const base::FilePath& directory,
const base::FilePath& base_name,
const Backend& backend) override;
std::optional<PendingBackend> ShareReadWriteConnection(
const base::FilePath& directory,
const base::FilePath& base_name,
const Backend& backend) override;
// Returns the basename of `file` without its extension if its extension is
// ".db".
base::FilePath GetBaseName(const base::FilePath& file) override;
// Deletes all SQLite files for `base_name` in `directory` (e.g., the .db and
// .journal files).
int64_t DeleteFiles(const base::FilePath& directory,
const base::FilePath& base_name) override;
private:
std::optional<PendingBackend> ShareConnection(const base::FilePath& directory,
const base::FilePath& base_name,
const Backend& backend,
bool read_write);
};
} // namespace persistent_cache::sqlite
#endif // COMPONENTS_PERSISTENT_CACHE_SQLITE_BACKEND_STORAGE_DELEGATE_H_