// Copyright (c) 2010 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 CHROME_BROWSER_IMPORTER_FIREFOX_PROXY_SETTINGS_H_ #define CHROME_BROWSER_IMPORTER_FIREFOX_PROXY_SETTINGS_H_ #pragma once #include #include #include "base/basictypes.h" class FilePath; namespace net { class ProxyConfig; } class FirefoxProxySettings { public: enum ProxyConfig { NO_PROXY = 0, // No proxy are used. AUTO_DETECT, // Automatically detected. SYSTEM, // Using system proxy settings. AUTO_FROM_URL, // Automatically configured from a URL. MANUAL // User specified settings. }; enum SOCKSVersion { UNKNONW = 0, V4, V5 }; FirefoxProxySettings(); ~FirefoxProxySettings(); // Sets |settings| to the proxy settings for the current installed version of // Firefox and returns true if successful. // Returns false if Firefox is not installed or if the settings could not be // retrieved. static bool GetSettings(FirefoxProxySettings* settings); // Resets all the states of this FirefoxProxySettings to no proxy. void Reset(); ProxyConfig config_type() const { return config_type_; } std::string http_proxy() const { return http_proxy_; } int http_proxy_port() const { return http_proxy_port_; } std::string ssl_proxy() const { return ssl_proxy_; } int ssl_proxy_port() const { return ssl_proxy_port_; } std::string ftp_proxy() const { return ftp_proxy_; } int ftp_proxy_port() const { return ftp_proxy_port_; } std::string gopher_proxy() const { return gopher_proxy_; } int gopher_proxy_port() const { return gopher_proxy_port_; } std::string socks_host() const { return socks_host_; } int socks_port() const { return socks_port_; } SOCKSVersion socks_version() const { return socks_version_; } std::vector proxy_bypass_list() const { return proxy_bypass_list_; } const std::string autoconfig_url() const { return autoconfig_url_; } // Converts a FirefoxProxySettings object to a net::ProxyConfig. // On success returns true and fills |config| with the result. bool ToProxyConfig(net::ProxyConfig* config); protected: // Gets the settings from the passed prefs.js file and returns true if // successful. // Protected for tests. static bool GetSettingsFromFile(const FilePath& pref_file, FirefoxProxySettings* settings); private: ProxyConfig config_type_; std::string http_proxy_; int http_proxy_port_; std::string ssl_proxy_; int ssl_proxy_port_; std::string ftp_proxy_; int ftp_proxy_port_; std::string gopher_proxy_; int gopher_proxy_port_; std::string socks_host_; int socks_port_; SOCKSVersion socks_version_; std::vector proxy_bypass_list_; std::string autoconfig_url_; DISALLOW_COPY_AND_ASSIGN(FirefoxProxySettings); }; #endif // CHROME_BROWSER_IMPORTER_FIREFOX_PROXY_SETTINGS_H_