chromium/net/dns/public/doh_provider_entry.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef NET_DNS_PUBLIC_DOH_PROVIDER_ENTRY_H_
#define NET_DNS_PUBLIC_DOH_PROVIDER_ENTRY_H_

#include <optional>
#include <set>
#include <string>
#include <string_view>
#include <vector>

#include "base/feature_list.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/raw_ptr_exclusion.h"
#include "net/base/ip_address.h"
#include "net/base/net_export.h"
#include "net/dns/public/dns_over_https_server_config.h"

namespace net {

// Represents insecure DNS, DoT, and DoH services run by the same provider.
// These entries are used to support upgrade from insecure DNS or DoT services
// to associated DoH services in automatic mode and to populate the dropdown
// menu for secure mode.
//
// To be eligible for auto-upgrade, an entry must have a non-empty
// `dns_over_53_server_ip_strs` or non-empty `dns_over_tls_hostnames`. To be
// eligible for the dropdown menu, the entry must have non-empty `ui_name` and
// `privacy_policy`. If `display_globally` is true, the entry is eligible to be
// displayed globally in the dropdown menu. If `display_globally` is false,
// `display_countries` should contain the two-letter ISO 3166-1 country codes,
// if any, where the entry is eligible for being displayed in the dropdown menu.
//
// If `feature` is disabled, the entry is eligible for neither auto-upgrade nor
// the dropdown menu.
struct NET_EXPORT DohProviderEntry {};

}  // namespace net

#endif  // NET_DNS_PUBLIC_DOH_PROVIDER_ENTRY_H_