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

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

Issue 6004003: Introduce a separate preference for 'proxy server mode' (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit - alphabetize Created 9 years, 12 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_prefs.h"
7 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
9 #include "chrome/common/chrome_switches.h" 10 #include "chrome/common/chrome_switches.h"
10 #include "chrome/common/extensions/extension.h" 11 #include "chrome/common/extensions/extension.h"
11 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
12 13
13 // Tests auto-detect and PAC proxy settings. 14 // Tests direct connection settings.
15 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyDirectSettings) {
16 CommandLine::ForCurrentProcess()->AppendSwitch(
17 switches::kEnableExperimentalExtensionApis);
18
19 ASSERT_TRUE(RunExtensionTest("proxy/direct")) << message_;
20 const Extension* extension = GetSingleLoadedExtension();
21 ASSERT_TRUE(extension);
22
23 PrefService* pref_service = browser()->profile()->GetPrefs();
24
25 const PrefService::Preference* pref =
26 pref_service->FindPreference(prefs::kProxyMode);
27 ASSERT_TRUE(pref != NULL);
28 ASSERT_TRUE(pref->IsExtensionControlled());
29 int mode = pref_service->GetInteger(prefs::kProxyMode);
30 EXPECT_EQ(ProxyPrefs::MODE_DIRECT, mode);
31
32 // Other proxy prefs should also be set, so they're all controlled from one
33 // place.
34 pref = pref_service->FindPreference(prefs::kProxyPacUrl);
35 ASSERT_TRUE(pref != NULL);
36 EXPECT_TRUE(pref->IsExtensionControlled());
37 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
38
39 // No manual proxy prefs were set.
40 pref = pref_service->FindPreference(prefs::kProxyServer);
41 ASSERT_TRUE(pref != NULL);
42 EXPECT_TRUE(pref->IsExtensionControlled());
43 EXPECT_EQ("", pref_service->GetString(prefs::kProxyServer));
44 }
45
46 // Tests auto-detect settings.
14 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyAutoSettings) { 47 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyAutoSettings) {
15 CommandLine::ForCurrentProcess()->AppendSwitch( 48 CommandLine::ForCurrentProcess()->AppendSwitch(
16 switches::kEnableExperimentalExtensionApis); 49 switches::kEnableExperimentalExtensionApis);
17 50
18 ASSERT_TRUE(RunExtensionTest("proxy/auto")) << message_; 51 ASSERT_TRUE(RunExtensionTest("proxy/auto")) << message_;
19 const Extension* extension = GetSingleLoadedExtension(); 52 const Extension* extension = GetSingleLoadedExtension();
20 ASSERT_TRUE(extension); 53 ASSERT_TRUE(extension);
21 54
22 PrefService* pref_service = browser()->profile()->GetPrefs(); 55 PrefService* pref_service = browser()->profile()->GetPrefs();
23 56
24 const PrefService::Preference* pref = 57 const PrefService::Preference* pref =
25 pref_service->FindPreference(prefs::kProxyAutoDetect); 58 pref_service->FindPreference(prefs::kProxyMode);
26 ASSERT_TRUE(pref != NULL); 59 ASSERT_TRUE(pref != NULL);
27 ASSERT_TRUE(pref->IsExtensionControlled()); 60 ASSERT_TRUE(pref->IsExtensionControlled());
28 bool auto_detect = pref_service->GetBoolean(prefs::kProxyAutoDetect); 61 int mode = pref_service->GetInteger(prefs::kProxyMode);
29 EXPECT_TRUE(auto_detect); 62 EXPECT_EQ(ProxyPrefs::MODE_AUTO_DETECT, mode);
63
64 // Other proxy prefs should also be set, so they're all controlled from one
65 // place.
66 pref = pref_service->FindPreference(prefs::kProxyPacUrl);
67 ASSERT_TRUE(pref != NULL);
68 EXPECT_TRUE(pref->IsExtensionControlled());
69 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
70 }
71
72 // Tests PAC proxy settings.
73 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyPacScript) {
74 CommandLine::ForCurrentProcess()->AppendSwitch(
75 switches::kEnableExperimentalExtensionApis);
76
77 ASSERT_TRUE(RunExtensionTest("proxy/pac")) << message_;
78 const Extension* extension = GetSingleLoadedExtension();
79 ASSERT_TRUE(extension);
80
81 PrefService* pref_service = browser()->profile()->GetPrefs();
82
83 const PrefService::Preference* pref =
84 pref_service->FindPreference(prefs::kProxyMode);
85 ASSERT_TRUE(pref != NULL);
86 ASSERT_TRUE(pref->IsExtensionControlled());
87 int mode = pref_service->GetInteger(prefs::kProxyMode);
88 EXPECT_EQ(ProxyPrefs::MODE_PAC_SCRIPT, mode);
30 89
31 pref = pref_service->FindPreference(prefs::kProxyPacUrl); 90 pref = pref_service->FindPreference(prefs::kProxyPacUrl);
32 ASSERT_TRUE(pref != NULL); 91 ASSERT_TRUE(pref != NULL);
33 ASSERT_TRUE(pref->IsExtensionControlled()); 92 ASSERT_TRUE(pref->IsExtensionControlled());
34 std::string pac_url = pref_service->GetString(prefs::kProxyPacUrl); 93 std::string pac_url = pref_service->GetString(prefs::kProxyPacUrl);
35 EXPECT_EQ("http://wpad/windows.pac", pac_url); 94 EXPECT_EQ("http://wpad/windows.pac", pac_url);
36 95
37 // No manual proxy prefs were set. 96 // No manual proxy prefs were set.
38 pref = pref_service->FindPreference(prefs::kProxyServer); 97 pref = pref_service->FindPreference(prefs::kProxyServer);
39 ASSERT_TRUE(pref != NULL); 98 ASSERT_TRUE(pref != NULL);
40 EXPECT_TRUE(pref->IsDefaultValue()); 99 EXPECT_TRUE(pref->IsExtensionControlled());
100 EXPECT_EQ("", pref_service->GetString(prefs::kProxyServer));
41 } 101 }
42 102
43 // Tests setting a single proxy to cover all schemes. 103 // Tests setting a single proxy to cover all schemes.
44 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualSingle) { 104 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyFixedSingle) {
45 CommandLine::ForCurrentProcess()->AppendSwitch( 105 CommandLine::ForCurrentProcess()->AppendSwitch(
46 switches::kEnableExperimentalExtensionApis); 106 switches::kEnableExperimentalExtensionApis);
47 107
48 ASSERT_TRUE(RunExtensionTest("proxy/single")) << message_; 108 ASSERT_TRUE(RunExtensionTest("proxy/single")) << message_;
49 const Extension* extension = GetSingleLoadedExtension(); 109 const Extension* extension = GetSingleLoadedExtension();
50 ASSERT_TRUE(extension); 110 ASSERT_TRUE(extension);
51 111
52 PrefService* pref_service = browser()->profile()->GetPrefs(); 112 PrefService* pref_service = browser()->profile()->GetPrefs();
53 113
54 // There should be no values superseding the extension-set proxy in this test. 114 // There should be no values superseding the extension-set proxy in this test.
55 const PrefService::Preference* pref = 115 const PrefService::Preference* pref =
56 pref_service->FindPreference(prefs::kProxyServer); 116 pref_service->FindPreference(prefs::kProxyServer);
57 ASSERT_TRUE(pref != NULL); 117 ASSERT_TRUE(pref != NULL);
58 ASSERT_TRUE(pref->IsExtensionControlled()); 118 ASSERT_TRUE(pref->IsExtensionControlled());
59 std::string proxy_server = pref_service->GetString(prefs::kProxyServer); 119 std::string proxy_server = pref_service->GetString(prefs::kProxyServer);
60 EXPECT_EQ("http=http://127.0.0.1:100;" 120 EXPECT_EQ("http=http://127.0.0.1:100;"
61 "https=http://127.0.0.1:100;" 121 "https=http://127.0.0.1:100;"
62 "ftp=http://127.0.0.1:100;" 122 "ftp=http://127.0.0.1:100;"
63 "socks=http://9.9.9.9", proxy_server); 123 "socks=http://9.9.9.9", proxy_server);
64 124
65 // Other proxy prefs should also be set, so they're all controlled from one 125 // Other proxy prefs should also be set, so they're all controlled from one
66 // place. 126 // place.
67 pref = pref_service->FindPreference(prefs::kProxyAutoDetect); 127 pref = pref_service->FindPreference(prefs::kProxyMode);
68 ASSERT_TRUE(pref != NULL); 128 ASSERT_TRUE(pref != NULL);
69 EXPECT_TRUE(pref->IsExtensionControlled()); 129 EXPECT_TRUE(pref->IsExtensionControlled());
70 EXPECT_FALSE(pref_service->GetBoolean(prefs::kProxyAutoDetect)); 130 EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS,
131 pref_service->GetInteger(prefs::kProxyMode));
71 132
72 pref = pref_service->FindPreference(prefs::kProxyPacUrl); 133 pref = pref_service->FindPreference(prefs::kProxyPacUrl);
73 ASSERT_TRUE(pref != NULL); 134 ASSERT_TRUE(pref != NULL);
74 EXPECT_TRUE(pref->IsExtensionControlled()); 135 EXPECT_TRUE(pref->IsExtensionControlled());
75 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl)); 136 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
76 } 137 }
77 138
78 // Tests setting separate proxies for each scheme. 139 // Tests setting to use the system's proxy settings.
79 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyManualIndividual) { 140 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxySystem) {
80 CommandLine::ForCurrentProcess()->AppendSwitch( 141 CommandLine::ForCurrentProcess()->AppendSwitch(
81 switches::kEnableExperimentalExtensionApis); 142 switches::kEnableExperimentalExtensionApis);
82 143
144 ASSERT_TRUE(RunExtensionTest("proxy/system")) << message_;
145 const Extension* extension = GetSingleLoadedExtension();
146 ASSERT_TRUE(extension);
147
148 PrefService* pref_service = browser()->profile()->GetPrefs();
149
150 // There should be no values superseding the extension-set proxy in this test.
151 const PrefService::Preference* pref =
152 pref_service->FindPreference(prefs::kProxyMode);
153 ASSERT_TRUE(pref != NULL);
154 ASSERT_TRUE(pref->IsExtensionControlled());
155 int proxy_server_mode = pref_service->GetInteger(prefs::kProxyMode);
156 EXPECT_EQ(ProxyPrefs::MODE_SYSTEM, proxy_server_mode);
157
158 // Other proxy prefs should also be set, so they're all controlled from one
159 // place.
160 pref = pref_service->FindPreference(prefs::kProxyPacUrl);
161 ASSERT_TRUE(pref != NULL);
162 EXPECT_TRUE(pref->IsExtensionControlled());
163 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
164
165 // No manual proxy prefs were set.
166 pref = pref_service->FindPreference(prefs::kProxyServer);
167 ASSERT_TRUE(pref != NULL);
168 EXPECT_TRUE(pref->IsExtensionControlled());
169 EXPECT_EQ("", pref_service->GetString(prefs::kProxyServer));
170 }
171
172 // Tests setting separate proxies for each scheme.
173 IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ProxyFixedIndividual) {
174 CommandLine::ForCurrentProcess()->AppendSwitch(
175 switches::kEnableExperimentalExtensionApis);
176
83 ASSERT_TRUE(RunExtensionTest("proxy/individual")) << message_; 177 ASSERT_TRUE(RunExtensionTest("proxy/individual")) << message_;
84 const Extension* extension = GetSingleLoadedExtension(); 178 const Extension* extension = GetSingleLoadedExtension();
85 ASSERT_TRUE(extension); 179 ASSERT_TRUE(extension);
86 180
87 PrefService* pref_service = browser()->profile()->GetPrefs(); 181 PrefService* pref_service = browser()->profile()->GetPrefs();
88 182
89 // There should be no values superseding the extension-set proxy in this test. 183 // There should be no values superseding the extension-set proxy in this test.
90 const PrefService::Preference* pref = 184 const PrefService::Preference* pref =
91 pref_service->FindPreference(prefs::kProxyServer); 185 pref_service->FindPreference(prefs::kProxyServer);
92 ASSERT_TRUE(pref != NULL); 186 ASSERT_TRUE(pref != NULL);
93 ASSERT_TRUE(pref->IsExtensionControlled()); 187 ASSERT_TRUE(pref->IsExtensionControlled());
94 188
95 std::string proxy_server = pref_service->GetString(prefs::kProxyServer); 189 std::string proxy_server = pref_service->GetString(prefs::kProxyServer);
96 EXPECT_EQ("http=http://1.1.1.1;" 190 EXPECT_EQ("http=http://1.1.1.1;"
97 "https=socks://2.2.2.2;" 191 "https=socks://2.2.2.2;"
98 "ftp=http://3.3.3.3:9000;" 192 "ftp=http://3.3.3.3:9000;"
99 "socks=socks4://4.4.4.4:9090", proxy_server); 193 "socks=socks4://4.4.4.4:9090", proxy_server);
100 194
101 // Other proxy prefs should also be set, so they're all controlled from one 195 // Other proxy prefs should also be set, so they're all controlled from one
102 // place. 196 // place.
103 pref = pref_service->FindPreference(prefs::kProxyAutoDetect); 197 pref = pref_service->FindPreference(prefs::kProxyMode);
104 ASSERT_TRUE(pref != NULL); 198 ASSERT_TRUE(pref != NULL);
105 EXPECT_TRUE(pref->IsExtensionControlled()); 199 EXPECT_TRUE(pref->IsExtensionControlled());
106 EXPECT_FALSE(pref_service->GetBoolean(prefs::kProxyAutoDetect)); 200 EXPECT_EQ(ProxyPrefs::MODE_FIXED_SERVERS,
201 pref_service->GetInteger(prefs::kProxyMode));
107 202
108 pref = pref_service->FindPreference(prefs::kProxyPacUrl); 203 pref = pref_service->FindPreference(prefs::kProxyPacUrl);
109 ASSERT_TRUE(pref != NULL); 204 ASSERT_TRUE(pref != NULL);
110 EXPECT_TRUE(pref->IsExtensionControlled()); 205 EXPECT_TRUE(pref->IsExtensionControlled());
111 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl)); 206 EXPECT_EQ("", pref_service->GetString(prefs::kProxyPacUrl));
112 } 207 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_proxy_api.cc ('k') | chrome/browser/net/pref_proxy_config_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698