1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
// 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 CHROME_BROWSER_NET_SECURE_DNS_CONFIG_H_
#define CHROME_BROWSER_NET_SECURE_DNS_CONFIG_H_
#include <optional>
#include <string_view>
#include "net/dns/public/dns_over_https_config.h"
#include "net/dns/public/secure_dns_mode.h"
// Representation of a complete Secure DNS configuration.
class SecureDnsConfig {
public:
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.net
// GENERATED_JAVA_CLASS_NAME_OVERRIDE: SecureDnsManagementMode
// Forced management description types. We will check for the override cases
// in the order they are listed in the enum.
enum class ManagementMode {
// Chrome did not override the secure DNS settings.
kNoOverride,
// Secure DNS was disabled due to detection of a managed environment.
kDisabledManaged,
// Secure DNS was disabled due to detection of OS-level parental controls.
kDisabledParentalControls,
};
// String representations for net::SecureDnsMode. Used for both configuration
// storage and UI state.
static constexpr char kModeOff[] = "off";
static constexpr char kModeAutomatic[] = "automatic";
static constexpr char kModeSecure[] = "secure";
SecureDnsConfig(net::SecureDnsMode mode,
net::DnsOverHttpsConfig doh_config,
ManagementMode management_mode);
// This class is move-only to avoid any accidental copying.
SecureDnsConfig(SecureDnsConfig&& other);
SecureDnsConfig& operator=(SecureDnsConfig&& other);
~SecureDnsConfig();
// Identifies the SecureDnsMode corresponding to one of the above names, or
// returns nullopt if the name is unrecognized.
static std::optional<net::SecureDnsMode> ParseMode(std::string_view name);
// Converts a secure DNS mode to one of the above names.
static const char* ModeToString(net::SecureDnsMode mode);
net::SecureDnsMode mode() { return mode_; }
const net::DnsOverHttpsConfig& doh_servers() { return doh_servers_; }
ManagementMode management_mode() { return management_mode_; }
private:
net::SecureDnsMode mode_;
net::DnsOverHttpsConfig doh_servers_;
ManagementMode management_mode_;
};
#endif // CHROME_BROWSER_NET_SECURE_DNS_CONFIG_H_
|