blob: 876600d147f74ebd56a48fc9b0260644979ac7ee [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_NET_SECURE_DNS_UTIL_H_
#define CHROME_BROWSER_NET_SECURE_DNS_UTIL_H_
#include <memory>
#include <vector>
#include "chrome/browser/net/dns_probe_runner.h"
#include "components/country_codes/country_codes.h"
#include "net/dns/public/dns_over_https_config.h"
#include "net/dns/public/doh_provider_entry.h"
#include "services/network/public/cpp/network_context_getter.h"
class PrefRegistrySimple;
class PrefService;
namespace chrome_browser_net::secure_dns {
// Returns the subsequence of `providers` that are marked for use in the
// specified country.
net::DohProviderEntry::List ProvidersForCountry(
const net::DohProviderEntry::List& providers,
country_codes::CountryId country_id);
// Returns the subsequence of `providers` that are enabled, according to their
// `net::DohProviderEntry::feature` members.
net::DohProviderEntry::List SelectEnabledProviders(
const net::DohProviderEntry::List& providers);
void UpdateValidationHistogram(bool valid);
void UpdateProbeHistogram(bool success);
// Returns a DNS prober configured for testing DoH servers
std::unique_ptr<DnsProbeRunner> MakeProbeRunner(
net::DnsOverHttpsConfig doh_config,
const network::NetworkContextGetter& network_context_getter);
// Registers the backup preference required for the DNS probes setting reset.
// TODO(crbug.com/40122991): Remove this once the privacy settings redesign
// is fully launched.
void RegisterProbesSettingBackupPref(PrefRegistrySimple* registry);
// Backs up the unneeded preference controlling DNS and captive portal probes
// once the privacy settings redesign is enabled, or restores the backup
// in case the feature is rolled back.
// TODO(crbug.com/40122991): Remove this once the privacy settings redesign
// is fully launched.
void MigrateProbesSettingToOrFromBackup(PrefService* prefs);
} // namespace chrome_browser_net::secure_dns
#endif // CHROME_BROWSER_NET_SECURE_DNS_UTIL_H_