blob: 939ffdd8023ee45b0152ccb84e629bb432460dae [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/plus_addresses/plus_address_cache.h"
#include <optional>
#include <vector>
#include "components/plus_addresses/plus_address_types.h"
namespace plus_addresses {
PlusAddressCache::PlusAddressCache() = default;
PlusAddressCache::~PlusAddressCache() = default;
bool PlusAddressCache::InsertProfile(const PlusProfile& profile) {
const auto [it, inserted] = plus_profiles_.insert(profile);
if (inserted) {
plus_addresses_.insert(*profile.plus_address);
}
return inserted;
}
bool PlusAddressCache::EraseProfile(const PlusProfile& profile) {
bool erased = plus_profiles_.erase(profile);
if (erased) {
plus_addresses_.erase(*profile.plus_address);
}
return erased;
}
std::optional<PlusProfile> PlusAddressCache::FindByFacet(
const affiliations::FacetURI& facet) const {
// `facet` is used as the comparator, so the other fields don't matter.
if (auto it =
plus_profiles_.find(PlusProfile("", facet, PlusAddress(), false));
it != plus_profiles_.end()) {
return *it;
}
return std::nullopt;
}
void PlusAddressCache::Clear() {
plus_profiles_.clear();
plus_addresses_.clear();
}
bool PlusAddressCache::IsPlusAddress(
const std::string& potential_plus_address) const {
return plus_addresses_.contains(potential_plus_address);
}
base::span<const PlusProfile> PlusAddressCache::GetPlusProfiles() const {
return plus_profiles_;
}
bool PlusAddressCache::IsEmpty() const {
return plus_profiles_.empty();
}
size_t PlusAddressCache::Size() const {
return plus_profiles_.size();
}
} // namespace plus_addresses