| Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
|
| diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
|
| index e3cdd49dbd9f1f5f04f543d72bef4721ec9eef32..360042176a44429743a14c688467f6cd821baae5 100644
|
| --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
|
| +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats_unittest.cc
|
| @@ -10,6 +10,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/metrics/histogram.h"
|
| #include "base/test/histogram_tester.h"
|
| +#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h"
|
| #include "components/data_reduction_proxy/core/common/data_reduction_proxy_headers_test_utils.h"
|
| #include "net/base/host_port_pair.h"
|
| #include "net/base/load_flags.h"
|
| @@ -57,8 +58,7 @@ class DataReductionProxyUsageStatsTest : public testing::Test {
|
| public:
|
| DataReductionProxyUsageStatsTest()
|
| : loop_proxy_(base::MessageLoopProxy::current().get()),
|
| - context_(true),
|
| - unavailable_(false) {
|
| + context_(true) {
|
| context_.Init();
|
|
|
| // The |test_job_factory_| takes ownership of the interceptor.
|
| @@ -70,10 +70,8 @@ class DataReductionProxyUsageStatsTest : public testing::Test {
|
|
|
| mock_url_request_ = context_.CreateRequest(GURL(), net::IDLE, &delegate_,
|
| NULL);
|
| - }
|
| -
|
| - void NotifyUnavailable(bool unavailable) {
|
| - unavailable_ = unavailable;
|
| + settings_.reset(new DataReductionProxySettings(
|
| + new DataReductionProxyParamsMock()));
|
| }
|
|
|
| scoped_ptr<net::URLRequest> CreateURLRequestWithResponseHeaders(
|
| @@ -98,6 +96,10 @@ class DataReductionProxyUsageStatsTest : public testing::Test {
|
| return fake_request.Pass();
|
| }
|
|
|
| + bool IsUnreachable() const {
|
| + return settings_->IsDataReductionProxyUnreachable();
|
| + }
|
| +
|
| // Required for base::MessageLoopProxy::current().
|
| base::MessageLoopForUI loop_;
|
| base::MessageLoopProxy* loop_proxy_;
|
| @@ -110,7 +112,7 @@ class DataReductionProxyUsageStatsTest : public testing::Test {
|
| // |test_job_interceptor_| is owned by |test_job_factory_|.
|
| net::TestJobInterceptor* test_job_interceptor_;
|
| net::URLRequestJobFactoryImpl test_job_factory_;
|
| - bool unavailable_;
|
| + scoped_ptr<DataReductionProxySettings> settings_;
|
| };
|
|
|
| TEST_F(DataReductionProxyUsageStatsTest, IsDataReductionProxyUnreachable) {
|
| @@ -155,18 +157,15 @@ TEST_F(DataReductionProxyUsageStatsTest, IsDataReductionProxyUnreachable) {
|
| .WillRepeatedly(testing::Return(test_case.was_proxy_used));
|
|
|
| scoped_ptr<DataReductionProxyUsageStats> usage_stats(
|
| - new DataReductionProxyUsageStats(
|
| - &mock_params_, loop_proxy_));
|
| - usage_stats->set_unavailable_callback(
|
| - base::Bind(&DataReductionProxyUsageStatsTest::NotifyUnavailable,
|
| - base::Unretained(this)));
|
| + new DataReductionProxyUsageStats(&mock_params_, settings_.get(),
|
| + loop_proxy_));
|
|
|
| usage_stats->OnProxyFallback(fallback_proxy_server,
|
| net::ERR_PROXY_CONNECTION_FAILED);
|
| usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false);
|
| base::MessageLoop::current()->RunUntilIdle();
|
|
|
| - EXPECT_EQ(test_case.is_unreachable, unavailable_);
|
| + EXPECT_EQ(test_case.is_unreachable, IsUnreachable());
|
| }
|
| }
|
|
|
| @@ -174,12 +173,8 @@ TEST_F(DataReductionProxyUsageStatsTest, ProxyUnreachableThenReachable) {
|
| net::ProxyServer fallback_proxy_server =
|
| net::ProxyServer::FromURI("foo.com", net::ProxyServer::SCHEME_HTTP);
|
| scoped_ptr<DataReductionProxyUsageStats> usage_stats(
|
| - new DataReductionProxyUsageStats(
|
| - &mock_params_, loop_proxy_));
|
| - usage_stats->set_unavailable_callback(
|
| - base::Bind(&DataReductionProxyUsageStatsTest::NotifyUnavailable,
|
| - base::Unretained(this)));
|
| -
|
| + new DataReductionProxyUsageStats(&mock_params_, settings_.get(),
|
| + loop_proxy_));
|
| EXPECT_CALL(mock_params_, IsDataReductionProxy(testing::_, testing::_))
|
| .WillOnce(testing::Return(true));
|
| EXPECT_CALL(mock_params_,
|
| @@ -190,23 +185,20 @@ TEST_F(DataReductionProxyUsageStatsTest, ProxyUnreachableThenReachable) {
|
| usage_stats->OnProxyFallback(fallback_proxy_server,
|
| net::ERR_PROXY_CONNECTION_FAILED);
|
| base::MessageLoop::current()->RunUntilIdle();
|
| - EXPECT_TRUE(unavailable_);
|
| + EXPECT_TRUE(IsUnreachable());
|
|
|
| // proxy succeeds
|
| usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false);
|
| base::MessageLoop::current()->RunUntilIdle();
|
| - EXPECT_FALSE(unavailable_);
|
| + EXPECT_FALSE(IsUnreachable());
|
| }
|
|
|
| TEST_F(DataReductionProxyUsageStatsTest, ProxyReachableThenUnreachable) {
|
| net::ProxyServer fallback_proxy_server =
|
| net::ProxyServer::FromURI("foo.com", net::ProxyServer::SCHEME_HTTP);
|
| scoped_ptr<DataReductionProxyUsageStats> usage_stats(
|
| - new DataReductionProxyUsageStats(
|
| - &mock_params_, loop_proxy_));
|
| - usage_stats->set_unavailable_callback(
|
| - base::Bind(&DataReductionProxyUsageStatsTest::NotifyUnavailable,
|
| - base::Unretained(this)));
|
| + new DataReductionProxyUsageStats(&mock_params_, settings_.get(),
|
| + loop_proxy_));
|
| EXPECT_CALL(mock_params_,
|
| WasDataReductionProxyUsed(mock_url_request_.get(), testing::_))
|
| .WillOnce(testing::Return(true));
|
| @@ -216,19 +208,19 @@ TEST_F(DataReductionProxyUsageStatsTest, ProxyReachableThenUnreachable) {
|
| // Proxy succeeds.
|
| usage_stats->OnUrlRequestCompleted(mock_url_request_.get(), false);
|
| base::MessageLoop::current()->RunUntilIdle();
|
| - EXPECT_FALSE(unavailable_);
|
| + EXPECT_FALSE(IsUnreachable());
|
|
|
| // Then proxy falls back indefinitely.
|
| usage_stats->OnProxyFallback(fallback_proxy_server,
|
| net::ERR_PROXY_CONNECTION_FAILED);
|
| usage_stats->OnProxyFallback(fallback_proxy_server,
|
| - net::ERR_PROXY_CONNECTION_FAILED);
|
| + net::ERR_PROXY_CONNECTION_FAILED);
|
| usage_stats->OnProxyFallback(fallback_proxy_server,
|
| - net::ERR_PROXY_CONNECTION_FAILED);
|
| + net::ERR_PROXY_CONNECTION_FAILED);
|
| usage_stats->OnProxyFallback(fallback_proxy_server,
|
| - net::ERR_PROXY_CONNECTION_FAILED);
|
| + net::ERR_PROXY_CONNECTION_FAILED);
|
| base::MessageLoop::current()->RunUntilIdle();
|
| - EXPECT_TRUE(unavailable_);
|
| + EXPECT_TRUE(IsUnreachable());
|
| }
|
|
|
| TEST_F(DataReductionProxyUsageStatsTest,
|
| @@ -410,7 +402,8 @@ TEST_F(DataReductionProxyUsageStatsTest, RecordMissingViaHeaderBytes) {
|
| for (size_t i = 0; i < arraysize(test_cases); ++i) {
|
| base::HistogramTester histogram_tester;
|
| scoped_ptr<DataReductionProxyUsageStats> usage_stats(
|
| - new DataReductionProxyUsageStats(&mock_params_, loop_proxy_));
|
| + new DataReductionProxyUsageStats(&mock_params_, settings_.get(),
|
| + loop_proxy_));
|
|
|
| std::string raw_headers(test_cases[i].headers);
|
| HeadersToRaw(&raw_headers);
|
| @@ -475,7 +468,8 @@ TEST_F(DataReductionProxyUsageStatsTest, RequestCompletionErrorCodes) {
|
| for (size_t i = 0; i < arraysize(test_cases); ++i) {
|
| base::HistogramTester histogram_tester;
|
| scoped_ptr<DataReductionProxyUsageStats> usage_stats(
|
| - new DataReductionProxyUsageStats(&mock_params_, loop_proxy_));
|
| + new DataReductionProxyUsageStats(&mock_params_, settings_.get(),
|
| + loop_proxy_));
|
|
|
| std::string raw_headers("HTTP/1.1 200 OK\n"
|
| "Via: 1.1 Chrome-Compression-Proxy\n");
|
|
|