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

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

Issue 9690006: Move Proxy Settings API from chrome/browser/extensions to chrome/browser/eextensions/api/proxy (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/extension_apitest.h"
6 #include "chrome/browser/prefs/pref_service.h"
7 #include "chrome/browser/prefs/proxy_config_dictionary.h"
8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/common/chrome_switches.h"
11 #include "chrome/common/extensions/extension.h"
12 #include "chrome/common/pref_names.h"
13
14 namespace {
15
16 const char kNoServer[] = "";
17 const char kNoBypass[] = "";
18 const char kNoPac[] = "";
19
20 } // namespace
21
22 class ProxySettingsApiTest : public ExtensionApiTest {
23 protected:
24 void ValidateSettings(int expected_mode,
25 const std::string& expected_server,
26 const std::string& bypass,
27 const std::string& expected_pac_url,
28 PrefService* pref_service) {
29 const PrefService::Preference* pref =
30 pref_service->FindPreference(prefs::kProxy);
31 ASSERT_TRUE(pref != NULL);
32 EXPECT_TRUE(pref->IsExtensionControlled());
33
34 ProxyConfigDictionary dict(pref_service->GetDictionary(prefs::kProxy));
35
36 ProxyPrefs::ProxyMode mode;
37 ASSERT_TRUE(dict.GetMode(&mode));
38 EXPECT_EQ(expected_mode, mode);
39
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
48 if (!expected_pac_url.empty()) {
49 ASSERT_TRUE(dict.GetPacUrl(&value));
50 EXPECT_EQ(expected_pac_url, value);
51 } else {
52 EXPECT_FALSE(dict.GetPacUrl(&value));
53 }
54
55 if (!expected_server.empty()) {
56 ASSERT_TRUE(dict.GetProxyServer(&value));
57 EXPECT_EQ(expected_server, value);
58 } else {
59 EXPECT_FALSE(dict.GetProxyServer(&value));
60 }
61 }
62
63 void ExpectNoSettings(PrefService* pref_service) {
64 const PrefService::Preference* pref =
65 pref_service->FindPreference(prefs::kProxy);
66 ASSERT_TRUE(pref != NULL);
67 EXPECT_FALSE(pref->IsExtensionControlled());
68 }
69 };
70
71 // Tests direct connection settings.
72 // Disabled due to http://crbug.com/88937.
73 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, DISABLED_ProxyDirectSettings) {
74 ASSERT_TRUE(RunExtensionTestIncognito("proxy/direct")) << message_;
75 const Extension* extension = GetSingleLoadedExtension();
76 ASSERT_TRUE(extension);
77
78 PrefService* pref_service = browser()->profile()->GetPrefs();
79 ValidateSettings(ProxyPrefs::MODE_DIRECT, kNoServer, kNoBypass, kNoPac,
80 pref_service);
81 }
82
83 // Tests auto-detect settings.
84 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyAutoSettings) {
85 ASSERT_TRUE(RunExtensionTestIncognito("proxy/auto")) << message_;
86 const Extension* extension = GetSingleLoadedExtension();
87 ASSERT_TRUE(extension);
88
89 PrefService* pref_service = browser()->profile()->GetPrefs();
90 ValidateSettings(ProxyPrefs::MODE_AUTO_DETECT, kNoServer, kNoBypass, kNoPac,
91 pref_service);
92 }
93
94 // Tests PAC proxy settings.
95 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyPacScript) {
96 ASSERT_TRUE(RunExtensionTest("proxy/pac")) << message_;
97 const Extension* extension = GetSingleLoadedExtension();
98 ASSERT_TRUE(extension);
99
100 PrefService* pref_service = browser()->profile()->GetPrefs();
101 ValidateSettings(ProxyPrefs::MODE_PAC_SCRIPT, kNoServer, kNoBypass,
102 "http://wpad/windows.pac", pref_service);
103 }
104
105 // Tests PAC proxy settings.
106 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyPacData) {
107 ASSERT_TRUE(RunExtensionTest("proxy/pacdata")) << message_;
108 const Extension* extension = GetSingleLoadedExtension();
109 ASSERT_TRUE(extension);
110 const char url[] =
111 "data:application/x-ns-proxy-autoconfig;base64,ZnVuY3Rpb24gRmluZFByb3h5R"
112 "m9yVVJMKHVybCwgaG9zdCkgewogIGlmIChob3N0ID09ICdmb29iYXIuY29tJykKICAgIHJl"
113 "dHVybiAnUFJPWFkgYmxhY2tob2xlOjgwJzsKICByZXR1cm4gJ0RJUkVDVCc7Cn0=";
114 PrefService* pref_service = browser()->profile()->GetPrefs();
115 ValidateSettings(ProxyPrefs::MODE_PAC_SCRIPT, kNoServer, kNoBypass,
116 url, pref_service);
117 }
118
119 // Tests setting a single proxy to cover all schemes.
120 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedSingle) {
121 ASSERT_TRUE(RunExtensionTest("proxy/single")) << message_;
122 const Extension* extension = GetSingleLoadedExtension();
123 ASSERT_TRUE(extension);
124
125 PrefService* pref_service = browser()->profile()->GetPrefs();
126 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
127 "127.0.0.1:100",
128 kNoBypass,
129 kNoPac,
130 pref_service);
131 }
132
133 // Tests setting to use the system's proxy settings.
134 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxySystem) {
135 ASSERT_TRUE(RunExtensionTest("proxy/system")) << message_;
136 const Extension* extension = GetSingleLoadedExtension();
137 ASSERT_TRUE(extension);
138
139 PrefService* pref_service = browser()->profile()->GetPrefs();
140 ValidateSettings(ProxyPrefs::MODE_SYSTEM, kNoServer, kNoBypass, kNoPac,
141 pref_service);
142 }
143
144 // Tests setting separate proxies for each scheme.
145 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividual) {
146 ASSERT_TRUE(RunExtensionTestIncognito("proxy/individual")) << message_;
147 const Extension* extension = GetSingleLoadedExtension();
148 ASSERT_TRUE(extension);
149
150 PrefService* pref_service = browser()->profile()->GetPrefs();
151 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
152 "http=1.1.1.1:80;" // http:// is pruned.
153 "https=2.2.2.2:80;" // http:// is pruned.
154 "ftp=3.3.3.3:9000;" // http:// is pruned.
155 "socks=socks4://4.4.4.4:9090",
156 kNoBypass,
157 kNoPac,
158 pref_service);
159
160 // Now check the incognito preferences.
161 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
162 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
163 "http=1.1.1.1:80;"
164 "https=2.2.2.2:80;"
165 "ftp=3.3.3.3:9000;"
166 "socks=socks4://4.4.4.4:9090",
167 kNoBypass,
168 kNoPac,
169 pref_service);
170 }
171
172 // Tests setting values only for incognito mode
173 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
174 ProxyFixedIndividualIncognitoOnly) {
175 ASSERT_TRUE(RunExtensionTestIncognito("proxy/individual_incognito_only")) <<
176 message_;
177 const Extension* extension = GetSingleLoadedExtension();
178 ASSERT_TRUE(extension);
179
180 PrefService* pref_service = browser()->profile()->GetPrefs();
181 ExpectNoSettings(pref_service);
182
183 // Now check the incognito preferences.
184 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
185 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
186 "http=1.1.1.1:80;"
187 "https=socks5://2.2.2.2:1080;"
188 "ftp=3.3.3.3:9000;"
189 "socks=socks4://4.4.4.4:9090",
190 kNoBypass,
191 kNoPac,
192 pref_service);
193 }
194
195 // Tests setting values also for incognito mode
196 // Test disabled due to http://crbug.com/88972.
197 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
198 DISABLED_ProxyFixedIndividualIncognitoAlso) {
199 ASSERT_TRUE(RunExtensionTestIncognito("proxy/individual_incognito_also")) <<
200 message_;
201 const Extension* extension = GetSingleLoadedExtension();
202 ASSERT_TRUE(extension);
203
204 PrefService* pref_service = browser()->profile()->GetPrefs();
205 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
206 "http=1.1.1.1:80;"
207 "https=socks5://2.2.2.2:1080;"
208 "ftp=3.3.3.3:9000;"
209 "socks=socks4://4.4.4.4:9090",
210 kNoBypass,
211 kNoPac,
212 pref_service);
213
214 // Now check the incognito preferences.
215 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
216 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
217 "http=5.5.5.5:80;"
218 "https=socks5://6.6.6.6:1080;"
219 "ftp=7.7.7.7:9000;"
220 "socks=socks4://8.8.8.8:9090",
221 kNoBypass,
222 kNoPac,
223 pref_service);
224 }
225
226 // Tests setting and unsetting values
227 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyFixedIndividualRemove) {
228 ASSERT_TRUE(RunExtensionTest("proxy/individual_remove")) << message_;
229 const Extension* extension = GetSingleLoadedExtension();
230 ASSERT_TRUE(extension);
231
232 PrefService* pref_service = browser()->profile()->GetPrefs();
233 ExpectNoSettings(pref_service);
234 }
235
236 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest,
237 ProxyBypass) {
238 ASSERT_TRUE(RunExtensionTestIncognito("proxy/bypass")) << message_;
239 const Extension* extension = GetSingleLoadedExtension();
240 ASSERT_TRUE(extension);
241
242 PrefService* pref_service = browser()->profile()->GetPrefs();
243 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
244 "http=1.1.1.1:80",
245 "localhost,::1,foo.bar,<local>",
246 kNoPac,
247 pref_service);
248
249 // Now check the incognito preferences.
250 pref_service = browser()->profile()->GetOffTheRecordProfile()->GetPrefs();
251 ValidateSettings(ProxyPrefs::MODE_FIXED_SERVERS,
252 "http=1.1.1.1:80",
253 "localhost,::1,foo.bar,<local>",
254 kNoPac,
255 pref_service);
256 }
257
258 // This test sets proxy to an inavalid host "does.not.exist" and then fetches
259 // a page from localhost, expecting an error since host is invalid.
260 // On ChromeOS, localhost is by default bypassed, so the page from localhost
261 // will be fetched successfully, resulting in no error. Hence this test
262 // shouldn't run on ChromeOS.
263 #if defined(OS_CHROMEOS)
264 #define MAYBE_ProxyEventsInvalidProxy DISABLED_ProxyEventsInvalidProxy
265 #else
266 #define MAYBE_ProxyEventsInvalidProxy ProxyEventsInvalidProxy
267 #endif // defined(OS_CHROMEOS)
268
269 // Tests error events: invalid proxy
270 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, MAYBE_ProxyEventsInvalidProxy) {
271 ASSERT_TRUE(StartTestServer());
272 ASSERT_TRUE(
273 RunExtensionSubtest("proxy/events", "invalid_proxy.html")) << message_;
274 }
275
276 // Tests error events: PAC script parse error.
277 IN_PROC_BROWSER_TEST_F(ProxySettingsApiTest, ProxyEventsParseError) {
278 ASSERT_TRUE(
279 RunExtensionSubtest("proxy/events", "parse_error.html")) << message_;
280 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_proxy_api_helpers_unittest.cc ('k') | chrome/browser/net/chrome_network_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698