| // 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. |
| |
| module network.mojom; |
| |
| import "mojo/public/mojom/base/version.mojom"; |
| import "services/network/public/mojom/schemeful_site.mojom"; |
| |
| // This enum should match //net/first_party_sets/first_party_set_entry.h. |
| enum SiteType { |
| kPrimary, |
| kAssociated, |
| kService, |
| }; |
| |
| // This struct should match //net/first_party_sets/first_party_set_entry.h. |
| struct FirstPartySetEntry { |
| SchemefulSite primary; |
| SiteType site_type; |
| }; |
| |
| // This struct must match the class fields defined in |
| // //net/first_party_sets/first_party_set_metadata.h. |
| struct FirstPartySetMetadata { |
| // std::nullopt indicates that the frame's site is not associated with any |
| // First-Party Set. |
| FirstPartySetEntry? frame_entry; |
| // std::nullopt indicates that the top frame's site is not associated with |
| // any First-Party Set. |
| FirstPartySetEntry? top_frame_entry; |
| }; |
| |
| struct FirstPartySetEntryOverride { |
| // If `entry` is null, that means the site is considered deleted from the |
| // existing First-Party Sets, for the given context. Otherwise, the site is |
| // considered re-mapped to a potentially different/new First-Party Set, using |
| // the given entry. |
| FirstPartySetEntry? entry; |
| }; |
| |
| // This struct must match the class fields defined in |
| // //net/first_party_sets/first_party_sets_context_config.h. |
| struct FirstPartySetsContextConfig { |
| // This map must be computed against the public First-Party Sets, where the |
| // keys are member sites and the values are the ultimate entries of the final |
| // First-Party Sets combining the public sets and the modifications. |
| map<SchemefulSite, FirstPartySetEntryOverride> customizations; |
| |
| // The aliases that are found in customizations. |
| map<SchemefulSite, SchemefulSite> aliases; |
| }; |
| |
| // This struct must match the class fields defined in |
| // //net/first_party_sets/first_party_sets_cache_filter.h. |
| struct FirstPartySetsCacheFilter { |
| // The filter used to bypass cache. The key is site may be bypassed for |
| // cache access, the value indicates the browser run of which the site |
| // was marked to be cleared. |
| map<SchemefulSite, int64> filter; |
| |
| // The id of the current browser run, to mark the cache entry when persisting. |
| // The cache filter should be no-op if this is 0. |
| // TODO(crbug.com/40489779): Make this optional. |
| int64 browser_run_id = 0; |
| }; |
| |
| // This struct must match the class fields defined in |
| // //net/first_party_sets/global_first_party_sets.h. |
| struct GlobalFirstPartySets { |
| // The version of the public sets component. This may be invalid if the |
| // "First-Party Sets" component has not been installed yet, or has been |
| // corrupted. Entries and aliases from invalid components are ignored. |
| mojo_base.mojom.Version public_sets_version; |
| |
| // The mapping from site to FPS entry from public sets. |
| map<SchemefulSite, FirstPartySetEntry> sets; |
| |
| // The mapping from site alias to canonical site from public sets. |
| map<SchemefulSite, SchemefulSite> aliases; |
| |
| // The config induced by the manually-supplied set. This config contains all |
| // relevant ccTLD aliases. |
| FirstPartySetsContextConfig manual_config; |
| }; |