/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef STORAGE_OBFUSCATINGVFS_H_
#define STORAGE_OBFUSCATINGVFS_H_

#include <cstdint>

#include "mozilla/UniquePtr.h"

struct sqlite3_vfs;
struct sqlite3_file;

template <typename T>
struct already_AddRefed;

namespace mozilla::dom::quota {
class QuotaObject;
}

namespace mozilla::storage::obfsvfs {

// Page size for obfuscated databases. Baked into the on-disk format;
// changing it requires a migration.
inline constexpr int32_t kObfsPageSize = 8192;

const char* GetVFSName();

UniquePtr<sqlite3_vfs> ConstructVFS(const char* aBaseVFSName);

already_AddRefed<dom::quota::QuotaObject> GetQuotaObjectForFile(
    sqlite3_file* pFile);

}  // namespace mozilla::storage::obfsvfs

#endif  // STORAGE_OBFUSCATINGVFS_H_
