// Copyright (c) 2012 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.

#ifndef NET_PROXY_PROXY_CONFIG_SOURCE_H_
#define NET_PROXY_PROXY_CONFIG_SOURCE_H_

namespace net {

// Source of the configuration settings encapsulated in a ProxyConfig object.

// The source information is used for determining how credentials are used and
// for logging.  When adding new values, remember to add a string to
// kSourceNames[] in proxy_config_source.cc.
enum ProxyConfigSource {
  PROXY_CONFIG_SOURCE_UNKNOWN,       // The source hasn't been set.
  PROXY_CONFIG_SOURCE_SYSTEM,        // System settings (Win/Mac).
  PROXY_CONFIG_SOURCE_SYSTEM_FAILED, // Default settings after failure to
                                     // determine system settings.
  PROXY_CONFIG_SOURCE_GCONF,         // GConf (Linux)
  PROXY_CONFIG_SOURCE_GSETTINGS,     // GSettings (Linux).
  PROXY_CONFIG_SOURCE_KDE,           // KDE (Linux).
  PROXY_CONFIG_SOURCE_ENV,           // Environment variables.
  PROXY_CONFIG_SOURCE_CUSTOM,        // Custom settings local to the
                                     // application (command line,
                                     // extensions, application
                                     // specific preferences, etc.)
  PROXY_CONFIG_SOURCE_TEST,          // Test settings.
  NUM_PROXY_CONFIG_SOURCES
};

// Returns a textual representation of the source.
const char* ProxyConfigSourceToString(ProxyConfigSource source);

}  // namespace net

#endif  // NET_PROXY_PROXY_CONFIG_SOURCE_H_