| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/prefs/pref_registry_simple.h" | 8 #include "base/prefs/pref_registry_simple.h" |
| 9 #include "base/prefs/testing_pref_service.h" | 9 #include "base/prefs/testing_pref_service.h" |
| 10 #include "base/test/histogram_tester.h" | 10 #include "base/test/histogram_tester.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 | 58 |
| 59 TEST_F(DataReductionProxyChromeSettingsTest, MigrateBadlyFormedProxyPref) { | 59 TEST_F(DataReductionProxyChromeSettingsTest, MigrateBadlyFormedProxyPref) { |
| 60 const struct { | 60 const struct { |
| 61 // NULL indicates that mode is unset. | 61 // NULL indicates that mode is unset. |
| 62 const char* proxy_mode_string; | 62 const char* proxy_mode_string; |
| 63 // NULL indicates that server is unset. | 63 // NULL indicates that server is unset. |
| 64 const char* proxy_server_string; | 64 const char* proxy_server_string; |
| 65 } test_cases[] = { | 65 } test_cases[] = { |
| 66 // The pref should not be cleared if mode is unset. | 66 // The pref should not be cleared if mode is unset. |
| 67 {nullptr, "http=compress.googlezip.net"}, | 67 {nullptr, "http=compress.googlezip.net"}, |
| 68 // The pref should not be cleared for modes other than "fixed_servers". | 68 // The pref should not be cleared for modes other than "fixed_servers" and |
| 69 {"pac_script", "http=compress.googlezip.net"}, | 69 // "pac_script". |
| 70 {"auto_detect", "http=compress.googlezip.net"}, |
| 70 // The pref should not be cleared when the server field is unset. | 71 // The pref should not be cleared when the server field is unset. |
| 71 {"fixed_servers", nullptr}, | 72 {"fixed_servers", nullptr}, |
| 72 }; | 73 }; |
| 73 | 74 |
| 74 for (const auto& test : test_cases) { | 75 for (const auto& test : test_cases) { |
| 75 base::HistogramTester histogram_tester; | 76 base::HistogramTester histogram_tester; |
| 76 dict_.reset(new base::DictionaryValue()); | 77 dict_.reset(new base::DictionaryValue()); |
| 77 if (test.proxy_mode_string) | 78 if (test.proxy_mode_string) |
| 78 dict_->SetString("mode", test.proxy_mode_string); | 79 dict_->SetString("mode", test.proxy_mode_string); |
| 79 if (test.proxy_server_string) | 80 if (test.proxy_server_string) |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 drp_chrome_settings_->MigrateDataReductionProxyOffProxyPrefs( | 173 drp_chrome_settings_->MigrateDataReductionProxyOffProxyPrefs( |
| 173 test_context_->pref_service()); | 174 test_context_->pref_service()); |
| 174 | 175 |
| 175 EXPECT_EQ(NULL, test_context_->pref_service()->GetUserPref(prefs::kProxy)); | 176 EXPECT_EQ(NULL, test_context_->pref_service()->GetUserPref(prefs::kProxy)); |
| 176 histogram_tester.ExpectUniqueSample( | 177 histogram_tester.ExpectUniqueSample( |
| 177 "DataReductionProxy.ProxyPrefMigrationResult", | 178 "DataReductionProxy.ProxyPrefMigrationResult", |
| 178 DataReductionProxyChromeSettings::PROXY_PREF_CLEARED_GOOGLEZIP, 1); | 179 DataReductionProxyChromeSettings::PROXY_PREF_CLEARED_GOOGLEZIP, 1); |
| 179 } | 180 } |
| 180 } | 181 } |
| 181 | 182 |
| 183 TEST_F(DataReductionProxyChromeSettingsTest, |
| 184 MigratePacGooglezipDataReductionProxy) { |
| 185 const struct { |
| 186 const char* pac_url; |
| 187 bool expect_pref_cleared; |
| 188 } test_cases[] = { |
| 189 // PAC with bypass rules that returns 'HTTPS proxy.googlezip.net:443; |
| 190 // PROXY compress.googlezip.net:80; DIRECT'. |
| 191 {"data:application/" |
| 192 "x-ns-proxy-autoconfig;base64," |
| 193 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgeyAgaWYgKChzaEV4cE1hdGN" |
| 194 "oKHVybCwgJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9wb2xpY2llcy9wcml2YWN5KicpKSkgey" |
| 195 "AgICByZXR1cm4gJ0RJUkVDVCc7ICB9ICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgNSkgPT0gJ" |
| 196 "2h0dHA6JykgeyAgICByZXR1cm4gJ0hUVFBTIHByb3h5Lmdvb2dsZXppcC5uZXQ6NDQzOyBQ" |
| 197 "Uk9YWSBjb21wcmVzcy5nb29nbGV6aXAubmV0OjgwOyBESVJFQ1QnOyAgfSAgcmV0dXJuICd" |
| 198 "ESVJFQ1QnO30=", |
| 199 true}, |
| 200 // PAC with bypass rules that returns 'PROXY compress.googlezip.net:80; |
| 201 // DIRECT'. |
| 202 {"data:application/" |
| 203 "x-ns-proxy-autoconfig;base64," |
| 204 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgeyAgaWYgKChzaEV4cE1hdGN" |
| 205 "oKHVybCwgJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9wb2xpY2llcy9wcml2YWN5KicpKSkgey" |
| 206 "AgICByZXR1cm4gJ0RJUkVDVCc7ICB9ICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgNSkgPT0gJ" |
| 207 "2h0dHA6JykgeyAgICByZXR1cm4gJ1BST1hZIGNvbXByZXNzLmdvb2dsZXppcC5uZXQ6ODA7" |
| 208 "IERJUkVDVCc7ICB9ICByZXR1cm4gJ0RJUkVDVCc7fQ==", |
| 209 true}, |
| 210 // PAC with bypass rules that returns 'PROXY proxy-dev.googlezip.net:80; |
| 211 // DIRECT'. |
| 212 {"data:application/" |
| 213 "x-ns-proxy-autoconfig;base64," |
| 214 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgeyAgaWYgKChzaEV4cE1hdGN" |
| 215 "oKHVybCwgJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9wb2xpY2llcy9wcml2YWN5KicpKSkgey" |
| 216 "AgICByZXR1cm4gJ0RJUkVDVCc7ICB9ICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgNSkgPT0gJ" |
| 217 "2h0dHA6JykgeyAgICByZXR1cm4gJ1BST1hZIHByb3h5LWRldi5nb29nbGV6aXAubmV0Ojgw" |
| 218 "OyBESVJFQ1QnOyAgfSAgcmV0dXJuICdESVJFQ1QnO30=", |
| 219 true}, |
| 220 // Simple PAC that returns 'PROXY compress.googlezip.net:80'. |
| 221 {"data:application/" |
| 222 "x-ns-proxy-autoconfig;base64," |
| 223 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgY29" |
| 224 "tcHJlc3MuZ29vZ2xlemlwLm5ldDo4MCc7fQo=", |
| 225 true}, |
| 226 // Simple PAC that returns 'PROXY compress.googlezip.net'. Note that since |
| 227 // the port is not specified, the pref will not be cleared. |
| 228 {"data:application/" |
| 229 "x-ns-proxy-autoconfig;base64," |
| 230 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgY29" |
| 231 "tcHJlc3MuZ29vZ2xlemlwLm5ldCc7fQ==", |
| 232 false}, |
| 233 // Simple PAC that returns 'PROXY mycustomdrp.net:80'. |
| 234 {"data:application/" |
| 235 "x-ns-proxy-autoconfig;base64," |
| 236 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgb3J" |
| 237 "pZ2luLm5ldDo4MCc7fQo=", |
| 238 false}, |
| 239 // Simple PAC that returns 'PROXY myprefixgooglezip.net:80'. |
| 240 {"data:application/" |
| 241 "x-ns-proxy-autoconfig;base64," |
| 242 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgbXl" |
| 243 "wcmVmaXhnb29nbGV6aXAubmV0OjgwJzt9Cg==", |
| 244 false}, |
| 245 // Simple PAC that returns 'PROXY compress.googlezip.net.mydomain.com:80'. |
| 246 {"data:application/" |
| 247 "x-ns-proxy-autoconfig;base64," |
| 248 "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgY29" |
| 249 "tcHJlc3MuZ29vZ2xlemlwLm5ldC5teWRvbWFpbi5jb206ODAnO30K", |
| 250 false}, |
| 251 // PAC URL that doesn't embed a script. |
| 252 {"http://compress.googlezip.net/pac", false}, |
| 253 }; |
| 254 |
| 255 for (const auto& test : test_cases) { |
| 256 base::HistogramTester histogram_tester; |
| 257 dict_.reset(new base::DictionaryValue()); |
| 258 dict_->SetString("mode", "pac_script"); |
| 259 dict_->SetString("pac_url", test.pac_url); |
| 260 test_context_->pref_service()->Set(prefs::kProxy, *dict_.get()); |
| 261 EXPECT_CALL(*config_, ContainsDataReductionProxy(_)).Times(0); |
| 262 |
| 263 drp_chrome_settings_->MigrateDataReductionProxyOffProxyPrefs( |
| 264 test_context_->pref_service()); |
| 265 |
| 266 if (test.expect_pref_cleared) { |
| 267 EXPECT_EQ(NULL, |
| 268 test_context_->pref_service()->GetUserPref(prefs::kProxy)); |
| 269 histogram_tester.ExpectUniqueSample( |
| 270 "DataReductionProxy.ProxyPrefMigrationResult", |
| 271 DataReductionProxyChromeSettings::PROXY_PREF_CLEARED_PAC_GOOGLEZIP, |
| 272 1); |
| 273 } else { |
| 274 const base::DictionaryValue* value; |
| 275 EXPECT_TRUE(test_context_->pref_service() |
| 276 ->GetUserPref(prefs::kProxy) |
| 277 ->GetAsDictionary(&value)); |
| 278 std::string mode; |
| 279 EXPECT_TRUE(value->GetString("mode", &mode)); |
| 280 EXPECT_EQ("pac_script", mode); |
| 281 std::string pac_url; |
| 282 EXPECT_TRUE(value->GetString("pac_url", &pac_url)); |
| 283 EXPECT_EQ(test.pac_url, pac_url); |
| 284 |
| 285 histogram_tester.ExpectUniqueSample( |
| 286 "DataReductionProxy.ProxyPrefMigrationResult", |
| 287 DataReductionProxyChromeSettings::PROXY_PREF_NOT_CLEARED, 1); |
| 288 } |
| 289 } |
| 290 } |
| 291 |
| 182 TEST_F(DataReductionProxyChromeSettingsTest, MigrateIgnoreOtherProxy) { | 292 TEST_F(DataReductionProxyChromeSettingsTest, MigrateIgnoreOtherProxy) { |
| 183 const std::string kTestServers[] = { | 293 const std::string kTestServers[] = { |
| 184 "http=https://youtube.com", | 294 "http=https://youtube.com", |
| 185 "http=http://googlezip.net", | 295 "http=http://googlezip.net", |
| 186 "http=http://thisismyproxynotgooglezip.net", | 296 "http=http://thisismyproxynotgooglezip.net", |
| 187 "https=http://arbitraryprefixgooglezip.net"}; | 297 "https=http://arbitraryprefixgooglezip.net"}; |
| 188 | 298 |
| 189 for (const std::string& test_server : kTestServers) { | 299 for (const std::string& test_server : kTestServers) { |
| 190 base::HistogramTester histogram_tester; | 300 base::HistogramTester histogram_tester; |
| 191 dict_.reset(new base::DictionaryValue()); | 301 dict_.reset(new base::DictionaryValue()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 207 EXPECT_EQ("fixed_servers", mode); | 317 EXPECT_EQ("fixed_servers", mode); |
| 208 std::string server; | 318 std::string server; |
| 209 EXPECT_TRUE(value->GetString("server", &server)); | 319 EXPECT_TRUE(value->GetString("server", &server)); |
| 210 EXPECT_EQ(test_server, server); | 320 EXPECT_EQ(test_server, server); |
| 211 | 321 |
| 212 histogram_tester.ExpectUniqueSample( | 322 histogram_tester.ExpectUniqueSample( |
| 213 "DataReductionProxy.ProxyPrefMigrationResult", | 323 "DataReductionProxy.ProxyPrefMigrationResult", |
| 214 DataReductionProxyChromeSettings::PROXY_PREF_NOT_CLEARED, 1); | 324 DataReductionProxyChromeSettings::PROXY_PREF_NOT_CLEARED, 1); |
| 215 } | 325 } |
| 216 } | 326 } |
| OLD | NEW |