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.
5 #include "net/proxy/proxy_info.h"
7 #include "net/proxy/proxy_retry_info.h"
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) {
18 ProxyInfo::~ProxyInfo() {
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_
;
32 void ProxyInfo::UseDirect() {
34 proxy_list_
.SetSingleProxyServer(ProxyServer::Direct());
37 void ProxyInfo::UseDirectWithBypassedProxy() {
39 did_bypass_proxy_
= true;
42 void ProxyInfo::UseNamedProxy(const std::string
& proxy_uri_list
) {
44 proxy_list_
.Set(proxy_uri_list
);
47 void ProxyInfo::UseProxyServer(const ProxyServer
& proxy_server
) {
49 proxy_list_
.SetSingleProxyServer(proxy_server
);
52 void ProxyInfo::UsePacString(const std::string
& pac_string
) {
54 proxy_list_
.SetFromPacString(pac_string
);
57 void ProxyInfo::UseProxyList(const ProxyList
& proxy_list
) {
59 proxy_list_
= proxy_list
;
62 void ProxyInfo::OverrideProxyList(const ProxyList
& proxy_list
) {
63 proxy_list_
= proxy_list
;
66 std::string
ProxyInfo::ToPacString() const {
67 return proxy_list_
.ToPacString();
70 bool ProxyInfo::Fallback(int net_error
, const BoundNetLog
& net_log
) {
71 return proxy_list_
.Fallback(&proxy_retry_info_
, net_error
, net_log
);
74 void ProxyInfo::DeprioritizeBadProxies(
75 const ProxyRetryInfoMap
& proxy_retry_info
) {
76 proxy_list_
.DeprioritizeBadProxies(proxy_retry_info
);
79 void ProxyInfo::RemoveProxiesWithoutScheme(int scheme_bit_field
) {
80 proxy_list_
.RemoveProxiesWithoutScheme(scheme_bit_field
);
83 void ProxyInfo::Reset() {
84 proxy_resolve_start_time_
= base::TimeTicks();
85 proxy_resolve_end_time_
= base::TimeTicks();
87 proxy_retry_info_
.clear();
88 config_id_
= ProxyConfig::kInvalidConfigID
;
89 config_source_
= PROXY_CONFIG_SOURCE_UNKNOWN
;
90 did_bypass_proxy_
= false;
91 did_use_pac_script_
= false;