Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: components/proxy_config/proxy_config_dictionary.cc

Issue 2785883003: Use unique_ptr<DictionaryValue> in ProxyConfigDictionary (Closed)
Patch Set: Fix compilation Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/proxy_config/proxy_config_dictionary.h" 5 #include "components/proxy_config/proxy_config_dictionary.h"
6 6
7 #include <utility>
8
7 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/ptr_util.h"
8 #include "base/values.h" 11 #include "base/values.h"
9 #include "net/proxy/proxy_config.h" 12 #include "net/proxy/proxy_config.h"
10 13
11 namespace { 14 namespace {
12 15
13 // Integer to specify the type of proxy settings. 16 // Integer to specify the type of proxy settings.
14 // See ProxyPrefs for possible values and interactions with the other proxy 17 // See ProxyPrefs for possible values and interactions with the other proxy
15 // preferences. 18 // preferences.
16 const char kProxyMode[] = "mode"; 19 const char kProxyMode[] = "mode";
17 // String specifying the proxy server. For a specification of the expected 20 // String specifying the proxy server. For a specification of the expected
18 // syntax see net::ProxyConfig::ProxyRules::ParseFromString(). 21 // syntax see net::ProxyConfig::ProxyRules::ParseFromString().
19 const char kProxyServer[] = "server"; 22 const char kProxyServer[] = "server";
20 // URL to the proxy .pac file. 23 // URL to the proxy .pac file.
21 const char kProxyPacUrl[] = "pac_url"; 24 const char kProxyPacUrl[] = "pac_url";
22 // Optional boolean flag indicating whether a valid PAC script is mandatory. 25 // Optional boolean flag indicating whether a valid PAC script is mandatory.
23 // If true, network traffic does not fall back to direct connections in case the 26 // If true, network traffic does not fall back to direct connections in case the
24 // PAC script is not available. 27 // PAC script is not available.
25 const char kProxyPacMandatory[] = "pac_mandatory"; 28 const char kProxyPacMandatory[] = "pac_mandatory";
26 // String containing proxy bypass rules. For a specification of the 29 // String containing proxy bypass rules. For a specification of the
27 // expected syntax see net::ProxyBypassRules::ParseFromString(). 30 // expected syntax see net::ProxyBypassRules::ParseFromString().
28 const char kProxyBypassList[] = "bypass_list"; 31 const char kProxyBypassList[] = "bypass_list";
29 32
30 } // namespace 33 } // namespace
31 34
32 ProxyConfigDictionary::ProxyConfigDictionary(const base::DictionaryValue* dict) 35 ProxyConfigDictionary::ProxyConfigDictionary(
33 : dict_(dict->DeepCopy()) { 36 std::unique_ptr<base::DictionaryValue> dict)
34 } 37 : dict_(std::move(dict)) {}
35 38
36 ProxyConfigDictionary::~ProxyConfigDictionary() {} 39 ProxyConfigDictionary::~ProxyConfigDictionary() {}
37 40
38 bool ProxyConfigDictionary::GetMode(ProxyPrefs::ProxyMode* out) const { 41 bool ProxyConfigDictionary::GetMode(ProxyPrefs::ProxyMode* out) const {
39 std::string mode_str; 42 std::string mode_str;
40 return dict_->GetString(kProxyMode, &mode_str) 43 return dict_->GetString(kProxyMode, &mode_str)
41 && StringToProxyMode(mode_str, out); 44 && StringToProxyMode(mode_str, out);
42 } 45 }
43 46
44 bool ProxyConfigDictionary::GetPacUrl(std::string* out) const { 47 bool ProxyConfigDictionary::GetPacUrl(std::string* out) const {
(...skipping 18 matching lines...) Expand all
63 66
64 bool ProxyConfigDictionary::HasBypassList() const { 67 bool ProxyConfigDictionary::HasBypassList() const {
65 return dict_->HasKey(kProxyBypassList); 68 return dict_->HasKey(kProxyBypassList);
66 } 69 }
67 70
68 const base::DictionaryValue& ProxyConfigDictionary::GetDictionary() const { 71 const base::DictionaryValue& ProxyConfigDictionary::GetDictionary() const {
69 return *dict_; 72 return *dict_;
70 } 73 }
71 74
72 // static 75 // static
73 base::DictionaryValue* ProxyConfigDictionary::CreateDirect() { 76 std::unique_ptr<base::DictionaryValue> ProxyConfigDictionary::CreateDirect() {
74 return CreateDictionary(ProxyPrefs::MODE_DIRECT, 77 return CreateDictionary(ProxyPrefs::MODE_DIRECT,
75 std::string(), 78 std::string(),
76 false, 79 false,
77 std::string(), 80 std::string(),
78 std::string()); 81 std::string());
79 } 82 }
80 83
81 // static 84 // static
82 base::DictionaryValue* ProxyConfigDictionary::CreateAutoDetect() { 85 std::unique_ptr<base::DictionaryValue>
86 ProxyConfigDictionary::CreateAutoDetect() {
83 return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT, 87 return CreateDictionary(ProxyPrefs::MODE_AUTO_DETECT,
84 std::string(), 88 std::string(),
85 false, 89 false,
86 std::string(), 90 std::string(),
87 std::string()); 91 std::string());
88 } 92 }
89 93
90 // static 94 // static
91 base::DictionaryValue* ProxyConfigDictionary::CreatePacScript( 95 std::unique_ptr<base::DictionaryValue> ProxyConfigDictionary::CreatePacScript(
92 const std::string& pac_url, 96 const std::string& pac_url,
93 bool pac_mandatory) { 97 bool pac_mandatory) {
94 return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT, 98 return CreateDictionary(ProxyPrefs::MODE_PAC_SCRIPT,
95 pac_url, 99 pac_url,
96 pac_mandatory, 100 pac_mandatory,
97 std::string(), 101 std::string(),
98 std::string()); 102 std::string());
99 } 103 }
100 104
101 // static 105 // static
102 base::DictionaryValue* ProxyConfigDictionary::CreateFixedServers( 106 std::unique_ptr<base::DictionaryValue>
103 const std::string& proxy_server, 107 ProxyConfigDictionary::CreateFixedServers(const std::string& proxy_server,
104 const std::string& bypass_list) { 108 const std::string& bypass_list) {
105 if (!proxy_server.empty()) { 109 if (!proxy_server.empty()) {
106 return CreateDictionary(ProxyPrefs::MODE_FIXED_SERVERS, 110 return CreateDictionary(ProxyPrefs::MODE_FIXED_SERVERS,
107 std::string(), 111 std::string(),
108 false, 112 false,
109 proxy_server, 113 proxy_server,
110 bypass_list); 114 bypass_list);
111 } else { 115 } else {
112 return CreateDirect(); 116 return CreateDirect();
113 } 117 }
114 } 118 }
115 119
116 // static 120 // static
117 base::DictionaryValue* ProxyConfigDictionary::CreateSystem() { 121 std::unique_ptr<base::DictionaryValue> ProxyConfigDictionary::CreateSystem() {
118 return CreateDictionary(ProxyPrefs::MODE_SYSTEM, 122 return CreateDictionary(ProxyPrefs::MODE_SYSTEM,
119 std::string(), 123 std::string(),
120 false, 124 false,
121 std::string(), 125 std::string(),
122 std::string()); 126 std::string());
123 } 127 }
124 128
125 // static 129 // static
126 base::DictionaryValue* ProxyConfigDictionary::CreateDictionary( 130 std::unique_ptr<base::DictionaryValue> ProxyConfigDictionary::CreateDictionary(
127 ProxyPrefs::ProxyMode mode, 131 ProxyPrefs::ProxyMode mode,
128 const std::string& pac_url, 132 const std::string& pac_url,
129 bool pac_mandatory, 133 bool pac_mandatory,
130 const std::string& proxy_server, 134 const std::string& proxy_server,
131 const std::string& bypass_list) { 135 const std::string& bypass_list) {
132 base::DictionaryValue* dict = new base::DictionaryValue(); 136 auto dict = base::MakeUnique<base::DictionaryValue>();
133 dict->SetString(kProxyMode, ProxyModeToString(mode)); 137 dict->SetString(kProxyMode, ProxyModeToString(mode));
134 if (!pac_url.empty()) { 138 if (!pac_url.empty()) {
135 dict->SetString(kProxyPacUrl, pac_url); 139 dict->SetString(kProxyPacUrl, pac_url);
136 dict->SetBoolean(kProxyPacMandatory, pac_mandatory); 140 dict->SetBoolean(kProxyPacMandatory, pac_mandatory);
137 } 141 }
138 if (!proxy_server.empty()) 142 if (!proxy_server.empty())
139 dict->SetString(kProxyServer, proxy_server); 143 dict->SetString(kProxyServer, proxy_server);
140 if (!bypass_list.empty()) 144 if (!bypass_list.empty())
141 dict->SetString(kProxyBypassList, bypass_list); 145 dict->SetString(kProxyBypassList, bypass_list);
142 return dict; 146 return dict;
143 } 147 }
144 148
145 // static 149 // static
146 void ProxyConfigDictionary::EncodeAndAppendProxyServer( 150 void ProxyConfigDictionary::EncodeAndAppendProxyServer(
147 const std::string& url_scheme, 151 const std::string& url_scheme,
148 const net::ProxyServer& server, 152 const net::ProxyServer& server,
149 std::string* spec) { 153 std::string* spec) {
150 if (!server.is_valid()) 154 if (!server.is_valid())
151 return; 155 return;
152 156
153 if (!spec->empty()) 157 if (!spec->empty())
154 *spec += ';'; 158 *spec += ';';
155 159
156 if (!url_scheme.empty()) { 160 if (!url_scheme.empty()) {
157 *spec += url_scheme; 161 *spec += url_scheme;
158 *spec += "="; 162 *spec += "=";
159 } 163 }
160 *spec += server.ToURI(); 164 *spec += server.ToURI();
161 } 165 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698