| 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 |