Home | History | Annotate | Download | only in proxy
      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