Disable fallback support for alternative data reduction proxy
[chromium-blink-merge.git] / components / data_reduction_proxy / browser / data_reduction_proxy_params_unittest.cc
blob84d245d61be44e85b5a492e408f4bd7334c3323d
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
7 #include <map>
9 #include "base/command_line.h"
10 #include "base/logging.h"
11 #include "components/data_reduction_proxy/browser/data_reduction_proxy_params_test_utils.h"
12 #include "components/data_reduction_proxy/common/data_reduction_proxy_switches.h"
13 #include "net/proxy/proxy_retry_info.h"
14 #include "net/proxy/proxy_server.h"
15 #include "testing/gtest/include/gtest/gtest.h"
17 namespace data_reduction_proxy {
18 class DataReductionProxyParamsTest : public testing::Test {
19 public:
20 void CheckParams(const TestDataReductionProxyParams& params,
21 bool expected_init_result,
22 bool expected_allowed,
23 bool expected_fallback_allowed,
24 bool expected_alternative_allowed,
25 bool expected_promo_allowed) {
26 EXPECT_EQ(expected_init_result, params.init_result());
27 EXPECT_EQ(expected_allowed, params.allowed());
28 EXPECT_EQ(expected_fallback_allowed, params.fallback_allowed());
29 EXPECT_EQ(expected_alternative_allowed, params.alternative_allowed());
30 EXPECT_EQ(expected_promo_allowed, params.promo_allowed());
32 void CheckValues(const TestDataReductionProxyParams& params,
33 const std::string& expected_origin,
34 const std::string& expected_fallback_origin,
35 const std::string& expected_ssl_origin,
36 const std::string& expected_alt_origin,
37 const std::string& expected_alt_fallback_origin,
38 const std::string& expected_probe_url) {
39 EXPECT_EQ(GURL(expected_origin), params.origin());
40 EXPECT_EQ(GURL(expected_fallback_origin), params.fallback_origin());
41 EXPECT_EQ(GURL(expected_ssl_origin), params.ssl_origin());
42 EXPECT_EQ(GURL(expected_alt_origin), params.alt_origin());
43 EXPECT_EQ(GURL(expected_alt_fallback_origin), params.alt_fallback_origin());
44 EXPECT_EQ(GURL(expected_probe_url), params.probe_url());
48 TEST_F(DataReductionProxyParamsTest, EverythingDefined) {
49 TestDataReductionProxyParams params(
50 DataReductionProxyParams::kAllowed |
51 DataReductionProxyParams::kFallbackAllowed |
52 DataReductionProxyParams::kPromoAllowed,
53 TestDataReductionProxyParams::HAS_EVERYTHING);
54 CheckParams(params, true, true, true, false, true);
55 CheckValues(params,
56 TestDataReductionProxyParams::DefaultDevOrigin(),
57 TestDataReductionProxyParams::DefaultDevFallbackOrigin(),
58 TestDataReductionProxyParams::DefaultSSLOrigin(),
59 TestDataReductionProxyParams::DefaultAltOrigin(),
60 TestDataReductionProxyParams::DefaultAltFallbackOrigin(),
61 TestDataReductionProxyParams::DefaultProbeURL());
64 TEST_F(DataReductionProxyParamsTest, NoDevOrigin) {
65 TestDataReductionProxyParams params(
66 DataReductionProxyParams::kAllowed |
67 DataReductionProxyParams::kFallbackAllowed |
68 DataReductionProxyParams::kPromoAllowed,
69 TestDataReductionProxyParams::HAS_EVERYTHING &
70 ~TestDataReductionProxyParams::HAS_DEV_ORIGIN &
71 ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN);
72 CheckParams(params, true, true, true, false, true);
73 CheckValues(params,
74 TestDataReductionProxyParams::DefaultOrigin(),
75 TestDataReductionProxyParams::DefaultFallbackOrigin(),
76 TestDataReductionProxyParams::DefaultSSLOrigin(),
77 TestDataReductionProxyParams::DefaultAltOrigin(),
78 TestDataReductionProxyParams::DefaultAltFallbackOrigin(),
79 TestDataReductionProxyParams::DefaultProbeURL());
82 TEST_F(DataReductionProxyParamsTest, Flags) {
83 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
84 switches::kDataReductionProxy,
85 TestDataReductionProxyParams::FlagOrigin());
86 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
87 switches::kDataReductionProxyFallback,
88 TestDataReductionProxyParams::FlagFallbackOrigin());
89 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
90 switches::kDataReductionSSLProxy,
91 TestDataReductionProxyParams::FlagSSLOrigin());
92 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
93 switches::kDataReductionProxyAlt,
94 TestDataReductionProxyParams::FlagAltOrigin());
95 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
96 switches::kDataReductionProxyAltFallback,
97 TestDataReductionProxyParams::FlagAltFallbackOrigin());
98 CommandLine::ForCurrentProcess()->AppendSwitchASCII(
99 switches::kDataReductionProxyProbeURL,
100 TestDataReductionProxyParams::FlagProbeURL());
101 TestDataReductionProxyParams params(
102 DataReductionProxyParams::kAllowed |
103 DataReductionProxyParams::kFallbackAllowed |
104 DataReductionProxyParams::kAlternativeAllowed |
105 DataReductionProxyParams::kPromoAllowed,
106 TestDataReductionProxyParams::HAS_EVERYTHING);
107 CheckParams(params, true, true, true, true, true);
108 CheckValues(params,
109 TestDataReductionProxyParams::FlagOrigin(),
110 TestDataReductionProxyParams::FlagFallbackOrigin(),
111 TestDataReductionProxyParams::FlagSSLOrigin(),
112 TestDataReductionProxyParams::FlagAltOrigin(),
113 TestDataReductionProxyParams::FlagAltFallbackOrigin(),
114 TestDataReductionProxyParams::FlagProbeURL());
117 TEST_F(DataReductionProxyParamsTest, InvalidConfigurations) {
118 const struct {
119 bool allowed;
120 bool fallback_allowed;
121 bool alternative_allowed;
122 bool alternative_fallback_allowed;
123 bool promo_allowed;
124 unsigned int missing_definitions;
125 bool expected_result;
126 } tests[] = {
128 true,
129 true,
130 true,
131 false,
132 true,
133 TestDataReductionProxyParams::HAS_NOTHING,
134 true
137 true,
138 true,
139 true,
140 false,
141 true,
142 TestDataReductionProxyParams::HAS_DEV_ORIGIN |
143 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
144 true
147 true,
148 true,
149 true,
150 false,
151 true,
152 TestDataReductionProxyParams::HAS_ORIGIN,
153 true
156 true,
157 true,
158 true,
159 false,
160 true,
161 TestDataReductionProxyParams::HAS_ORIGIN |
162 TestDataReductionProxyParams::HAS_DEV_ORIGIN |
163 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
164 false
167 true,
168 true,
169 true,
170 false,
171 true,
172 TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN |
173 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
174 false
177 true,
178 true,
179 true,
180 false,
181 true,
182 TestDataReductionProxyParams::HAS_SSL_ORIGIN,
183 false
186 true,
187 true,
188 true,
189 false,
190 true,
191 TestDataReductionProxyParams::HAS_ALT_ORIGIN,
192 false
195 true,
196 true,
197 true,
198 false,
199 true,
200 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
201 true
204 true,
205 true,
206 true,
207 true,
208 true,
209 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
210 false
213 true,
214 true,
215 true,
216 false,
217 true,
218 TestDataReductionProxyParams::HAS_PROBE_URL,
219 false
222 true,
223 false,
224 true,
225 false,
226 true,
227 TestDataReductionProxyParams::HAS_NOTHING,
228 true
231 true,
232 false,
233 true,
234 false,
235 true,
236 TestDataReductionProxyParams::HAS_ORIGIN |
237 TestDataReductionProxyParams::HAS_DEV_ORIGIN |
238 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
239 false
242 true,
243 false,
244 true,
245 false,
246 true,
247 TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN,
248 true
251 true,
252 false,
253 true,
254 false,
255 true,
256 TestDataReductionProxyParams::HAS_SSL_ORIGIN,
257 false
260 true,
261 false,
262 true,
263 false,
264 true,
265 TestDataReductionProxyParams::HAS_ALT_ORIGIN,
266 false
269 true,
270 false,
271 true,
272 false,
273 true,
274 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
275 true
278 true,
279 false,
280 true,
281 true,
282 true,
283 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
284 false
287 true,
288 false,
289 true,
290 false,
291 true,
292 TestDataReductionProxyParams::HAS_PROBE_URL,
293 false
296 true,
297 true,
298 false,
299 false,
300 true,
301 TestDataReductionProxyParams::HAS_NOTHING,
302 true
305 true,
306 true,
307 false,
308 false,
309 true,
310 TestDataReductionProxyParams::HAS_ORIGIN |
311 TestDataReductionProxyParams::HAS_DEV_ORIGIN |
312 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
313 false
316 true,
317 true,
318 false,
319 false,
320 true,
321 TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN |
322 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
323 false
326 true,
327 true,
328 false,
329 false,
330 true,
331 TestDataReductionProxyParams::HAS_SSL_ORIGIN,
332 true
335 true,
336 true,
337 false,
338 false,
339 true,
340 TestDataReductionProxyParams::HAS_ALT_ORIGIN,
341 true
344 true,
345 true,
346 false,
347 false,
348 true,
349 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
350 true
353 true,
354 true,
355 false,
356 true,
357 true,
358 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
359 false
362 true,
363 true,
364 false,
365 false,
366 true,
367 TestDataReductionProxyParams::HAS_PROBE_URL,
368 false
371 true,
372 false,
373 false,
374 false,
375 true,
376 TestDataReductionProxyParams::HAS_ORIGIN |
377 TestDataReductionProxyParams::HAS_DEV_ORIGIN |
378 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
379 false
382 true,
383 false,
384 false,
385 false,
386 true,
387 TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN,
388 true
391 true,
392 false,
393 false,
394 false,
395 true,
396 TestDataReductionProxyParams::HAS_SSL_ORIGIN,
397 true
400 true,
401 false,
402 false,
403 false,
404 true,
405 TestDataReductionProxyParams::HAS_ALT_ORIGIN,
406 true
409 true,
410 false,
411 false,
412 false,
413 true,
414 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
415 true
418 true,
419 false,
420 false,
421 true,
422 true,
423 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
424 false
427 true,
428 false,
429 false,
430 false,
431 true,
432 TestDataReductionProxyParams::HAS_PROBE_URL,
433 false
436 false,
437 true,
438 true,
439 false,
440 true,
441 TestDataReductionProxyParams::HAS_NOTHING,
442 false
445 false,
446 true,
447 true,
448 false,
449 true,
450 TestDataReductionProxyParams::HAS_ORIGIN |
451 TestDataReductionProxyParams::HAS_DEV_ORIGIN |
452 TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN,
453 false
456 false,
457 true,
458 true,
459 false,
460 true,
461 TestDataReductionProxyParams::HAS_FALLBACK_ORIGIN,
462 false
465 false,
466 true,
467 true,
468 false,
469 true,
470 TestDataReductionProxyParams::HAS_SSL_ORIGIN,
471 false
474 false,
475 true,
476 true,
477 false,
478 true,
479 TestDataReductionProxyParams::HAS_ALT_ORIGIN,
480 false
483 false,
484 true,
485 true,
486 false,
487 true,
488 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
489 false
492 false,
493 true,
494 true,
495 true,
496 true,
497 TestDataReductionProxyParams::HAS_ALT_FALLBACK_ORIGIN,
498 false
501 false,
502 true,
503 true,
504 false,
505 true,
506 TestDataReductionProxyParams::HAS_PROBE_URL,
507 false
511 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
512 int flags = 0;
513 if (tests[i].allowed)
514 flags |= DataReductionProxyParams::kAllowed;
515 if (tests[i].fallback_allowed)
516 flags |= DataReductionProxyParams::kFallbackAllowed;
517 if (tests[i].alternative_allowed)
518 flags |= DataReductionProxyParams::kAlternativeAllowed;
519 if (tests[i].alternative_fallback_allowed)
520 flags |= DataReductionProxyParams::kAlternativeFallbackAllowed;
521 if (tests[i].promo_allowed)
522 flags |= DataReductionProxyParams::kPromoAllowed;
523 TestDataReductionProxyParams params(
524 flags,
525 TestDataReductionProxyParams::HAS_EVERYTHING &
526 ~(tests[i].missing_definitions));
527 EXPECT_EQ(tests[i].expected_result, params.init_result()) << i;
531 TEST_F(DataReductionProxyParamsTest, IsDataReductionProxy) {
532 const struct {
533 net::HostPortPair host_port_pair;
534 bool fallback_allowed;
535 bool alt_fallback_allowed;
536 bool set_dev_origin;
537 bool expected_result;
538 net::HostPortPair expected_first;
539 net::HostPortPair expected_second;
540 bool expected_is_fallback;
541 bool expected_is_alternative;
542 bool expected_is_ssl;
543 } tests[] = {
545 net::HostPortPair::FromURL(GURL(
546 TestDataReductionProxyParams::DefaultOrigin())),
547 true,
548 true,
549 false,
550 true,
551 net::HostPortPair::FromURL(GURL(
552 TestDataReductionProxyParams::DefaultOrigin())),
553 net::HostPortPair::FromURL(GURL(
554 TestDataReductionProxyParams::DefaultFallbackOrigin())),
555 false,
556 false,
557 false
560 net::HostPortPair::FromURL(GURL(
561 TestDataReductionProxyParams::DefaultOrigin())),
562 false,
563 false,
564 false,
565 true,
566 net::HostPortPair::FromURL(GURL(
567 TestDataReductionProxyParams::DefaultOrigin())),
568 net::HostPortPair::FromURL(GURL()),
569 false,
570 false,
571 false
574 net::HostPortPair::FromURL(GURL(
575 TestDataReductionProxyParams::DefaultFallbackOrigin())),
576 true,
577 true,
578 false,
579 true,
580 net::HostPortPair::FromURL(GURL(
581 TestDataReductionProxyParams::DefaultFallbackOrigin())),
582 net::HostPortPair::FromURL(GURL()),
583 true,
584 false,
585 false
588 net::HostPortPair::FromURL(GURL(
589 TestDataReductionProxyParams::DefaultFallbackOrigin())),
590 false,
591 false,
592 false,
593 false,
594 net::HostPortPair::FromURL(GURL()),
595 net::HostPortPair::FromURL(GURL()),
596 false,
597 false,
598 false
601 net::HostPortPair::FromURL(GURL(
602 TestDataReductionProxyParams::DefaultAltOrigin())),
603 true,
604 true,
605 false,
606 true,
607 net::HostPortPair::FromURL(GURL(
608 TestDataReductionProxyParams::DefaultAltOrigin())),
609 net::HostPortPair::FromURL(GURL(
610 TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
611 false,
612 true,
613 false
616 net::HostPortPair::FromURL(GURL(
617 TestDataReductionProxyParams::DefaultAltOrigin())),
618 false,
619 false,
620 false,
621 true,
622 net::HostPortPair::FromURL(GURL(
623 TestDataReductionProxyParams::DefaultAltOrigin())),
624 net::HostPortPair::FromURL(GURL()),
625 false,
626 true,
627 false
630 net::HostPortPair::FromURL(
631 GURL(TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
632 true,
633 true,
634 false,
635 true,
636 net::HostPortPair::FromURL(GURL(
637 TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
638 net::HostPortPair::FromURL(GURL()),
639 true,
640 true,
641 false
644 net::HostPortPair::FromURL(GURL(
645 TestDataReductionProxyParams::DefaultAltFallbackOrigin())),
646 false,
647 false,
648 false,
649 false,
650 net::HostPortPair::FromURL(GURL()),
651 net::HostPortPair::FromURL(GURL()),
652 false,
653 false,
654 false
657 net::HostPortPair::FromURL(GURL(
658 TestDataReductionProxyParams::DefaultSSLOrigin())),
659 true,
660 true,
661 false,
662 true,
663 net::HostPortPair::FromURL(GURL(
664 TestDataReductionProxyParams::DefaultSSLOrigin())),
665 net::HostPortPair::FromURL(GURL()),
666 false,
667 false,
668 true
671 net::HostPortPair::FromURL(GURL(
672 TestDataReductionProxyParams::DefaultDevOrigin())),
673 true,
674 true,
675 true,
676 true,
677 net::HostPortPair::FromURL(GURL(
678 TestDataReductionProxyParams::DefaultDevOrigin())),
679 net::HostPortPair::FromURL(GURL(
680 TestDataReductionProxyParams::DefaultDevFallbackOrigin())),
681 false,
682 false,
683 false
686 net::HostPortPair::FromURL(GURL(
687 TestDataReductionProxyParams::DefaultOrigin())),
688 true,
689 true,
690 true,
691 false,
692 net::HostPortPair::FromURL(GURL()),
693 net::HostPortPair::FromURL(GURL()),
694 false,
695 false,
696 false
699 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
700 int flags = DataReductionProxyParams::kAllowed |
701 DataReductionProxyParams::kAlternativeAllowed;
702 if (tests[i].fallback_allowed)
703 flags |= DataReductionProxyParams::kFallbackAllowed;
704 if (tests[i].alt_fallback_allowed)
705 flags |= DataReductionProxyParams::kAlternativeFallbackAllowed;
706 unsigned int has_definitions = TestDataReductionProxyParams::HAS_EVERYTHING;
707 if (!tests[i].set_dev_origin) {
708 has_definitions &= ~TestDataReductionProxyParams::HAS_DEV_ORIGIN;
709 has_definitions &= ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN;
711 TestDataReductionProxyParams params(flags, has_definitions);
712 DataReductionProxyTypeInfo proxy_type_info;
713 EXPECT_EQ(tests[i].expected_result,
714 params.IsDataReductionProxy(
715 tests[i].host_port_pair, &proxy_type_info)) << i;
716 EXPECT_TRUE(tests[i].expected_first.Equals(
717 net::HostPortPair::FromURL(proxy_type_info.proxy_servers.first))) << i;
718 EXPECT_TRUE(tests[i].expected_second.Equals(
719 net::HostPortPair::FromURL(proxy_type_info.proxy_servers.second))) << i;
720 EXPECT_EQ(tests[i].expected_is_fallback, proxy_type_info.is_fallback) << i;
721 EXPECT_EQ(tests[i].expected_is_alternative, proxy_type_info.is_alternative)
722 << i;
723 EXPECT_EQ(tests[i].expected_is_ssl, proxy_type_info.is_ssl) << i;
727 std::string GetRetryMapKeyFromOrigin(std::string origin) {
728 // The retry map has the scheme prefix for https but not for http
729 return net::ProxyServer(GURL(origin).SchemeIs(url::kHttpsScheme) ?
730 net::ProxyServer::SCHEME_HTTPS : net::ProxyServer::SCHEME_HTTP,
731 net::HostPortPair::FromURL(GURL(origin))).ToURI();
734 TEST_F(DataReductionProxyParamsTest, AreProxiesBypassed) {
735 const struct {
736 // proxy flags
737 bool allowed;
738 bool fallback_allowed;
739 bool alt_allowed;
740 // is https request
741 bool is_https;
742 // proxies in retry map
743 bool origin;
744 bool fallback_origin;
745 bool alt_origin;
746 bool alt_fallback_origin;
747 bool ssl_origin;
749 bool expected_result;
750 } tests[] = {
751 { // proxy flags
752 false,
753 false,
754 false,
755 // is https request
756 false,
757 // proxies in retry map
758 false,
759 false,
760 false,
761 false,
762 false,
763 // expected result
764 false,
766 { // proxy flags
767 true,
768 false,
769 false,
770 // is https request
771 false,
772 // proxies in retry map
773 false,
774 false,
775 false,
776 false,
777 false,
778 // expected result
779 false,
781 { // proxy flags
782 true,
783 true,
784 false,
785 // is https request
786 false,
787 // proxies in retry map
788 false,
789 false,
790 false,
791 false,
792 false,
793 // expected result
794 false,
796 { // proxy flags
797 true,
798 true,
799 true,
800 // is https request
801 false,
802 // proxies in retry map
803 false,
804 false,
805 false,
806 false,
807 false,
808 // expected result
809 false,
811 { // proxy flags
812 true,
813 true,
814 true,
815 // is https request
816 true,
817 // proxies in retry map
818 false,
819 false,
820 false,
821 false,
822 false,
823 // expected result
824 false,
826 { // proxy flags
827 false,
828 false,
829 true,
830 // is https request
831 true,
832 // proxies in retry map
833 false,
834 false,
835 false,
836 false,
837 true,
838 // expected result
839 true,
841 { // proxy flags
842 true,
843 true,
844 true,
845 // is https request
846 true,
847 // proxies in retry map
848 false,
849 false,
850 false,
851 false,
852 true,
853 // expected result
854 true,
856 { // proxy flags
857 true,
858 false,
859 false,
860 // is https request
861 false,
862 // proxies in retry map
863 true,
864 false,
865 false,
866 false,
867 false,
868 // expected result
869 true,
871 { // proxy flags
872 true,
873 true,
874 false,
875 // is https request
876 false,
877 // proxies in retry map
878 false,
879 true,
880 false,
881 false,
882 false,
883 // expected result
884 true,
886 { // proxy flags
887 false,
888 true,
889 true,
890 // is https request
891 false,
892 // proxies in retry map
893 false,
894 false,
895 false,
896 true,
897 false,
898 // expected result
899 true,
901 { // proxy flags
902 true,
903 true,
904 false,
905 // is https request
906 false,
907 // proxies in retry map
908 true,
909 false,
910 false,
911 false,
912 false,
913 // expected result
914 false,
916 { // proxy flags
917 true,
918 true,
919 false,
920 // is https request
921 false,
922 // proxies in retry map
923 true,
924 true,
925 false,
926 false,
927 false,
928 // expected result
929 true,
931 { // proxy flags
932 true,
933 true,
934 true,
935 // is https request
936 false,
937 // proxies in retry map
938 true,
939 true,
940 false,
941 false,
942 false,
943 // expected result
944 true,
946 { // proxy flags
947 true,
948 true,
949 true,
950 // is https request
951 false,
952 // proxies in retry map
953 true,
954 false,
955 true,
956 false,
957 false,
958 // expected result
959 false,
961 { // proxy flags
962 true,
963 true,
964 true,
965 // is https request
966 false,
967 // proxies in retry map
968 false,
969 false,
970 true,
971 true,
972 false,
973 // expected result
974 true,
976 { // proxy flags
977 false,
978 true,
979 true,
980 // is https request
981 false,
982 // proxies in retry map
983 false,
984 false,
985 true,
986 true,
987 false,
988 // expected result
989 true,
991 { // proxy flags
992 false,
993 true,
994 false,
995 // is https request
996 false,
997 // proxies in retry map
998 false,
999 false,
1000 true,
1001 false,
1002 false,
1003 // expected result
1004 false,
1006 { // proxy flags
1007 true,
1008 true,
1009 true,
1010 // is https request
1011 false,
1012 // proxies in retry map
1013 true,
1014 false,
1015 true,
1016 true,
1017 false,
1018 // expected result
1019 true,
1021 { // proxy flags
1022 true,
1023 true,
1024 true,
1025 // is https request
1026 false,
1027 // proxies in retry map
1028 true,
1029 true,
1030 true,
1031 true,
1032 true,
1033 // expected result
1034 true,
1036 { // proxy flags
1037 true,
1038 true,
1039 true,
1040 // is https request
1041 true,
1042 // proxies in retry map
1043 true,
1044 true,
1045 true,
1046 true,
1047 true,
1048 // expected result
1049 true,
1051 { // proxy flags
1052 true,
1053 true,
1054 true,
1055 // is https request
1056 true,
1057 // proxies in retry map
1058 true,
1059 true,
1060 true,
1061 true,
1062 false,
1063 // expected result
1064 false,
1068 // The retry map has the scheme prefix for https but not for http.
1069 std::string origin = GetRetryMapKeyFromOrigin(
1070 TestDataReductionProxyParams::DefaultOrigin());
1071 std::string fallback_origin =GetRetryMapKeyFromOrigin(
1072 TestDataReductionProxyParams::DefaultFallbackOrigin());
1073 std::string alt_origin = GetRetryMapKeyFromOrigin(
1074 TestDataReductionProxyParams::DefaultAltOrigin());
1075 std::string alt_fallback_origin = GetRetryMapKeyFromOrigin(
1076 TestDataReductionProxyParams::DefaultAltFallbackOrigin());
1077 std::string ssl_origin = GetRetryMapKeyFromOrigin(
1078 TestDataReductionProxyParams::DefaultSSLOrigin());
1080 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) {
1081 int flags = 0;
1082 if (tests[i].allowed)
1083 flags |= DataReductionProxyParams::kAllowed;
1084 if (tests[i].alt_allowed)
1085 flags |= DataReductionProxyParams::kAlternativeAllowed;
1086 if (tests[i].fallback_allowed)
1087 flags |= DataReductionProxyParams::kFallbackAllowed;
1088 unsigned int has_definitions =
1089 TestDataReductionProxyParams::HAS_EVERYTHING &
1090 ~TestDataReductionProxyParams::HAS_DEV_ORIGIN &
1091 ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN;
1092 TestDataReductionProxyParams params(flags, has_definitions);
1094 net::ProxyRetryInfoMap retry_map;
1095 net::ProxyRetryInfo retry_info;
1097 if (tests[i].origin)
1098 retry_map[origin] = retry_info;
1099 if (tests[i].fallback_origin)
1100 retry_map[fallback_origin] = retry_info;
1101 if (tests[i].alt_origin)
1102 retry_map[alt_origin] = retry_info;
1103 if (tests[i].alt_fallback_origin)
1104 retry_map[alt_fallback_origin] = retry_info;
1105 if (tests[i].ssl_origin)
1106 retry_map[ssl_origin] = retry_info;
1108 bool was_bypassed = params.AreProxiesBypassed(retry_map,
1109 tests[i].is_https,
1110 NULL);
1112 EXPECT_EQ(tests[i].expected_result, was_bypassed);
1115 } // namespace data_reduction_proxy