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 9namespace net { 10 11ProxyInfo::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 18ProxyInfo::~ProxyInfo() { 19} 20 21void 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 32void ProxyInfo::UseDirect() { 33 Reset(); 34 proxy_list_.SetSingleProxyServer(ProxyServer::Direct()); 35} 36 37void ProxyInfo::UseDirectWithBypassedProxy() { 38 UseDirect(); 39 did_bypass_proxy_ = true; 40} 41 42void ProxyInfo::UseNamedProxy(const std::string& proxy_uri_list) { 43 Reset(); 44 proxy_list_.Set(proxy_uri_list); 45} 46 47void ProxyInfo::UseProxyServer(const ProxyServer& proxy_server) { 48 Reset(); 49 proxy_list_.SetSingleProxyServer(proxy_server); 50} 51 52void ProxyInfo::UsePacString(const std::string& pac_string) { 53 Reset(); 54 proxy_list_.SetFromPacString(pac_string); 55} 56 57void ProxyInfo::UseProxyList(const ProxyList& proxy_list) { 58 Reset(); 59 proxy_list_ = proxy_list; 60} 61 62std::string ProxyInfo::ToPacString() const { 63 return proxy_list_.ToPacString(); 64} 65 66bool ProxyInfo::Fallback(const BoundNetLog& net_log) { 67 return proxy_list_.Fallback(&proxy_retry_info_, net_log); 68} 69 70void ProxyInfo::DeprioritizeBadProxies( 71 const ProxyRetryInfoMap& proxy_retry_info) { 72 proxy_list_.DeprioritizeBadProxies(proxy_retry_info); 73} 74 75void ProxyInfo::RemoveProxiesWithoutScheme(int scheme_bit_field) { 76 proxy_list_.RemoveProxiesWithoutScheme(scheme_bit_field); 77} 78 79void 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