#include "extensions/browser/api/storage/settings_storage_quota_enforcer.h"
#include <memory>
#include "base/functional/bind.h"
#include "base/json/json_writer.h"
#include "base/logging.h"
#include "base/strings/stringprintf.h"
#include "extensions/common/extension_api.h"
ValueStore;
namespace extensions {
namespace {
enum Resource { … };
void Allocate(
const std::string& key,
const base::Value& value,
size_t* used_total,
std::map<std::string, size_t>* used_per_setting) { … }
ValueStore::Status QuotaExceededError(Resource resource) { … }
}
SettingsStorageQuotaEnforcer::SettingsStorageQuotaEnforcer(
const Limits& limits,
std::unique_ptr<ValueStore> delegate)
: … { … }
SettingsStorageQuotaEnforcer::~SettingsStorageQuotaEnforcer() = default;
size_t SettingsStorageQuotaEnforcer::GetBytesInUse(const std::string& key) { … }
size_t SettingsStorageQuotaEnforcer::GetBytesInUse(
const std::vector<std::string>& keys) { … }
size_t SettingsStorageQuotaEnforcer::GetBytesInUse() { … }
ValueStore::ReadResult SettingsStorageQuotaEnforcer::Get(
const std::string& key) { … }
ValueStore::ReadResult SettingsStorageQuotaEnforcer::Get(
const std::vector<std::string>& keys) { … }
ValueStore::ReadResult SettingsStorageQuotaEnforcer::Get() { … }
ValueStore::WriteResult SettingsStorageQuotaEnforcer::Set(
WriteOptions options, const std::string& key, const base::Value& value) { … }
ValueStore::WriteResult SettingsStorageQuotaEnforcer::Set(
WriteOptions options,
const base::Value::Dict& values) { … }
ValueStore::WriteResult SettingsStorageQuotaEnforcer::Remove(
const std::string& key) { … }
ValueStore::WriteResult SettingsStorageQuotaEnforcer::Remove(
const std::vector<std::string>& keys) { … }
ValueStore::WriteResult SettingsStorageQuotaEnforcer::Clear() { … }
template <class T>
T SettingsStorageQuotaEnforcer::HandleResult(T result) { … }
void SettingsStorageQuotaEnforcer::LazyCalculateUsage() { … }
void SettingsStorageQuotaEnforcer::Free(const std::string& key) { … }
}