| Index: chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_unittest.cc
|
| diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_unittest.cc b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_unittest.cc
|
| index a445898d469b0e1ce0e8f3dcdbe6cd321202d1c2..7bba517d380505bcc9b49de091f82185df379de9 100644
|
| --- a/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_unittest.cc
|
| +++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_unittest.cc
|
| @@ -65,8 +65,9 @@ TEST_F(DataReductionProxyChromeSettingsTest, MigrateBadlyFormedProxyPref) {
|
| } test_cases[] = {
|
| // The pref should not be cleared if mode is unset.
|
| {nullptr, "http=compress.googlezip.net"},
|
| - // The pref should not be cleared for modes other than "fixed_servers".
|
| - {"pac_script", "http=compress.googlezip.net"},
|
| + // The pref should not be cleared for modes other than "fixed_servers" and
|
| + // "pac_script".
|
| + {"auto_detect", "http=compress.googlezip.net"},
|
| // The pref should not be cleared when the server field is unset.
|
| {"fixed_servers", nullptr},
|
| };
|
| @@ -179,6 +180,115 @@ TEST_F(DataReductionProxyChromeSettingsTest,
|
| }
|
| }
|
|
|
| +TEST_F(DataReductionProxyChromeSettingsTest,
|
| + MigratePacGooglezipDataReductionProxy) {
|
| + const struct {
|
| + const char* pac_url;
|
| + bool expect_pref_cleared;
|
| + } test_cases[] = {
|
| + // PAC with bypass rules that returns 'HTTPS proxy.googlezip.net:443;
|
| + // PROXY compress.googlezip.net:80; DIRECT'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgeyAgaWYgKChzaEV4cE1hdGN"
|
| + "oKHVybCwgJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9wb2xpY2llcy9wcml2YWN5KicpKSkgey"
|
| + "AgICByZXR1cm4gJ0RJUkVDVCc7ICB9ICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgNSkgPT0gJ"
|
| + "2h0dHA6JykgeyAgICByZXR1cm4gJ0hUVFBTIHByb3h5Lmdvb2dsZXppcC5uZXQ6NDQzOyBQ"
|
| + "Uk9YWSBjb21wcmVzcy5nb29nbGV6aXAubmV0OjgwOyBESVJFQ1QnOyAgfSAgcmV0dXJuICd"
|
| + "ESVJFQ1QnO30=",
|
| + true},
|
| + // PAC with bypass rules that returns 'PROXY compress.googlezip.net:80;
|
| + // DIRECT'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgeyAgaWYgKChzaEV4cE1hdGN"
|
| + "oKHVybCwgJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9wb2xpY2llcy9wcml2YWN5KicpKSkgey"
|
| + "AgICByZXR1cm4gJ0RJUkVDVCc7ICB9ICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgNSkgPT0gJ"
|
| + "2h0dHA6JykgeyAgICByZXR1cm4gJ1BST1hZIGNvbXByZXNzLmdvb2dsZXppcC5uZXQ6ODA7"
|
| + "IERJUkVDVCc7ICB9ICByZXR1cm4gJ0RJUkVDVCc7fQ==",
|
| + true},
|
| + // PAC with bypass rules that returns 'PROXY proxy-dev.googlezip.net:80;
|
| + // DIRECT'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkgeyAgaWYgKChzaEV4cE1hdGN"
|
| + "oKHVybCwgJ2h0dHA6Ly93d3cuZ29vZ2xlLmNvbS9wb2xpY2llcy9wcml2YWN5KicpKSkgey"
|
| + "AgICByZXR1cm4gJ0RJUkVDVCc7ICB9ICAgaWYgKHVybC5zdWJzdHJpbmcoMCwgNSkgPT0gJ"
|
| + "2h0dHA6JykgeyAgICByZXR1cm4gJ1BST1hZIHByb3h5LWRldi5nb29nbGV6aXAubmV0Ojgw"
|
| + "OyBESVJFQ1QnOyAgfSAgcmV0dXJuICdESVJFQ1QnO30=",
|
| + true},
|
| + // Simple PAC that returns 'PROXY compress.googlezip.net:80'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgY29"
|
| + "tcHJlc3MuZ29vZ2xlemlwLm5ldDo4MCc7fQo=",
|
| + true},
|
| + // Simple PAC that returns 'PROXY compress.googlezip.net'. Note that since
|
| + // the port is not specified, the pref will not be cleared.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgY29"
|
| + "tcHJlc3MuZ29vZ2xlemlwLm5ldCc7fQ==",
|
| + false},
|
| + // Simple PAC that returns 'PROXY mycustomdrp.net:80'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgb3J"
|
| + "pZ2luLm5ldDo4MCc7fQo=",
|
| + false},
|
| + // Simple PAC that returns 'PROXY myprefixgooglezip.net:80'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgbXl"
|
| + "wcmVmaXhnb29nbGV6aXAubmV0OjgwJzt9Cg==",
|
| + false},
|
| + // Simple PAC that returns 'PROXY compress.googlezip.net.mydomain.com:80'.
|
| + {"data:application/"
|
| + "x-ns-proxy-autoconfig;base64,"
|
| + "ZnVuY3Rpb24gRmluZFByb3h5Rm9yVVJMKHVybCwgaG9zdCkge3JldHVybiAnUFJPWFkgY29"
|
| + "tcHJlc3MuZ29vZ2xlemlwLm5ldC5teWRvbWFpbi5jb206ODAnO30K",
|
| + false},
|
| + // PAC URL that doesn't embed a script.
|
| + {"http://compress.googlezip.net/pac", false},
|
| + };
|
| +
|
| + for (const auto& test : test_cases) {
|
| + base::HistogramTester histogram_tester;
|
| + dict_.reset(new base::DictionaryValue());
|
| + dict_->SetString("mode", "pac_script");
|
| + dict_->SetString("pac_url", test.pac_url);
|
| + test_context_->pref_service()->Set(prefs::kProxy, *dict_.get());
|
| + EXPECT_CALL(*config_, ContainsDataReductionProxy(_)).Times(0);
|
| +
|
| + drp_chrome_settings_->MigrateDataReductionProxyOffProxyPrefs(
|
| + test_context_->pref_service());
|
| +
|
| + if (test.expect_pref_cleared) {
|
| + EXPECT_EQ(NULL,
|
| + test_context_->pref_service()->GetUserPref(prefs::kProxy));
|
| + histogram_tester.ExpectUniqueSample(
|
| + "DataReductionProxy.ProxyPrefMigrationResult",
|
| + DataReductionProxyChromeSettings::PROXY_PREF_CLEARED_PAC_GOOGLEZIP,
|
| + 1);
|
| + } else {
|
| + const base::DictionaryValue* value;
|
| + EXPECT_TRUE(test_context_->pref_service()
|
| + ->GetUserPref(prefs::kProxy)
|
| + ->GetAsDictionary(&value));
|
| + std::string mode;
|
| + EXPECT_TRUE(value->GetString("mode", &mode));
|
| + EXPECT_EQ("pac_script", mode);
|
| + std::string pac_url;
|
| + EXPECT_TRUE(value->GetString("pac_url", &pac_url));
|
| + EXPECT_EQ(test.pac_url, pac_url);
|
| +
|
| + histogram_tester.ExpectUniqueSample(
|
| + "DataReductionProxy.ProxyPrefMigrationResult",
|
| + DataReductionProxyChromeSettings::PROXY_PREF_NOT_CLEARED, 1);
|
| + }
|
| + }
|
| +}
|
| +
|
| TEST_F(DataReductionProxyChromeSettingsTest, MigrateIgnoreOtherProxy) {
|
| const std::string kTestServers[] = {
|
| "http=https://youtube.com",
|
|
|