blob: 2587caaebbc85f5d9a3b68d75b0ab233d7c04448 [file] [log] [blame]
// 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 CONTENT_BROWSER_INDEXED_DB_INSTANCE_BACKING_STORE_UTIL_H_
#define CONTENT_BROWSER_INDEXED_DB_INSTANCE_BACKING_STORE_UTIL_H_
#include "base/values.h"
#include "content/browser/indexed_db/instance/backing_store.h"
#include "content/browser/indexed_db/status.h"
#include "content/common/content_export.h"
namespace content::indexed_db {
// Translates a database into a base::Value. It's intended that this fully
// captures the observable state/contents of the database. Some internal state
// might not be observable via this interface, including
//
// * records that exist in the database, but aren't associated with object
// stores described in the metadata, e.g. if a deletion left behind records
// * internal bookkeeping, e.g. tombstones for LevelDB or blob references for
// SQLite
//
// Currently, blob contents are ignored and only blob metadata is factored into
// the output.
//
// NB: the entire DB is loaded into a DictValue which can consume a lot of
// memory! To cut down on total memory requirements, hashing is applied to
// larger keys, values, and object stores. Care should still be taken to limit
// its usage and impact on real users.
CONTENT_EXPORT StatusOr<base::DictValue> SnapshotDatabase(
BackingStore::Database& db);
} // namespace content::indexed_db
#endif // CONTENT_BROWSER_INDEXED_DB_INSTANCE_BACKING_STORE_UTIL_H_