146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file.
446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <map>
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/command_line.h"
1046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/logging.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/data_reduction_proxy/browser/data_reduction_proxy_params_test_utils.h"
1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/data_reduction_proxy/common/data_reduction_proxy_switches.h"
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "net/proxy/proxy_retry_info.h"
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "net/proxy/proxy_server.h"
1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace data_reduction_proxy {
1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class DataReductionProxyParamsTest : public testing::Test {
1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) public:
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void CheckParams(const TestDataReductionProxyParams& params,
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   bool expected_init_result,
2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   bool expected_allowed,
2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   bool expected_fallback_allowed,
2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   bool expected_alternative_allowed,
2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   bool expected_promo_allowed) {
2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(expected_init_result, params.init_result());
2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(expected_allowed, params.allowed());
2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(expected_fallback_allowed, params.fallback_allowed());
2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(expected_alternative_allowed, params.alternative_allowed());
3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(expected_promo_allowed, params.promo_allowed());
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  void CheckValues(const TestDataReductionProxyParams& params,
3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const std::string& expected_origin,
3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const std::string& expected_fallback_origin,
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const std::string& expected_ssl_origin,
3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const std::string& expected_alt_origin,
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const std::string& expected_alt_fallback_origin,
3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                   const std::string& expected_probe_url) {
3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(GURL(expected_origin), params.origin());
4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(GURL(expected_fallback_origin), params.fallback_origin());
4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(GURL(expected_ssl_origin), params.ssl_origin());
4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(GURL(expected_alt_origin), params.alt_origin());
4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(GURL(expected_alt_fallback_origin), params.alt_fallback_origin());
4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    EXPECT_EQ(GURL(expected_probe_url), params.probe_url());
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)};
4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(DataReductionProxyParamsTest, EverythingDefined) {
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  TestDataReductionProxyParams params(
5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kAllowed |
5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kFallbackAllowed |
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      DataReductionProxyParams::kPromoAllowed,
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_EVERYTHING);
5446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CheckParams(params, true, true, true, false, true);
5546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CheckValues(params,
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultDevOrigin(),
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci              TestDataReductionProxyParams::DefaultDevFallbackOrigin(),
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultSSLOrigin(),
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultAltOrigin(),
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultAltFallbackOrigin(),
61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultProbeURL());
6246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
6346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(DataReductionProxyParamsTest, NoDevOrigin) {
6546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  TestDataReductionProxyParams params(
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kAllowed |
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kFallbackAllowed |
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kPromoAllowed,
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_EVERYTHING &
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ~TestDataReductionProxyParams::HAS_DEV_ORIGIN &
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN);
7246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CheckParams(params, true, true, true, false, true);
7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CheckValues(params,
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultOrigin(),
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultFallbackOrigin(),
76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultSSLOrigin(),
77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultAltOrigin(),
78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultAltFallbackOrigin(),
79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::DefaultProbeURL());
8046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
8146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
8246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(DataReductionProxyParamsTest, Flags) {
8346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitchASCII(
84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      switches::kDataReductionProxy,
85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::FlagOrigin());
8646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitchASCII(
87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      switches::kDataReductionProxyFallback,
88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::FlagFallbackOrigin());
8946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitchASCII(
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      switches::kDataReductionSSLProxy,
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::FlagSSLOrigin());
9246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitchASCII(
93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      switches::kDataReductionProxyAlt,
94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::FlagAltOrigin());
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitchASCII(
96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      switches::kDataReductionProxyAltFallback,
97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::FlagAltFallbackOrigin());
9846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CommandLine::ForCurrentProcess()->AppendSwitchASCII(
99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      switches::kDataReductionProxyProbeURL,
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::FlagProbeURL());
10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  TestDataReductionProxyParams params(
10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kAllowed |
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kFallbackAllowed |
10446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      DataReductionProxyParams::kAlternativeAllowed |
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      DataReductionProxyParams::kPromoAllowed,
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_EVERYTHING);
10746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CheckParams(params, true, true, true, true, true);
10846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  CheckValues(params,
109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::FlagOrigin(),
110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::FlagFallbackOrigin(),
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::FlagSSLOrigin(),
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::FlagAltOrigin(),
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::FlagAltFallbackOrigin(),
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch              TestDataReductionProxyParams::FlagProbeURL());
11546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
11646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
11746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)TEST_F(DataReductionProxyParamsTest, InvalidConfigurations) {
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  const struct {
11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bool allowed;
12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bool fallback_allowed;
12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bool alternative_allowed;
1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    bool alternative_fallback_allowed;
12346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bool promo_allowed;
12446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    unsigned int missing_definitions;
12546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bool expected_result;
12646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  } tests[]  = {
127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_NOTHING,
134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_DEV_ORIGIN |
1431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
149116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
151116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ORIGIN,
153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ORIGIN |
1621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_ORIGIN |
1631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
1661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
167116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
1711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
1721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN |
1731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
1761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
1811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_SSL_ORIGIN,
183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
184116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
1851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
187116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
1891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
1901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_ORIGIN,
192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
193116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
1941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
1951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
1961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
1971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
1981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
1991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
2001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
2011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true
2021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
2031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
2041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
2051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
206116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
2121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
2171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_PROBE_URL,
219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_NOTHING,
228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ORIGIN |
2371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_ORIGIN |
2381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
244116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN,
248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_SSL_ORIGIN,
257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_ORIGIN,
266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
2821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
2831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
2841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false
2851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
2861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
2871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
2881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
2891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
2901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
2911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_PROBE_URL,
293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
298116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
2991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_NOTHING,
302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ORIGIN |
3111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_ORIGIN |
3121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
3211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN |
3221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_SSL_ORIGIN,
332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_ORIGIN,
341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
355116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
3571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
3581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
3591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false
3601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
3611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
3621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
3631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
3641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
3651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
3661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_PROBE_URL,
368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ORIGIN |
3771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_ORIGIN |
3781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN,
388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
3941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_SSL_ORIGIN,
397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
401116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
4031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_ORIGIN,
406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
4121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true
416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
4231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
4241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false
4251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
4261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
4271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
4281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
4291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
4301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
4311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
432116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_PROBE_URL,
433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
436116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
437116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_NOTHING,
442116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ORIGIN |
4511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_ORIGIN |
4521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN,
462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
463116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
466116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
469116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_SSL_ORIGIN,
471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
472116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
475116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
478116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_ORIGIN,
480116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
4861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
4871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
4881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
4891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false
4901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    },
4911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    {
4921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
4931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
4941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
4951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      true,
496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
499116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    {
501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false,
502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
5041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      false,
505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      true,
506116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      TestDataReductionProxyParams::HAS_PROBE_URL,
507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      false
508116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    },
50946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  };
51046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
51146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
51246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    int flags = 0;
51346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (tests[i].allowed)
51446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      flags |= DataReductionProxyParams::kAllowed;
51546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (tests[i].fallback_allowed)
51646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      flags |= DataReductionProxyParams::kFallbackAllowed;
51746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (tests[i].alternative_allowed)
51846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      flags |= DataReductionProxyParams::kAlternativeAllowed;
5191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    if (tests[i].alternative_fallback_allowed)
5201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      flags |= DataReductionProxyParams::kAlternativeFallbackAllowed;
52146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    if (tests[i].promo_allowed)
52246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      flags |= DataReductionProxyParams::kPromoAllowed;
52346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    TestDataReductionProxyParams params(
52446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        flags,
525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        TestDataReductionProxyParams::HAS_EVERYTHING &
526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            ~(tests[i].missing_definitions));
5271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    EXPECT_EQ(tests[i].expected_result, params.init_result()) << i;
52846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  }
52946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
53046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
531f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)TEST_F(DataReductionProxyParamsTest, IsDataReductionProxy) {
532f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  const struct {
533f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    net::HostPortPair host_port_pair;
534f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    bool fallback_allowed;
5351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    bool alt_fallback_allowed;
536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    bool set_dev_origin;
537f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    bool expected_result;
538f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    net::HostPortPair expected_first;
539f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    net::HostPortPair expected_second;
5406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    bool expected_is_fallback;
5416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    bool expected_is_alternative;
5426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    bool expected_is_ssl;
543f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  } tests[]  = {
5441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
5451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultOrigin())),
547f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
5481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
549116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
550f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
551116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultOrigin())),
553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
5546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            TestDataReductionProxyParams::DefaultFallbackOrigin())),
5556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
558f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
5591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
5601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultOrigin())),
562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
563f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        false,
5641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
565f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
567116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultOrigin())),
5686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
5696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
572f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
5731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
5741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
575116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultFallbackOrigin())),
576f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
5771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
579f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
580116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultFallbackOrigin())),
5826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
5836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        true,
5846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
586f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
5871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
5881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultFallbackOrigin())),
590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
591f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        false,
592f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        false,
5931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
594f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
5956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
5966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5976e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
5986e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
599f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
6001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultAltOrigin())),
603f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
6041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
606f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
608116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultAltOrigin())),
609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
6106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)            TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
6116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        true,
6136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
614f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
6151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultAltOrigin())),
618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
619f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        false,
6201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
621f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultAltOrigin())),
6246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
6256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        true,
6276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
628f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
6291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(
631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            GURL(TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
632f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
6331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
635f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
6386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
6396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        true,
6406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        true,
6416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
642f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
6431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
647f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        false,
648f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        false,
6491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
650f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
6516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
6526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
655f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
6561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
658116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultSSLOrigin())),
659f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
6601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        false,
662f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        true,
663116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultSSLOrigin())),
6656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        net::HostPortPair::FromURL(GURL()),
6666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        true
669f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      },
6701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultDevOrigin())),
673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        true,
674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        true,
675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        true,
6761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultDevOrigin())),
679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        net::HostPortPair::FromURL(GURL(
6801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            TestDataReductionProxyParams::DefaultDevFallbackOrigin())),
6816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      },
6851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      {
6861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL(
687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch            TestDataReductionProxyParams::DefaultOrigin())),
688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        true,
689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        true,
690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        true,
6911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
6921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL()),
6931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(GURL()),
6946e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6956e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false,
6966e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)        false
697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      },
698f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  };
699f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
700f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    int flags = DataReductionProxyParams::kAllowed |
701f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                DataReductionProxyParams::kAlternativeAllowed;
702f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    if (tests[i].fallback_allowed)
703f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      flags |= DataReductionProxyParams::kFallbackAllowed;
7041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    if (tests[i].alt_fallback_allowed)
7051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      flags |= DataReductionProxyParams::kAlternativeFallbackAllowed;
706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    unsigned int has_definitions = TestDataReductionProxyParams::HAS_EVERYTHING;
707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    if (!tests[i].set_dev_origin) {
708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      has_definitions &= ~TestDataReductionProxyParams::HAS_DEV_ORIGIN;
7091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      has_definitions &= ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN;
710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    }
711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    TestDataReductionProxyParams params(flags, has_definitions);
7126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    DataReductionProxyTypeInfo proxy_type_info;
713f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_EQ(tests[i].expected_result,
714f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)              params.IsDataReductionProxy(
7151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                  tests[i].host_port_pair, &proxy_type_info)) << i;
716f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_TRUE(tests[i].expected_first.Equals(
7171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(proxy_type_info.proxy_servers.first))) << i;
718f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    EXPECT_TRUE(tests[i].expected_second.Equals(
7191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        net::HostPortPair::FromURL(proxy_type_info.proxy_servers.second))) << i;
7201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    EXPECT_EQ(tests[i].expected_is_fallback, proxy_type_info.is_fallback) << i;
7211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    EXPECT_EQ(tests[i].expected_is_alternative, proxy_type_info.is_alternative)
7221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        << i;
7231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    EXPECT_EQ(tests[i].expected_is_ssl, proxy_type_info.is_ssl) << i;
724f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  }
725f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
7265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
7275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)std::string GetRetryMapKeyFromOrigin(std::string origin) {
7285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // The retry map has the scheme prefix for https but not for http
7295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return net::ProxyServer(GURL(origin).SchemeIs(url::kHttpsScheme) ?
7305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      net::ProxyServer::SCHEME_HTTPS : net::ProxyServer::SCHEME_HTTP,
7315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      net::HostPortPair::FromURL(GURL(origin))).ToURI();
7325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
7335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
7345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TEST_F(DataReductionProxyParamsTest, AreProxiesBypassed) {
7355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  const struct {
7365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    // proxy flags
7375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool allowed;
7385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool fallback_allowed;
7395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool alt_allowed;
7405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    // is https request
7415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool is_https;
7425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    // proxies in retry map
7435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool origin;
7445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool fallback_origin;
7455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool alt_origin;
7465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool alt_fallback_origin;
7475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool ssl_origin;
7485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
7495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool expected_result;
7505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  } tests[]  = {
7515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
7525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
7565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
7585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
7645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
7665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
7675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
7685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
7715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
7735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
7795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
7815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
7825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
7835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
7845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
7865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
7885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
7945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
7955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
7965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
7975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
7985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
7995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
8015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
8035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
8095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
8115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
8125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
8165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
8185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
8245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
8265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
8275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
8315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
8335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
8391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
8415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
8421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
8465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
8485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
8545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
8565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
8575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
8611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
8631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
8695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
8715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
8725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
8765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
8781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
8805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // expected result
8841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      },
8861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      { // proxy flags
8871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // is https request
8911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        // proxies in retry map
8931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        false,
8961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        true,
8975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
8985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
8995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
9145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
9295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
9445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
9595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
9745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
9895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
9915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
9925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
9945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
9965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
9985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
9995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
10045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
10065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
10075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
10115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
10135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
10195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
10215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
10225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
10265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
10285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
10345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
10365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
10375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
10415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
10435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
10495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
10515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      { // proxy flags
10525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // is https request
10565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // proxies in retry map
10585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        true,
10625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        // expected result
10645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        false,
10655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      },
10665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  };
10675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
10685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // The retry map has the scheme prefix for https but not for http.
10695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  std::string origin = GetRetryMapKeyFromOrigin(
10705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      TestDataReductionProxyParams::DefaultOrigin());
10715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  std::string fallback_origin =GetRetryMapKeyFromOrigin(
10725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      TestDataReductionProxyParams::DefaultFallbackOrigin());
10735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  std::string alt_origin = GetRetryMapKeyFromOrigin(
10745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      TestDataReductionProxyParams::DefaultAltOrigin());
10755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  std::string alt_fallback_origin = GetRetryMapKeyFromOrigin(
10765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      TestDataReductionProxyParams::DefaultAltFallbackOrigin());
10775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  std::string ssl_origin = GetRetryMapKeyFromOrigin(
10785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      TestDataReductionProxyParams::DefaultSSLOrigin());
10795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
10805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
10815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    int flags = 0;
10825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].allowed)
10835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      flags |= DataReductionProxyParams::kAllowed;
10845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].alt_allowed)
10855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      flags |= DataReductionProxyParams::kAlternativeAllowed;
10865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].fallback_allowed)
10875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      flags |= DataReductionProxyParams::kFallbackAllowed;
10885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    unsigned int has_definitions =
10895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)        TestDataReductionProxyParams::HAS_EVERYTHING &
10901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        ~TestDataReductionProxyParams::HAS_DEV_ORIGIN &
10911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN;
10925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    TestDataReductionProxyParams params(flags, has_definitions);
10935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
10945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    net::ProxyRetryInfoMap retry_map;
10955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    net::ProxyRetryInfo retry_info;
10965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
10975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].origin)
10985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      retry_map[origin] = retry_info;
10995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].fallback_origin)
11005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      retry_map[fallback_origin] = retry_info;
11015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].alt_origin)
11025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      retry_map[alt_origin] = retry_info;
11035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].alt_fallback_origin)
11045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      retry_map[alt_fallback_origin] = retry_info;
11055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    if (tests[i].ssl_origin)
11065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      retry_map[ssl_origin] = retry_info;
11075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
11085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    bool was_bypassed = params.AreProxiesBypassed(retry_map,
11095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                                  tests[i].is_https,
11105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                                                  NULL);
11115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
11125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    EXPECT_EQ(tests[i].expected_result, was_bypassed);
11135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
11145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
111546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}  // namespace data_reduction_proxy
1116