# 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.

"""Defines a set of constants specific to appurify."""

# Appurify network config constants.
class NETWORK(object):
  WIFI_1_BAR = 1
  SPRINT_4G_LTE_4_BARS = 2
  SPRINT_3G_5_BARS = 3
  SPRINT_3G_4_BARS = 4
  SPRINT_3G_3_BARS = 5
  SPRINT_3G_2_BARS = 6
  SPRINT_3G_1_BAR = 7
  SPRING_4G_1_BAR = 8
  VERIZON_3G_5_BARS = 9
  VERIZON_3G_4_BARS = 10
  VERIZON_3G_3_BARS = 11
  VERIZON_3G_2_BARS = 12
  VERIZON_3G_1_BAR = 13
  VERIZON_4G_1_BAR = 14
  ATANDT_3G_5_BARS = 15
  ATANDT_3G_4_BARS = 16
  ATANDT_3G_3_BARS = 17
  ATANDT_3G_2_BARS = 18
  ATANDT_3G_1_BAR = 19
  GENERIC_2G_4_BARS = 20
  GENERIC_2G_3_BARS = 21
  GENERIC_EVOLVED_EDGE = 22
  GENERIC_GPRS = 23
  GENERIC_ENHANCED_GPRS = 24
  GENERIC_LTE = 25
  GENERIC_HIGH_LATENCY_DNS = 26
  GENERIC_100_PERCENT_PACKET_LOSS = 27
  ATANDT_HSPA_PLUS = 28
  ATANDT_4G_LTE_4_BARS = 29
  VERIZON_4G_LTE_4_BARS = 30
  GENERIC_DIGITAL_SUBSCRIBE_LINE = 31
  WIFI_STARBUCKS_3_BARS = 32
  WIFI_STARBUCKS_4_BARS = 33
  WIFI_STARBUCKS_HIGH_TRAFFIC = 34
  WIFI_TARGET_1_BAR = 35
  WIFI_TARGET_3_BARS = 36
  WIFI_TARGET_4_BARS = 37
  PUBLIC_WIFI_MCDONALDS_5_BARS = 38
  PUBLIC_WIFI_MCDONALDS_4_BARS = 39
  PUBLIC_WIFI_MCDONALDS_2_BARS = 40
  PUBLIC_WIFI_MCDONALDS_1_BAR = 41
  PUBLIC_WIFI_KOHLS_5_BARS = 42
  PUBLIC_WIFI_KOHLS_4_BARS = 43
  PUBLIC_WIFI_KOHLS_2_BARS = 44
  PUBLIC_WIFI_ATANDT_5_BARS = 45
  PUBLIC_WIFI_ATANDT_4_BARS = 46
  PUBLIC_WIFI_ATANDT_2_BARS = 47
  PUBLIC_WIFI_ATANDT_1_BAR = 48
  BOINGO = 49