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

#include "services/proxy_resolver/public/cpp/mojo_host_mojom_traits.h"

#include <utility>

#include "net/base/address_list.h"
#include "services/network/public/cpp/address_family_mojom_traits.h"

namespace mojo {

// static
proxy_resolver::mojom::HostResolveOperation
EnumTraits<proxy_resolver::mojom::HostResolveOperation,
           net::ProxyResolveDnsOperation>::ToMojom(net::ProxyResolveDnsOperation
                                                       input) {
  switch (input) {
    case net::ProxyResolveDnsOperation::DNS_RESOLVE:
      return proxy_resolver::mojom::HostResolveOperation::DNS_RESOLVE;
    case net::ProxyResolveDnsOperation::DNS_RESOLVE_EX:
      return proxy_resolver::mojom::HostResolveOperation::DNS_RESOLVE_EX;
    case net::ProxyResolveDnsOperation::MY_IP_ADDRESS:
      return proxy_resolver::mojom::HostResolveOperation::MY_IP_ADDRESS;
    case net::ProxyResolveDnsOperation::MY_IP_ADDRESS_EX:
      return proxy_resolver::mojom::HostResolveOperation::MY_IP_ADDRESS_EX;
  }

  NOTREACHED();
  return proxy_resolver::mojom::HostResolveOperation::kMinValue;
}

// static
bool EnumTraits<proxy_resolver::mojom::HostResolveOperation,
                net::ProxyResolveDnsOperation>::
    FromMojom(proxy_resolver::mojom::HostResolveOperation input,
              net::ProxyResolveDnsOperation* output) {
  switch (input) {
    case proxy_resolver::mojom::HostResolveOperation::DNS_RESOLVE:
      *output = net::ProxyResolveDnsOperation::DNS_RESOLVE;
      return true;
    case proxy_resolver::mojom::HostResolveOperation::DNS_RESOLVE_EX:
      *output = net::ProxyResolveDnsOperation::DNS_RESOLVE_EX;
      return true;
    case proxy_resolver::mojom::HostResolveOperation::MY_IP_ADDRESS:
      *output = net::ProxyResolveDnsOperation::MY_IP_ADDRESS;
      return true;
    case proxy_resolver::mojom::HostResolveOperation::MY_IP_ADDRESS_EX:
      *output = net::ProxyResolveDnsOperation::MY_IP_ADDRESS_EX;
      return true;
  }

  NOTREACHED();
  return false;
}

}  // namespace mojo
