OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_netw
ork_delegate.h" | 5 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_netw
ork_delegate.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 const Client kClient = Client::UNKNOWN; | 94 const Client kClient = Client::UNKNOWN; |
95 #endif | 95 #endif |
96 | 96 |
97 class TestLoFiDecider : public LoFiDecider { | 97 class TestLoFiDecider : public LoFiDecider { |
98 public: | 98 public: |
99 TestLoFiDecider() | 99 TestLoFiDecider() |
100 : should_request_lofi_resource_(false), | 100 : should_request_lofi_resource_(false), |
101 ignore_is_using_data_reduction_proxy_check_(false) {} | 101 ignore_is_using_data_reduction_proxy_check_(false) {} |
102 ~TestLoFiDecider() override {} | 102 ~TestLoFiDecider() override {} |
103 | 103 |
104 bool IsUsingLoFiMode(const net::URLRequest& request) const override { | 104 bool IsUsingLoFi(const net::URLRequest& request) const override { |
105 return should_request_lofi_resource_; | 105 return should_request_lofi_resource_; |
106 } | 106 } |
107 | 107 |
108 void SetIsUsingLoFiMode(bool should_request_lofi_resource) { | 108 void SetIsUsingLoFi(bool should_request_lofi_resource) { |
109 should_request_lofi_resource_ = should_request_lofi_resource; | 109 should_request_lofi_resource_ = should_request_lofi_resource; |
110 } | 110 } |
111 | 111 |
112 void MaybeSetAcceptTransformHeader( | 112 void MaybeSetAcceptTransformHeader( |
113 const net::URLRequest& request, | 113 const net::URLRequest& request, |
114 bool is_previews_disabled, | 114 bool is_previews_disabled, |
115 net::HttpRequestHeaders* headers) const override { | 115 net::HttpRequestHeaders* headers) const override { |
116 if (should_request_lofi_resource_) { | 116 if (should_request_lofi_resource_) { |
117 headers->SetHeader(chrome_proxy_accept_transform_header(), | 117 headers->SetHeader(chrome_proxy_accept_transform_header(), |
118 empty_image_directive()); | 118 empty_image_directive()); |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 | 516 |
517 { | 517 { |
518 // Main frame loaded. Lo-Fi should be used. | 518 // Main frame loaded. Lo-Fi should be used. |
519 net::HttpRequestHeaders headers; | 519 net::HttpRequestHeaders headers; |
520 net::ProxyRetryInfoMap proxy_retry_info; | 520 net::ProxyRetryInfoMap proxy_retry_info; |
521 | 521 |
522 net::TestDelegate delegate; | 522 net::TestDelegate delegate; |
523 std::unique_ptr<net::URLRequest> fake_request = | 523 std::unique_ptr<net::URLRequest> fake_request = |
524 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); | 524 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); |
525 fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); | 525 fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); |
526 lofi_decider()->SetIsUsingLoFiMode( | 526 lofi_decider()->SetIsUsingLoFi( |
527 config()->ShouldEnableLoFiMode(*fake_request.get())); | 527 config()->ShouldEnableLoFi(*fake_request.get())); |
528 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, | 528 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, |
529 proxy_retry_info, &headers); | 529 proxy_retry_info, &headers); |
530 | 530 |
531 VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers); | 531 VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers); |
532 VerifyDataReductionProxyData( | 532 VerifyDataReductionProxyData( |
533 *fake_request, tests[i].is_data_reduction_proxy, | 533 *fake_request, tests[i].is_data_reduction_proxy, |
534 config()->ShouldEnableLoFiMode(*fake_request.get())); | 534 config()->ShouldEnableLoFi(*fake_request.get())); |
535 } | 535 } |
536 | 536 |
537 { | 537 { |
538 // Lo-Fi is already off. Lo-Fi should not be used. | 538 // Lo-Fi is already off. Lo-Fi should not be used. |
539 net::HttpRequestHeaders headers; | 539 net::HttpRequestHeaders headers; |
540 net::ProxyRetryInfoMap proxy_retry_info; | 540 net::ProxyRetryInfoMap proxy_retry_info; |
541 net::TestDelegate delegate; | 541 net::TestDelegate delegate; |
542 std::unique_ptr<net::URLRequest> fake_request = | 542 std::unique_ptr<net::URLRequest> fake_request = |
543 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); | 543 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); |
544 lofi_decider()->SetIsUsingLoFiMode(false); | 544 lofi_decider()->SetIsUsingLoFi(false); |
545 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, | 545 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, |
546 proxy_retry_info, &headers); | 546 proxy_retry_info, &headers); |
547 VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers); | 547 VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers); |
548 VerifyDataReductionProxyData(*fake_request, | 548 VerifyDataReductionProxyData(*fake_request, |
549 tests[i].is_data_reduction_proxy, false); | 549 tests[i].is_data_reduction_proxy, false); |
550 } | 550 } |
551 | 551 |
552 { | 552 { |
553 // Lo-Fi is already on. Lo-Fi should be used. | 553 // Lo-Fi is already on. Lo-Fi should be used. |
554 net::HttpRequestHeaders headers; | 554 net::HttpRequestHeaders headers; |
555 net::ProxyRetryInfoMap proxy_retry_info; | 555 net::ProxyRetryInfoMap proxy_retry_info; |
556 net::TestDelegate delegate; | 556 net::TestDelegate delegate; |
557 std::unique_ptr<net::URLRequest> fake_request = | 557 std::unique_ptr<net::URLRequest> fake_request = |
558 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); | 558 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); |
559 | 559 |
560 lofi_decider()->SetIsUsingLoFiMode(true); | 560 lofi_decider()->SetIsUsingLoFi(true); |
561 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, | 561 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, |
562 proxy_retry_info, &headers); | 562 proxy_retry_info, &headers); |
563 VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers); | 563 VerifyHeaders(tests[i].is_data_reduction_proxy, true, headers); |
564 VerifyDataReductionProxyData(*fake_request, | 564 VerifyDataReductionProxyData(*fake_request, |
565 tests[i].is_data_reduction_proxy, true); | 565 tests[i].is_data_reduction_proxy, true); |
566 } | 566 } |
567 | 567 |
568 { | 568 { |
569 // Main frame request with Lo-Fi off. Lo-Fi should not be used. | 569 // Main frame request with Lo-Fi off. Lo-Fi should not be used. |
570 // State of Lo-Fi should persist until next page load. | 570 // State of Lo-Fi should persist until next page load. |
571 net::HttpRequestHeaders headers; | 571 net::HttpRequestHeaders headers; |
572 net::ProxyRetryInfoMap proxy_retry_info; | 572 net::ProxyRetryInfoMap proxy_retry_info; |
573 net::TestDelegate delegate; | 573 net::TestDelegate delegate; |
574 std::unique_ptr<net::URLRequest> fake_request = | 574 std::unique_ptr<net::URLRequest> fake_request = |
575 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); | 575 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); |
576 fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); | 576 fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); |
577 lofi_decider()->SetIsUsingLoFiMode(false); | 577 lofi_decider()->SetIsUsingLoFi(false); |
578 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, | 578 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, |
579 proxy_retry_info, &headers); | 579 proxy_retry_info, &headers); |
580 VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers); | 580 VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers); |
581 VerifyDataReductionProxyData(*fake_request, | 581 VerifyDataReductionProxyData(*fake_request, |
582 tests[i].is_data_reduction_proxy, false); | 582 tests[i].is_data_reduction_proxy, false); |
583 } | 583 } |
584 | 584 |
585 { | 585 { |
586 // Lo-Fi is off. Lo-Fi is still not used. | 586 // Lo-Fi is off. Lo-Fi is still not used. |
587 net::HttpRequestHeaders headers; | 587 net::HttpRequestHeaders headers; |
588 net::ProxyRetryInfoMap proxy_retry_info; | 588 net::ProxyRetryInfoMap proxy_retry_info; |
589 net::TestDelegate delegate; | 589 net::TestDelegate delegate; |
590 std::unique_ptr<net::URLRequest> fake_request = | 590 std::unique_ptr<net::URLRequest> fake_request = |
591 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); | 591 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); |
592 lofi_decider()->SetIsUsingLoFiMode(false); | 592 lofi_decider()->SetIsUsingLoFi(false); |
593 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, | 593 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, |
594 proxy_retry_info, &headers); | 594 proxy_retry_info, &headers); |
595 VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers); | 595 VerifyHeaders(tests[i].is_data_reduction_proxy, false, headers); |
596 VerifyDataReductionProxyData(*fake_request, | 596 VerifyDataReductionProxyData(*fake_request, |
597 tests[i].is_data_reduction_proxy, false); | 597 tests[i].is_data_reduction_proxy, false); |
598 } | 598 } |
599 | 599 |
600 { | 600 { |
601 // Main frame request. Lo-Fi should be used. | 601 // Main frame request. Lo-Fi should be used. |
602 net::HttpRequestHeaders headers; | 602 net::HttpRequestHeaders headers; |
603 net::ProxyRetryInfoMap proxy_retry_info; | 603 net::ProxyRetryInfoMap proxy_retry_info; |
604 net::TestDelegate delegate; | 604 net::TestDelegate delegate; |
605 std::unique_ptr<net::URLRequest> fake_request = | 605 std::unique_ptr<net::URLRequest> fake_request = |
606 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); | 606 context()->CreateRequest(GURL(kTestURL), net::IDLE, &delegate); |
607 fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); | 607 fake_request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); |
608 lofi_decider()->SetIsUsingLoFiMode( | 608 lofi_decider()->SetIsUsingLoFi( |
609 config()->ShouldEnableLoFiMode(*fake_request.get())); | 609 config()->ShouldEnableLoFi(*fake_request.get())); |
610 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, | 610 NotifyNetworkDelegate(fake_request.get(), data_reduction_proxy_info, |
611 proxy_retry_info, &headers); | 611 proxy_retry_info, &headers); |
612 VerifyDataReductionProxyData( | 612 VerifyDataReductionProxyData( |
613 *fake_request, tests[i].is_data_reduction_proxy, | 613 *fake_request, tests[i].is_data_reduction_proxy, |
614 config()->ShouldEnableLoFiMode(*fake_request.get())); | 614 config()->ShouldEnableLoFi(*fake_request.get())); |
615 } | 615 } |
616 } | 616 } |
617 } | 617 } |
618 | 618 |
619 TEST_F(DataReductionProxyNetworkDelegateTest, RequestDataConfigurations) { | 619 TEST_F(DataReductionProxyNetworkDelegateTest, RequestDataConfigurations) { |
620 Init(false, false); | 620 Init(false, false); |
621 const struct { | 621 const struct { |
622 bool lofi_on; | 622 bool lofi_on; |
623 bool used_data_reduction_proxy; | 623 bool used_data_reduction_proxy; |
624 bool main_frame; | 624 bool main_frame; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
657 | 657 |
658 net::TestNetworkQualityEstimator test_network_quality_estimator; | 658 net::TestNetworkQualityEstimator test_network_quality_estimator; |
659 test_network_quality_estimator.set_effective_connection_type( | 659 test_network_quality_estimator.set_effective_connection_type( |
660 net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); | 660 net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); |
661 context()->set_network_quality_estimator(&test_network_quality_estimator); | 661 context()->set_network_quality_estimator(&test_network_quality_estimator); |
662 | 662 |
663 std::unique_ptr<net::URLRequest> request = context()->CreateRequest( | 663 std::unique_ptr<net::URLRequest> request = context()->CreateRequest( |
664 GURL(kTestURL), net::RequestPriority::IDLE, nullptr); | 664 GURL(kTestURL), net::RequestPriority::IDLE, nullptr); |
665 request->SetLoadFlags(test.main_frame ? net::LOAD_MAIN_FRAME_DEPRECATED | 665 request->SetLoadFlags(test.main_frame ? net::LOAD_MAIN_FRAME_DEPRECATED |
666 : 0); | 666 : 0); |
667 lofi_decider()->SetIsUsingLoFiMode(test.lofi_on); | 667 lofi_decider()->SetIsUsingLoFi(test.lofi_on); |
668 io_data()->request_options()->SetSecureSession("fake-session"); | 668 io_data()->request_options()->SetSecureSession("fake-session"); |
669 network_delegate()->NotifyBeforeSendHeaders( | 669 network_delegate()->NotifyBeforeSendHeaders( |
670 request.get(), data_reduction_proxy_info, proxy_retry_info, &headers); | 670 request.get(), data_reduction_proxy_info, proxy_retry_info, &headers); |
671 DataReductionProxyData* data = | 671 DataReductionProxyData* data = |
672 DataReductionProxyData::GetData(*request.get()); | 672 DataReductionProxyData::GetData(*request.get()); |
673 if (!test.used_data_reduction_proxy) { | 673 if (!test.used_data_reduction_proxy) { |
674 EXPECT_FALSE(data); | 674 EXPECT_FALSE(data); |
675 } else { | 675 } else { |
676 EXPECT_TRUE(data); | 676 EXPECT_TRUE(data); |
677 EXPECT_EQ(test.main_frame ? net::EFFECTIVE_CONNECTION_TYPE_OFFLINE | 677 EXPECT_EQ(test.main_frame ? net::EFFECTIVE_CONNECTION_TYPE_OFFLINE |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
745 net::ProxyRetryInfoMap proxy_retry_info; | 745 net::ProxyRetryInfoMap proxy_retry_info; |
746 | 746 |
747 net::TestNetworkQualityEstimator test_network_quality_estimator; | 747 net::TestNetworkQualityEstimator test_network_quality_estimator; |
748 test_network_quality_estimator.set_effective_connection_type( | 748 test_network_quality_estimator.set_effective_connection_type( |
749 net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); | 749 net::EFFECTIVE_CONNECTION_TYPE_OFFLINE); |
750 context()->set_network_quality_estimator(&test_network_quality_estimator); | 750 context()->set_network_quality_estimator(&test_network_quality_estimator); |
751 | 751 |
752 std::unique_ptr<net::URLRequest> request = context()->CreateRequest( | 752 std::unique_ptr<net::URLRequest> request = context()->CreateRequest( |
753 GURL(kTestURL), net::RequestPriority::IDLE, nullptr); | 753 GURL(kTestURL), net::RequestPriority::IDLE, nullptr); |
754 request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); | 754 request->SetLoadFlags(net::LOAD_MAIN_FRAME_DEPRECATED); |
755 lofi_decider()->SetIsUsingLoFiMode(true); | 755 lofi_decider()->SetIsUsingLoFi(true); |
756 io_data()->request_options()->SetSecureSession("fake-session"); | 756 io_data()->request_options()->SetSecureSession("fake-session"); |
757 network_delegate()->NotifyBeforeSendHeaders( | 757 network_delegate()->NotifyBeforeSendHeaders( |
758 request.get(), data_reduction_proxy_info, proxy_retry_info, &headers); | 758 request.get(), data_reduction_proxy_info, proxy_retry_info, &headers); |
759 DataReductionProxyData* data = | 759 DataReductionProxyData* data = |
760 DataReductionProxyData::GetData(*request.get()); | 760 DataReductionProxyData::GetData(*request.get()); |
761 | 761 |
762 EXPECT_TRUE(data); | 762 EXPECT_TRUE(data); |
763 EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_OFFLINE, | 763 EXPECT_EQ(net::EFFECTIVE_CONNECTION_TYPE_OFFLINE, |
764 data->effective_connection_type()); | 764 data->effective_connection_type()); |
765 EXPECT_TRUE(data->used_data_reduction_proxy()); | 765 EXPECT_TRUE(data->used_data_reduction_proxy()); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), | 891 base::FieldTrialList::CreateFieldTrial(params::GetLoFiFieldTrialName(), |
892 "Enabled"); | 892 "Enabled"); |
893 } | 893 } |
894 | 894 |
895 if (tests[i].lofi_enabled_through_switch) { | 895 if (tests[i].lofi_enabled_through_switch) { |
896 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 896 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
897 switches::kDataReductionProxyLoFi, | 897 switches::kDataReductionProxyLoFi, |
898 switches::kDataReductionProxyLoFiValueAlwaysOn); | 898 switches::kDataReductionProxyLoFiValueAlwaysOn); |
899 } | 899 } |
900 | 900 |
901 lofi_decider()->SetIsUsingLoFiMode( | 901 lofi_decider()->SetIsUsingLoFi( |
902 config()->ShouldEnableLoFiMode(*fake_request.get())); | 902 config()->ShouldEnableLoFi(*fake_request.get())); |
903 | 903 |
904 fake_request = (FetchURLRequest(GURL(kTestURL), nullptr, response_headers, | 904 fake_request = (FetchURLRequest(GURL(kTestURL), nullptr, response_headers, |
905 kResponseContentLength)); | 905 kResponseContentLength)); |
906 fake_request->SetLoadFlags(fake_request->load_flags() | | 906 fake_request->SetLoadFlags(fake_request->load_flags() | |
907 net::LOAD_MAIN_FRAME_DEPRECATED); | 907 net::LOAD_MAIN_FRAME_DEPRECATED); |
908 | 908 |
909 // Histograms are accumulative, so get the sum of all the tests so far. | 909 // Histograms are accumulative, so get the sum of all the tests so far. |
910 int expected_count = 0; | 910 int expected_count = 0; |
911 for (size_t j = 0; j <= i; ++j) | 911 for (size_t j = 0; j <= i; ++j) |
912 expected_count += tests[j].expected_count; | 912 expected_count += tests[j].expected_count; |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1071 "Vary: accept-encoding\r\n"; | 1071 "Vary: accept-encoding\r\n"; |
1072 response_headers += "\r\n"; | 1072 response_headers += "\r\n"; |
1073 | 1073 |
1074 FetchURLRequestAndVerifyBrotli(nullptr, response_headers, false, true); | 1074 FetchURLRequestAndVerifyBrotli(nullptr, response_headers, false, true); |
1075 FetchURLRequestAndVerifyBrotli(nullptr, response_headers, true, true); | 1075 FetchURLRequestAndVerifyBrotli(nullptr, response_headers, true, true); |
1076 } | 1076 } |
1077 | 1077 |
1078 } // namespace | 1078 } // namespace |
1079 | 1079 |
1080 } // namespace data_reduction_proxy | 1080 } // namespace data_reduction_proxy |
OLD | NEW |