• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
ProxyInfo()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 
~ProxyInfo()18 ProxyInfo::~ProxyInfo() {
19 }
20 
Use(const ProxyInfo & other)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 
UseDirect()32 void ProxyInfo::UseDirect() {
33   Reset();
34   proxy_list_.SetSingleProxyServer(ProxyServer::Direct());
35 }
36 
UseDirectWithBypassedProxy()37 void ProxyInfo::UseDirectWithBypassedProxy() {
38   UseDirect();
39   did_bypass_proxy_ = true;
40 }
41 
UseNamedProxy(const std::string & proxy_uri_list)42 void ProxyInfo::UseNamedProxy(const std::string& proxy_uri_list) {
43   Reset();
44   proxy_list_.Set(proxy_uri_list);
45 }
46 
UseProxyServer(const ProxyServer & proxy_server)47 void ProxyInfo::UseProxyServer(const ProxyServer& proxy_server) {
48   Reset();
49   proxy_list_.SetSingleProxyServer(proxy_server);
50 }
51 
UsePacString(const std::string & pac_string)52 void ProxyInfo::UsePacString(const std::string& pac_string) {
53   Reset();
54   proxy_list_.SetFromPacString(pac_string);
55 }
56 
UseProxyList(const ProxyList & proxy_list)57 void ProxyInfo::UseProxyList(const ProxyList& proxy_list) {
58   Reset();
59   proxy_list_ = proxy_list;
60 }
61 
ToPacString() const62 std::string ProxyInfo::ToPacString() const {
63   return proxy_list_.ToPacString();
64 }
65 
Fallback(int net_error,const BoundNetLog & net_log)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 
DeprioritizeBadProxies(const ProxyRetryInfoMap & proxy_retry_info)70 void ProxyInfo::DeprioritizeBadProxies(
71     const ProxyRetryInfoMap& proxy_retry_info) {
72   proxy_list_.DeprioritizeBadProxies(proxy_retry_info);
73 }
74 
RemoveProxiesWithoutScheme(int scheme_bit_field)75 void ProxyInfo::RemoveProxiesWithoutScheme(int scheme_bit_field) {
76   proxy_list_.RemoveProxiesWithoutScheme(scheme_bit_field);
77 }
78 
Reset()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