1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "net/proxy/proxy_info.h" 6 7 #include "net/proxy/proxy_retry_info.h" 8 9 namespace net { 10 11 ProxyInfo::ProxyInfo() 12 : config_id_(ProxyConfig::kInvalidConfigID), 13 config_source_(PROXY_CONFIG_SOURCE_UNKNOWN), 14 did_bypass_proxy_(false), 15 did_use_pac_script_(false) { 16 } 17 18 ProxyInfo::~ProxyInfo() { 19 } 20 21 void ProxyInfo::Use(const ProxyInfo& other) { 22 proxy_resolve_start_time_ = other.proxy_resolve_start_time_; 23 proxy_resolve_end_time_ = other.proxy_resolve_end_time_; 24 proxy_list_ = other.proxy_list_; 25 proxy_retry_info_ = other.proxy_retry_info_; 26 config_id_ = other.config_id_; 27 config_source_ = other.config_source_; 28 did_bypass_proxy_ = other.did_bypass_proxy_; 29 did_use_pac_script_ = other.did_use_pac_script_; 30 } 31 32 void ProxyInfo::UseDirect() { 33 Reset(); 34 proxy_list_.SetSingleProxyServer(ProxyServer::Direct()); 35 } 36 37 void ProxyInfo::UseDirectWithBypassedProxy() { 38 UseDirect(); 39 did_bypass_proxy_ = true; 40 } 41 42 void ProxyInfo::UseNamedProxy(const std::string& proxy_uri_list) { 43 Reset(); 44 proxy_list_.Set(proxy_uri_list); 45 } 46 47 void ProxyInfo::UseProxyServer(const ProxyServer& proxy_server) { 48 Reset(); 49 proxy_list_.SetSingleProxyServer(proxy_server); 50 } 51 52 void ProxyInfo::UsePacString(const std::string& pac_string) { 53 Reset(); 54 proxy_list_.SetFromPacString(pac_string); 55 } 56 57 void ProxyInfo::UseProxyList(const ProxyList& proxy_list) { 58 Reset(); 59 proxy_list_ = proxy_list; 60 } 61 62 std::string ProxyInfo::ToPacString() const { 63 return proxy_list_.ToPacString(); 64 } 65 66 bool ProxyInfo::Fallback(int net_error, const BoundNetLog& net_log) { 67 return proxy_list_.Fallback(&proxy_retry_info_, net_error, net_log); 68 } 69 70 void ProxyInfo::DeprioritizeBadProxies( 71 const ProxyRetryInfoMap& proxy_retry_info) { 72 proxy_list_.DeprioritizeBadProxies(proxy_retry_info); 73 } 74 75 void ProxyInfo::RemoveProxiesWithoutScheme(int scheme_bit_field) { 76 proxy_list_.RemoveProxiesWithoutScheme(scheme_bit_field); 77 } 78 79 void ProxyInfo::Reset() { 80 proxy_resolve_start_time_ = base::TimeTicks(); 81 proxy_resolve_end_time_ = base::TimeTicks(); 82 proxy_list_.Clear(); 83 proxy_retry_info_.clear(); 84 config_id_ = ProxyConfig::kInvalidConfigID; 85 config_source_ = PROXY_CONFIG_SOURCE_UNKNOWN; 86 did_bypass_proxy_ = false; 87 did_use_pac_script_ = false; 88 } 89 90 } // namespace net 91