// Copyright 2023 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_INTEREST_GROUP_INTEREST_GROUP_CACHING_STORAGE_H_ #define CONTENT_BROWSER_INTEREST_GROUP_INTEREST_GROUP_CACHING_STORAGE_H_ #include <algorithm> #include <cstddef> #include <cstdint> #include <optional> #include <vector> #include "base/containers/flat_map.h" #include "base/containers/flat_set.h" #include "base/containers/queue.h" #include "base/memory/weak_ptr.h" #include "base/threading/sequence_bound.h" #include "base/time/time.h" #include "content/browser/interest_group/interest_group_storage.h" #include "content/browser/interest_group/interest_group_update.h" #include "content/browser/interest_group/storage_interest_group.h" #include "content/services/auction_worklet/public/mojom/bidder_worklet.mojom.h" #include "third_party/blink/public/common/interest_group/interest_group.h" #include "url/origin.h" namespace content { struct DebugReportLockoutAndCooldowns; class StorageInterestGroups; // SingleStorageInterestGroup ensures that pointers to values inside // StorageInterestGroups are accompanied by a // scoped_refptr<StorageInterestGroups> to prevent dangling pointers and // ensures the scoped_refptr<StorageInterestGroups> and // raw_ptr<StorageInterestGroup> are destructed in the correct order. class CONTENT_EXPORT SingleStorageInterestGroup { … }; // StorageInterestGroups is needed for InterestGroupCachingStorage // because it requires weak pointers and ref counted pointers to // std::vector<StorageInterestGroup>. class CONTENT_EXPORT StorageInterestGroups : public base::RefCounted<StorageInterestGroups> { … }; // InterestGroupCachingStorage controls access to the Interest Group Database // through its owned InterestGroupStorage. InterestGroupStorage should // not be accessed outside of this class. InterestGroupCachingStorage provides a // pointer to in-memory values for GetInterestGroupsForOwner when available and // invalidates the cached values when necessary (when an update to the values // occurs). It also provides cached values of the owner and bidding signals // origins so that they can be prefetched before loading interest groups. class CONTENT_EXPORT InterestGroupCachingStorage { … }; } // namespace content #endif // CONTENT_BROWSER_INTEREST_GROUP_INTEREST_GROUP_CACHING_STORAGE_H_