// 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_SECURE_DNS_MODE_H_
#define NET_DNS_PUBLIC_SECURE_DNS_MODE_H_

#include "base/containers/fixed_flat_map.h"
#include "base/strings/string_piece.h"

namespace net {

// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.net
// The SecureDnsMode specifies what types of lookups (secure/insecure) should
// be performed and in what order when resolving a specific query. The int
// values should not be changed as they are logged.
enum class SecureDnsMode : int {
  // In OFF mode, no DoH lookups should be performed.
  kOff = 0,
  // In AUTOMATIC mode, DoH lookups should be performed first if DoH is
  // available, and insecure DNS lookups should be performed as a fallback.
  kAutomatic = 1,
  // In SECURE mode, only DoH lookups should be performed.
  kSecure = 2,
};

inline constexpr auto kSecureDnsModes =
    base::MakeFixedFlatMap<SecureDnsMode, base::StringPiece>(
        {{SecureDnsMode::kOff, "Off"},
         {SecureDnsMode::kAutomatic, "Automatic"},
         {SecureDnsMode::kSecure, "Secure"}});

}  // namespace net

#endif  // NET_DNS_PUBLIC_SECURE_DNS_MODE_H_
