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

Side by Side Diff: chrome/browser/extensions/extension_proxy_apitest.cc

Issue 6469030: Support bypassList in Proxy Settings API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: New version fixing unit test Created 9 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/extensions/extension_apitest.h" 5 #include "chrome/browser/extensions/extension_apitest.h"
6 #include "chrome/browser/prefs/pref_service.h" 6 #include "chrome/browser/prefs/pref_service.h"
7 #include "chrome/browser/prefs/proxy_config_dictionary.h" 7 #include "chrome/browser/prefs/proxy_config_dictionary.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
11 #include "chrome/common/extensions/extension.h" 11 #include "chrome/common/extensions/extension.h"
12 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
13 13
14 namespace { 14 namespace {
15 15
16 const char NO_SERVER[] = ""; 16 const char kNoServer[] = "";
17 const char NO_PAC[] = ""; 17 const char kNoBypass[] = "";
18 const char kNoPac[] = "";
18 19
19 } // namespace 20 } // namespace
20 21
21 class ProxySettingsApiTest : public ExtensionApiTest { 22 class ProxySettingsApiTest : public ExtensionApiTest {
22 protected: 23 protected:
23 void ValidateSettings(int expected_mode, 24 void ValidateSettings(int expected_mode,
24 const std::string& expected_server, 25 const std::string& expected_server,
26 const std::string& bypass,
25 const std::string& expected_pac_url, 27 const std::string& expected_pac_url,
26 PrefService* pref_service) { 28 PrefService* pref_service) {
27 const PrefService::Preference* pref = 29 const PrefService::Preference* pref =
28 pref_service->FindPreference(prefs::kProxy); 30 pref_service->FindPreference(prefs::kProxy);
29 ASSERT_TRUE(pref != NULL); 31 ASSERT_TRUE(pref != NULL);
30 EXPECT_TRUE(pref->IsExtensionControlled()); 32 EXPECT_TRUE(pref->IsExtensionControlled());
31 33
32 ProxyConfigDictionary dict(pref_service->GetDictionary(prefs::kProxy)); 34 ProxyConfigDictionary dict(pref_service->GetDictionary(prefs::kProxy));
33 35
34 ProxyPrefs::ProxyMode mode; 36 ProxyPrefs::ProxyMode mode;
35 ASSERT_TRUE(dict.GetMode(&mode)); 37 ASSERT_TRUE(dict.GetMode(&mode));
36 EXPECT_EQ(expected_mode, mode); 38 EXPECT_EQ(expected_mode, mode);
37 39
38 std::string value; 40 std::string value;
41 if (!bypass.empty()) {
42 ASSERT_TRUE(dict.GetBypassList(&value));
43 EXPECT_EQ(bypass, value);
44 } else {
45 EXPECT_FALSE(dict.GetBypassList(&value));
46 }
47
39 if (!expected_pac_url.empty()) { 48 if (!expected_pac_url.empty()) {
40 ASSERT_TRUE(dict.GetPacUrl(&value)); 49 ASSERT_TRUE(dict.GetPacUrl(&value));
41 EXPECT_EQ(expected_pac_url, value); 50 EXPECT_EQ(expected_pac_url, value);
42 } else { 51 } else {
43 EXPECT_FALSE(dict.GetPacUrl(&value)); 52 EXPECT_FALSE(dict.GetPacUrl(&value));
44 } 53 }
45 54
46 if (!expected_server.empty()) { 55 if (!expected_server.empty()) {
47 ASSERT_TRUE(dict.GetProxyServer(&value)); 56 ASSERT_TRUE(dict.GetProxyServer(&value));
48 EXPECT_EQ(expected_server, value); 57 EXPECT_EQ(expected_server, value);
49 } else { 58 } else {
50 EXPECT_FALSE(dict.GetProxyServer(&value)); 59 EXPECT_FALSE(dict.GetProxyServer(&value));
51 } 60 }
52 } 61 }
53 62
54 void ExpectNoSettings(PrefService* pref_service) { 63 void ExpectNoSettings(PrefService* pref_service) {
55 const PrefService::Preference* pref = 64 const PrefService::Preference* pref =
56 pref_service->FindPreference(prefs::kProxy); 65 pref_service->FindPreference(prefs::kProxy);
57 ASSERT_TRUE(pref != NULL); 66 ASSERT_TRUE(pref != NULL);
58 EXPECT_FALSE(pref->IsExtensionControlled()); 67 EXPECT_FALSE(pref->IsExtensionControlled());
59 } 68 }
60 }; 69 };
61 70
62 namespace {
63
64 const char kNoServer[] = "";
65 const char kNoPac[] = "";
66
67 } // namespace
68
69 // Tests direct connection settings. 71 // Tests direct connection settings.
70 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyDirectSettings) { 72 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyDirectSettings) {
71 CommandLine::ForCurrentProcess()->AppendSwitch( 73 CommandLine::ForCurrentProcess()->AppendSwitch(
72 switches::kEnableExperimentalExtensionApis); 74 switches::kEnableExperimentalExtensionApis);
73 75
74 ASSERT_TRUE(RunExtensionTest("proxy/direct")) << message_; 76 ASSERT_TRUE(RunExtensionTest("proxy/direct")) << message_;
75 const Extension* extension = GetSingleLoadedExtension(); 77 const Extension* extension = GetSingleLoadedExtension();
76 ASSERT_TRUE(extension); 78 ASSERT_TRUE(extension);
77 79
78 PrefService* pref_service = browser()->profile()->GetPrefs(); 80 PrefService* pref_service = browser()->profile()->GetPrefs();
79 ValidateSettings(ProxyPrefs::MODE_DIRECT, kNoServer, kNoPac, pref_service); 81 ValidateSettings(ProxyPrefs::MODE_DIRECT, kNoServer, kNoBypass, kNoPac,
82 pref_service);
80 } 83 }
81 84
82 // Tests auto-detect settings. 85 // Tests auto-detect settings.
83 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyAutoSettings) { 86 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyAutoSettings) {
84 CommandLine::ForCurrentProcess()->AppendSwitch( 87 CommandLine::ForCurrentProcess()->AppendSwitch(
85 switches::kEnableExperimentalExtensionApis); 88 switches::kEnableExperimentalExtensionApis);
86 89
87 ASSERT_TRUE(RunExtensionTest("proxy/auto")) << message_; 90 ASSERT_TRUE(RunExtensionTest("proxy/auto")) << message_;
88 const Extension* extension = GetSingleLoadedExtension(); 91 const Extension* extension = GetSingleLoadedExtension();
89 ASSERT_TRUE(extension); 92 ASSERT_TRUE(extension);
90 93
91 PrefService* pref_service = browser()->profile()->GetPrefs(); 94 PrefService* pref_service = browser()->profile()->GetPrefs();
92 ValidateSettings(ProxyPrefs::MODE_AUTO_DETECT, kNoServer, kNoPac, 95 ValidateSettings(ProxyPrefs::MODE_AUTO_DETECT, kNoServer, kNoBypass, kNoPac,
93 pref_service); 96 pref_service);
94 } 97 }
95 98
96 // Tests PAC proxy settings. 99 // Tests PAC proxy settings.
97 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyPacScript) { 100 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyPacScript) {
98 CommandLine::ForCurrentProcess()->AppendSwitch( 101 CommandLine::ForCurrentProcess()->AppendSwitch(
99 switches::kEnableExperimentalExtensionApis); 102 switches::kEnableExperimentalExtensionApis);
100 103
101 ASSERT_TRUE(RunExtensionTest("proxy/pac")) << message_; 104 ASSERT_TRUE(RunExtensionTest("proxy/pac")) << message_;
102 const Extension* extension = GetSingleLoadedExtension(); 105 const Extension* extension = GetSingleLoadedExtension();
103 ASSERT_TRUE(extension); 106 ASSERT_TRUE(extension);
104 107
105 PrefService* pref_service = browser()->profile()->GetPrefs(); 108 PrefService* pref_service = browser()->profile()->GetPrefs();
106 ValidateSettings(ProxyPrefs::MODE_PAC_SCRIPT, kNoServer, 109 ValidateSettings(ProxyPrefs::MODE_PAC_SCRIPT, kNoServer, kNoBypass,
107 "http://wpad/windows.pac", pref_service); 110 "http://wpad/windows.pac", pref_service);
108 } 111 }
109 112
110 // Tests setting a single proxy to cover all schemes. 113 // Tests setting a single proxy to cover all schemes.
111 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedSingle) { 114 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedSingle) {
112 CommandLine::ForCurrentProcess()->AppendSwitch( 115 CommandLine::ForCurrentProcess()->AppendSwitch(
113 switches::kEnableExperimentalExtensionApis); 116 switches::kEnableExperimentalExtensionApis);
114 117
115 ASSERT_TRUE(RunExtensionTest("proxy/single")) << message_; 118 ASSERT_TRUE(RunExtensionTest("proxy/single")) << message_;
116 const Extension* extension = GetSingleLoadedExtension(); 119 const Extension* extension = GetSingleLoadedExtension();
117 ASSERT_TRUE(extension); 120 ASSERT_TRUE(extension);
118 121
119 PrefService* pref_service = browser()->profile()->GetPrefs(); 122 PrefService* pref_service = browser()->profile()->GetPrefs();
120 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS, 123 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
121 "127.0.0.1:100", 124 "127.0.0.1:100",
125 kNoBypass,
122 kNoPac, 126 kNoPac,
123 pref_service); 127 pref_service);
124 } 128 }
125 129
126 // Tests setting to use the system's proxy settings. 130 // Tests setting to use the system's proxy settings.
127 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxySystem) { 131 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxySystem) {
128 CommandLine::ForCurrentProcess()->AppendSwitch( 132 CommandLine::ForCurrentProcess()->AppendSwitch(
129 switches::kEnableExperimentalExtensionApis); 133 switches::kEnableExperimentalExtensionApis);
130 134
131 ASSERT_TRUE(RunExtensionTest("proxy/system")) << message_; 135 ASSERT_TRUE(RunExtensionTest("proxy/system")) << message_;
132 const Extension* extension = GetSingleLoadedExtension(); 136 const Extension* extension = GetSingleLoadedExtension();
133 ASSERT_TRUE(extension); 137 ASSERT_TRUE(extension);
134 138
135 PrefService* pref_service = browser()->profile()->GetPrefs(); 139 PrefService* pref_service = browser()->profile()->GetPrefs();
136 ValidateSettings(ProxyPrefs::MODE_SYSTEM, kNoServer, kNoPac, pref_service); 140 ValidateSettings(ProxyPrefs::MODE_SYSTEM, kNoServer, kNoBypass, kNoPac,
141 pref_service);
137 } 142 }
138 143
139 // Tests setting separate proxies for each scheme. 144 // Tests setting separate proxies for each scheme.
140 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividual) { 145 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividual) {
141 CommandLine::ForCurrentProcess()->AppendSwitch( 146 CommandLine::ForCurrentProcess()->AppendSwitch(
142 switches::kEnableExperimentalExtensionApis); 147 switches::kEnableExperimentalExtensionApis);
143 148
144 ASSERT_TRUE(RunExtensionTest("proxy/individual")) << message_; 149 ASSERT_TRUE(RunExtensionTest("proxy/individual")) << message_;
145 const Extension* extension = GetSingleLoadedExtension(); 150 const Extension* extension = GetSingleLoadedExtension();
146 ASSERT_TRUE(extension); 151 ASSERT_TRUE(extension);
147 152
148 PrefService* pref_service = browser()->profile()->GetPrefs(); 153 PrefService* pref_service = browser()->profile()->GetPrefs();
149 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS, 154 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
150 "http=1.1.1.1:80;" // http:// is pruned. 155 "http=1.1.1.1:80;" // http:// is pruned.
151 "https=2.2.2.2:80;" // http:// is pruned. 156 "https=2.2.2.2:80;" // http:// is pruned.
152 "ftp=3.3.3.3:9000;" // http:// is pruned. 157 "ftp=3.3.3.3:9000;" // http:// is pruned.
153 "socks=socks4://4.4.4.4:9090", 158 "socks=socks4://4.4.4.4:9090",
159 kNoBypass,
154 kNoPac, 160 kNoPac,
155 pref_service); 161 pref_service);
156 162
157 // Now check the incognito preferences. 163 // Now check the incognito preferences.
158 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); 164 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
159 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS, 165 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
160 "http=1.1.1.1:80;" 166 "http=1.1.1.1:80;"
161 "https=2.2.2.2:80;" 167 "https=2.2.2.2:80;"
162 "ftp=3.3.3.3:9000;" 168 "ftp=3.3.3.3:9000;"
163 "socks=socks4://4.4.4.4:9090", 169 "socks=socks4://4.4.4.4:9090",
170 kNoBypass,
164 kNoPac, 171 kNoPac,
165 pref_service); 172 pref_service);
166 } 173 }
167 174
168 // Tests setting values only for incognito mode 175 // Tests setting values only for incognito mode
169 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, 176 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
170 ProxyFixedIndividualIncognitoOnly) { 177 ProxyFixedIndividualIncognitoOnly) {
171 CommandLine::ForCurrentProcess()->AppendSwitch( 178 CommandLine::ForCurrentProcess()->AppendSwitch(
172 switches::kEnableExperimentalExtensionApis); 179 switches::kEnableExperimentalExtensionApis);
173 180
174 ASSERT_TRUE(RunExtensionTest("proxy/individual_incognito_only")) << message_; 181 ASSERT_TRUE(RunExtensionTest("proxy/individual_incognito_only")) << message_;
175 const Extension* extension = GetSingleLoadedExtension(); 182 const Extension* extension = GetSingleLoadedExtension();
176 ASSERT_TRUE(extension); 183 ASSERT_TRUE(extension);
177 184
178 PrefService* pref_service = browser()->profile()->GetPrefs(); 185 PrefService* pref_service = browser()->profile()->GetPrefs();
179 ExpectNoSettings(pref_service); 186 ExpectNoSettings(pref_service);
180 187
181 // Now check the incognito preferences. 188 // Now check the incognito preferences.
182 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); 189 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
183 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS, 190 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
184 "http=1.1.1.1:80;" 191 "http=1.1.1.1:80;"
185 "https=socks5://2.2.2.2:1080;" // socks5 equals socks. 192 "https=socks5://2.2.2.2:1080;" // socks5 equals socks.
186 "ftp=3.3.3.3:9000;" 193 "ftp=3.3.3.3:9000;"
187 "socks=socks4://4.4.4.4:9090", 194 "socks=socks4://4.4.4.4:9090",
195 kNoBypass,
188 kNoPac, 196 kNoPac,
189 pref_service); 197 pref_service);
190 } 198 }
191 199
192 // Tests setting values also for incognito mode 200 // Tests setting values also for incognito mode
193 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, 201 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
194 ProxyFixedIndividualIncognitoAlso) { 202 ProxyFixedIndividualIncognitoAlso) {
195 CommandLine::ForCurrentProcess()->AppendSwitch( 203 CommandLine::ForCurrentProcess()->AppendSwitch(
196 switches::kEnableExperimentalExtensionApis); 204 switches::kEnableExperimentalExtensionApis);
197 205
198 ASSERT_TRUE(RunExtensionTest("proxy/individual_incognito_also")) << message_; 206 ASSERT_TRUE(RunExtensionTest("proxy/individual_incognito_also")) << message_;
199 const Extension* extension = GetSingleLoadedExtension(); 207 const Extension* extension = GetSingleLoadedExtension();
200 ASSERT_TRUE(extension); 208 ASSERT_TRUE(extension);
201 209
202 PrefService* pref_service = browser()->profile()->GetPrefs(); 210 PrefService* pref_service = browser()->profile()->GetPrefs();
203 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS, 211 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
204 "http=1.1.1.1:80;" 212 "http=1.1.1.1:80;"
205 "https=socks5://2.2.2.2:1080;" 213 "https=socks5://2.2.2.2:1080;"
206 "ftp=3.3.3.3:9000;" 214 "ftp=3.3.3.3:9000;"
207 "socks=socks4://4.4.4.4:9090", 215 "socks=socks4://4.4.4.4:9090",
216 kNoBypass,
208 kNoPac, 217 kNoPac,
209 pref_service); 218 pref_service);
210 219
211 // Now check the incognito preferences. 220 // Now check the incognito preferences.
212 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs(); 221 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
213 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS, 222 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
214 "http=5.5.5.5:80;" 223 "http=5.5.5.5:80;"
215 "https=socks5://6.6.6.6:1080;" 224 "https=socks5://6.6.6.6:1080;"
216 "ftp=7.7.7.7:9000;" 225 "ftp=7.7.7.7:9000;"
217 "socks=socks4://8.8.8.8:9090", 226 "socks=socks4://8.8.8.8:9090",
227 kNoBypass,
218 kNoPac, 228 kNoPac,
219 pref_service); 229 pref_service);
220 } 230 }
221 231
222 // Tests setting and unsetting values 232 // Tests setting and unsetting values
223 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividualRemove) { 233 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividualRemove) {
224 CommandLine::ForCurrentProcess()->AppendSwitch( 234 CommandLine::ForCurrentProcess()->AppendSwitch(
225 switches::kEnableExperimentalExtensionApis); 235 switches::kEnableExperimentalExtensionApis);
226 236
227 ASSERT_TRUE(RunExtensionTest("proxy/individual_remove")) << message_; 237 ASSERT_TRUE(RunExtensionTest("proxy/individual_remove")) << message_;
228 const Extension* extension = GetSingleLoadedExtension(); 238 const Extension* extension = GetSingleLoadedExtension();
229 ASSERT_TRUE(extension); 239 ASSERT_TRUE(extension);
230 240
231 PrefService* pref_service = browser()->profile()->GetPrefs(); 241 PrefService* pref_service = browser()->profile()->GetPrefs();
232 ExpectNoSettings(pref_service); 242 ExpectNoSettings(pref_service);
233 } 243 }
244
245 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
246 ProxyBypass) {
247 CommandLine::ForCurrentProcess()->AppendSwitch(
248 switches::kEnableExperimentalExtensionApis);
249
250 ASSERT_TRUE(RunExtensionTest("proxy/bypass")) << message_;
251 const Extension* extension = GetSingleLoadedExtension();
252 ASSERT_TRUE(extension);
253
254 PrefService* pref_service = browser()->profile()->GetPrefs();
255 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
256 "http=1.1.1.1:80",
257 "localhost,::1,foo.bar",
258 kNoPac,
259 pref_service);
260
261 // Now check the incognito preferences.
262 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
263 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
264 "http=1.1.1.1:80",
265 "localhost,::1,foo.bar",
266 kNoPac,
267 pref_service);
268 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698