Chromium Code Reviews| Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h |
| diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h |
| index 9e0695ef81331edf00f401b104e8ddd418de5456..10b7260d5f42e1f33928bcc0fb58d6bbb696d320 100644 |
| --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h |
| +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h |
| @@ -11,12 +11,15 @@ |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/single_thread_task_runner.h" |
| +#include "base/time/tick_clock.h" |
| #include "base/time/time.h" |
| +#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_service_client.h" |
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_io_data.h" |
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_request_options.h" |
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h" |
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings_test_utils.h" |
| #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_usage_stats.h" |
| +#include "net/base/backoff_entry.h" |
| #include "net/base/capturing_net_log.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| @@ -38,12 +41,14 @@ namespace data_reduction_proxy { |
| class DataReductionProxyConfigurator; |
| class DataReductionProxyEventStore; |
| +class DataReductionProxyMutableConfigValues; |
| class DataReductionProxyRequestOptions; |
| class DataReductionProxySettings; |
| class DataReductionProxyStatisticsPrefs; |
| class MockDataReductionProxyConfig; |
| class TestDataReductionProxyConfig; |
| class TestDataReductionProxyConfigurator; |
| +class TestDataReductionProxyParams; |
| // Test version of |DataReductionProxyRequestOptions|. |
| class TestDataReductionProxyRequestOptions |
| @@ -83,6 +88,71 @@ class MockDataReductionProxyRequestOptions |
| void(base::DictionaryValue* response)); |
| }; |
| +// Test version of |DataReductionProxyConfigServiceClient|, which permits |
| +// finely controlling the backoff timer. |
| +class TestDataReductionProxyConfigServiceClient |
| + : public DataReductionProxyConfigServiceClient { |
| + public: |
| + TestDataReductionProxyConfigServiceClient( |
| + scoped_ptr<DataReductionProxyParams> params, |
| + DataReductionProxyRequestOptions* request_options, |
| + DataReductionProxyMutableConfigValues* config_values, |
| + DataReductionProxyConfig* config, |
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner); |
| + |
| + ~TestDataReductionProxyConfigServiceClient() override; |
| + |
| + void SetNow(const base::Time& time); |
| + |
| + void SetCustomReleaseTime(const base::TimeTicks& release_time); |
| + |
| + base::TimeDelta GetDelay() const; |
| + |
| + protected: |
| + // Overrides of DataReductionProxyConfigServiceClient |
| + base::Time Now() const override; |
| + const net::BackoffEntry* GetBackoffEntry() const override; |
| + net::BackoffEntry* GetBackoffEntry() override; |
| + |
| + private: |
| + // A base::TickClock which returns a fixed value in both base::Time and |
| + // base::TimeTicks. |
| + class TestTickClock : public base::TickClock { |
| + public: |
| + TestTickClock(const base::Time& initial_time); |
| + |
| + // Override of base::TickClock |
| + base::TimeTicks NowTicks() override; |
|
sclittle
2015/03/25 18:03:56
nit: If you make TestBackoffEntry take in a TestTi
|
| + |
| + // Returns the current base::Time |
| + base::Time Now() const; |
| + |
| + // Sets the current time. |
| + void SetTime(const base::Time& time); |
| + |
| + private: |
| + base::Time time_; |
| + }; |
| + |
| + // A net::BackoffEntry which uses an injected base::TickClock to control |
| + // the backoff expiration time. |
| + class TestBackoffEntry : public net::BackoffEntry { |
| + public: |
| + TestBackoffEntry(const BackoffEntry::Policy* const policy, |
| + base::TickClock* tick_clock); |
| + |
| + protected: |
| + // Override of net::BackoffEntry. |
| + base::TimeTicks ImplGetTimeNow() const override; |
| + |
| + private: |
| + base::TickClock* tick_clock_; |
| + }; |
| + |
| + TestTickClock tick_clock_; |
| + TestBackoffEntry test_backoff_entry_; |
| +}; |
| + |
| // Test version of |DataReductionProxyService|, which permits mocking of various |
| // methods. |
| class MockDataReductionProxyService : public DataReductionProxyService { |
| @@ -105,15 +175,20 @@ class TestDataReductionProxyIOData : public DataReductionProxyIOData { |
| public: |
| TestDataReductionProxyIOData( |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
| - scoped_ptr<TestDataReductionProxyConfig> config, |
| + scoped_ptr<DataReductionProxyConfig> config, |
| scoped_ptr<DataReductionProxyEventStore> event_store, |
| scoped_ptr<DataReductionProxyRequestOptions> request_options, |
| - scoped_ptr<DataReductionProxyConfigurator> configurator); |
| + scoped_ptr<DataReductionProxyConfigurator> configurator, |
| + scoped_ptr<DataReductionProxyConfigServiceClient> config_client); |
| ~TestDataReductionProxyIOData() override; |
| DataReductionProxyConfigurator* configurator() const { |
| return configurator_.get(); |
| } |
| + |
| + DataReductionProxyConfigServiceClient* config_client() const { |
| + return config_client_.get(); |
| + } |
| }; |
| // Builds a test version of the Data Reduction Proxy stack for use in tests. |
| @@ -165,6 +240,13 @@ class DataReductionProxyTestContext { |
| // |DataReductionProxyRequestOptions|. |
| Builder& WithMockRequestOptions(); |
| + // Specifies the use of the |DataReductionProxyConfigServiceClient|. |
| + Builder& WithConfigClient(); |
| + |
| + // Specifies the use of the a |TestDataReductionProxyConfigServiceClient| |
| + // instead of a |DataReductionProxyConfigServiceClient|. |
| + Builder& WithTestConfigClient(); |
| + |
| // Construct, but do not initialize the |DataReductionProxySettings| object. |
| Builder& SkipSettingsInitialization(); |
| @@ -182,6 +264,8 @@ class DataReductionProxyTestContext { |
| bool use_test_configurator_; |
| bool use_mock_service_; |
| bool use_mock_request_options_; |
| + bool use_config_client_; |
| + bool use_test_config_client_; |
| bool skip_settings_initialization_; |
| }; |
| @@ -231,6 +315,17 @@ class DataReductionProxyTestContext { |
| // only be called if built with WithMockRequestOptions. |
| MockDataReductionProxyRequestOptions* mock_request_options() const; |
| + // Returns the underlying |TestDataReductionProxyConfig|. |
| + TestDataReductionProxyConfig* config() const; |
| + |
| + // Returns the underlying |DataReductionProxyMutableConfigValues|. This can |
| + // only be called if built with WithConfigClient. |
| + DataReductionProxyMutableConfigValues* mutable_config_values(); |
| + |
| + // Returns the underlying |TestDataReductionProxyConfigServiceClient|. This |
| + // can only be called if built with WithTestConfigClient. |
| + TestDataReductionProxyConfigServiceClient* test_config_client(); |
| + |
| // Obtains a callback for notifying that the Data Reduction Proxy is no |
| // longer reachable. |
| DataReductionProxyUsageStats::UnreachableCallback |
| @@ -260,10 +355,6 @@ class DataReductionProxyTestContext { |
| return io_data_->configurator(); |
| } |
| - TestDataReductionProxyConfig* config() const { |
| - return reinterpret_cast<TestDataReductionProxyConfig*>(io_data_->config()); |
| - } |
| - |
| TestDataReductionProxyIOData* io_data() const { |
| return io_data_.get(); |
| } |
| @@ -272,6 +363,10 @@ class DataReductionProxyTestContext { |
| return settings_.get(); |
| } |
| + TestDataReductionProxyParams* test_params() const { |
| + return params_; |
| + } |
| + |
| private: |
| enum TestContextOptions { |
| // Permits mocking of the underlying |DataReductionProxyConfig|. |
| @@ -287,6 +382,10 @@ class DataReductionProxyTestContext { |
| USE_MOCK_SERVICE = 0x8, |
| // Permits mocking of the underlying |DataReductionProxyRequestOptions|. |
| USE_MOCK_REQUEST_OPTIONS = 0x10, |
| + // Specifies the use of the |DataReductionProxyConfigServiceClient|. |
| + USE_CONFIG_CLIENT = 0x20, |
| + // Specifies the use of the |TESTDataReductionProxyConfigServiceClient|. |
| + USE_TEST_CONFIG_CLIENT = 0x40, |
| }; |
| DataReductionProxyTestContext( |
| @@ -298,6 +397,7 @@ class DataReductionProxyTestContext { |
| net::MockClientSocketFactory* mock_socket_factory, |
| scoped_ptr<TestDataReductionProxyIOData> io_data, |
| scoped_ptr<DataReductionProxySettings> settings, |
| + TestDataReductionProxyParams* params, |
| unsigned int test_context_flags); |
| void InitSettingsWithoutCheck(); |
| @@ -320,6 +420,8 @@ class DataReductionProxyTestContext { |
| scoped_ptr<TestDataReductionProxyIOData> io_data_; |
| scoped_ptr<DataReductionProxySettings> settings_; |
| + TestDataReductionProxyParams* params_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(DataReductionProxyTestContext); |
| }; |