// Copyright 2022 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_PRIVATE_AGGREGATION_PRIVATE_AGGREGATION_BUDGET_STORAGE_H_ #define CONTENT_BROWSER_PRIVATE_AGGREGATION_PRIVATE_AGGREGATION_BUDGET_STORAGE_H_ #include <memory> #include "base/functional/callback_forward.h" #include "base/memory/scoped_refptr.h" #include "base/sequence_checker.h" #include "base/time/time.h" #include "components/sqlite_proto/key_value_data.h" #include "components/sqlite_proto/key_value_table.h" #include "content/common/content_export.h" namespace base { class ElapsedTimer; class FilePath; class SequencedTaskRunner; } // namespace base namespace sql { class Database; } // namespace sql namespace sqlite_proto { class ProtoTableManager; } // namespace sqlite_proto namespace content { namespace proto { class PrivateAggregationBudgets; } // namespace proto // UI thread class that provides an interface for storing the budget used by // each key, i.e. the sum of contributions, and persisting that to an on-disk // database (unless run exclusively in memory). This class is responsible for // owning and initializing the database and sqlite_proto classes. Note that // callbacks are used for storage return values to allow switching the // underlying storage in the future in case the cache uses too much memory. // Writes are buffered for `kFlushDelay` and then persisted to disk. The // `Create()` factory method ensures that this class stays alive through // initialization; after that point, it has no specific lifetime requirements. class CONTENT_EXPORT PrivateAggregationBudgetStorage { … }; } // namespace content #endif // CONTENT_BROWSER_PRIVATE_AGGREGATION_PRIVATE_AGGREGATION_BUDGET_STORAGE_H_