// Copyright 2016 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 "net/nqe/effective_connection_type.h" #include "base/notreached.h" namespace { const char kDeprectedEffectiveConnectionTypeSlow2G[] = "Slow2G"; } // namespace namespace net { const char kEffectiveConnectionTypeUnknown[] = "Unknown"; const char kEffectiveConnectionTypeOffline[] = "Offline"; const char kEffectiveConnectionTypeSlow2G[] = "Slow-2G"; const char kEffectiveConnectionType2G[] = "2G"; const char kEffectiveConnectionType3G[] = "3G"; const char kEffectiveConnectionType4G[] = "4G"; const char* GetNameForEffectiveConnectionType(EffectiveConnectionType type) { switch (type) { case EFFECTIVE_CONNECTION_TYPE_UNKNOWN: return kEffectiveConnectionTypeUnknown; case EFFECTIVE_CONNECTION_TYPE_OFFLINE: return kEffectiveConnectionTypeOffline; case EFFECTIVE_CONNECTION_TYPE_SLOW_2G: return kEffectiveConnectionTypeSlow2G; case EFFECTIVE_CONNECTION_TYPE_2G: return kEffectiveConnectionType2G; case EFFECTIVE_CONNECTION_TYPE_3G: return kEffectiveConnectionType3G; case EFFECTIVE_CONNECTION_TYPE_4G: return kEffectiveConnectionType4G; case EFFECTIVE_CONNECTION_TYPE_LAST: NOTREACHED(); return ""; } NOTREACHED(); return ""; } absl::optional GetEffectiveConnectionTypeForName( base::StringPiece connection_type_name) { if (connection_type_name == kEffectiveConnectionTypeUnknown) return EFFECTIVE_CONNECTION_TYPE_UNKNOWN; if (connection_type_name == kEffectiveConnectionTypeOffline) return EFFECTIVE_CONNECTION_TYPE_OFFLINE; if (connection_type_name == kEffectiveConnectionTypeSlow2G) return EFFECTIVE_CONNECTION_TYPE_SLOW_2G; // Return EFFECTIVE_CONNECTION_TYPE_SLOW_2G if the deprecated string // representation is in use. if (connection_type_name == kDeprectedEffectiveConnectionTypeSlow2G) return EFFECTIVE_CONNECTION_TYPE_SLOW_2G; if (connection_type_name == kEffectiveConnectionType2G) return EFFECTIVE_CONNECTION_TYPE_2G; if (connection_type_name == kEffectiveConnectionType3G) return EFFECTIVE_CONNECTION_TYPE_3G; if (connection_type_name == kEffectiveConnectionType4G) return EFFECTIVE_CONNECTION_TYPE_4G; return absl::nullopt; } const char* DeprecatedGetNameForEffectiveConnectionType( EffectiveConnectionType type) { switch (type) { case EFFECTIVE_CONNECTION_TYPE_SLOW_2G: return kDeprectedEffectiveConnectionTypeSlow2G; default: return GetNameForEffectiveConnectionType(type); } } } // namespace net