firefox_proxy_settings.h revision a3f7b4e666c476898878fa745f637129375cd889
1a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#ifndef CHROME_BROWSER_NET_FIREFOX_PROXY_SETTINGS_H_ 6a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#define CHROME_BROWSER_NET_FIREFOX_PROXY_SETTINGS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FilePath; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProxyConfig; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FirefoxProxySettings { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ProxyConfig { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NO_PROXY = 0, // No proxy are used. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AUTO_DETECT, // Automatically detected. 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SYSTEM, // Using system proxy settings. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AUTO_FROM_URL, // Automatically configured from a URL. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MANUAL // User specified settings. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum SOCKSVersion { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) UNKNONW = 0, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) V4, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) V5 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FirefoxProxySettings(); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~FirefoxProxySettings(); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets |settings| to the proxy settings for the current installed version of 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Firefox and returns true if successful. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns false if Firefox is not installed or if the settings could not be 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // retrieved. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static bool GetSettings(FirefoxProxySettings* settings); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resets all the states of this FirefoxProxySettings to no proxy. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Reset(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProxyConfig config_type() const { return config_type_; } 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string http_proxy() const { return http_proxy_; } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int http_proxy_port() const { return http_proxy_port_; } 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ssl_proxy() const { return ssl_proxy_; } 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ssl_proxy_port() const { return ssl_proxy_port_; } 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ftp_proxy() const { return ftp_proxy_; } 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ftp_proxy_port() const { return ftp_proxy_port_; } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string gopher_proxy() const { return gopher_proxy_; } 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int gopher_proxy_port() const { return gopher_proxy_port_; } 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string socks_host() const { return socks_host_; } 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int socks_port() const { return socks_port_; } 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SOCKSVersion socks_version() const { return socks_version_; } 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> proxy_bypass_list() const { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return proxy_bypass_list_; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string autoconfig_url() const { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return autoconfig_url_; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Converts a FirefoxProxySettings object to a net::ProxyConfig. 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // On success returns true and fills |config| with the result. 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ToProxyConfig(net::ProxyConfig* config); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Gets the settings from the passed prefs.js file and returns true if 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // successful. 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Protected for tests. 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) static bool GetSettingsFromFile(const base::FilePath& pref_file, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FirefoxProxySettings* settings); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProxyConfig config_type_; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string http_proxy_; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int http_proxy_port_; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ssl_proxy_; 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ssl_proxy_port_; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string ftp_proxy_; 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int ftp_proxy_port_; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string gopher_proxy_; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int gopher_proxy_port_; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string socks_host_; 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int socks_port_; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SOCKSVersion socks_version_; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> proxy_bypass_list_; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string autoconfig_url_; 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FirefoxProxySettings); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 112a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#endif // CHROME_BROWSER_NET_FIREFOX_PROXY_SETTINGS_H_ 113