1 // Copyright 2023 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/dns/public/host_resolver_source.h" 6 7 #include "base/values.h" 8 #include "third_party/abseil-cpp/absl/types/optional.h" 9 10 namespace net { 11 ToValue(HostResolverSource source)12base::Value ToValue(HostResolverSource source) { 13 return base::Value(static_cast<int>(source)); 14 } 15 HostResolverSourceFromValue(const base::Value & value)16absl::optional<HostResolverSource> HostResolverSourceFromValue( 17 const base::Value& value) { 18 absl::optional<int> value_int = value.GetIfInt(); 19 if (!value_int.has_value() || value_int.value() < 0 || 20 value_int.value() > static_cast<int>(HostResolverSource::MAX)) { 21 return absl::nullopt; 22 } 23 24 return static_cast<HostResolverSource>(value_int.value()); 25 } 26 27 } // namespace net 28