Chromium Code Reviews| Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h |
| diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h |
| index 370ff80118f496973e54a8422448bd38e170994f..c6d247b7371aa784200810430363557790abb92f 100644 |
| --- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h |
| +++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h |
| @@ -2,53 +2,108 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -#ifndef COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_CONFIGURATOR_H_ |
| -#define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_CONFIGURATOR_H_ |
| +#ifndef COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_CONFIGURATOR_ |
|
sclittle
2014/12/30 22:10:41
Why no "_H_"?
bengr
2014/12/30 23:22:29
Whoa. Done.
|
| +#define COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_CONFIGURATOR_ |
| #include <string> |
| +#include <vector> |
| -#include "base/macros.h" |
| +#include "base/gtest_prod_util.h" |
| +#include "base/task_runner.h" |
| +#include "net/proxy/proxy_config.h" |
| + |
| +namespace base { |
| +class SequencedTaskRunner; |
| +} |
| + |
| +namespace net { |
| +class NetLog; |
| +class ProxyInfo; |
| +class ProxyService; |
| +} |
| + |
| +class PrefService; |
| namespace data_reduction_proxy { |
| -// Interface for enabling and disabling the data reduction proxy configuration, |
| -// and for adding bypass rules. This is the interface that is used to set the |
| -// networking configuration that causes traffic to be proxied. |
| +class DataReductionProxyEventStore; |
| + |
| class DataReductionProxyConfigurator { |
| public: |
| - DataReductionProxyConfigurator() {} |
| - virtual ~DataReductionProxyConfigurator() {} |
| - |
| - // Enable the data reduction proxy. If |primary_restricted|, the |
| - // |primary_origin| may not be used. If |fallback_restricted|, the |
| - // |fallback_origin| may not be used. If both are restricted, then the |
| - // proxy configuration will be the same as when |Disable()| is called. |
| - // If |ssl_origin| is non-empty, it will be used used for HTTPS traffic. |
| + // Check whether the |proxy_rules| contain any of the data reduction proxies. |
| + static bool ContainsDataReductionProxy( |
| + const net::ProxyConfig::ProxyRules& proxy_rules); |
| + |
| + // Constructs a configurator. |network_task_runner| should be the task runner |
| + // for running network operations, |net_log| and |event_store| are used to |
| + // track network and Data Reduction Proxy events respectively, must not be |
| + // null, and must outlive this instance. |
| + DataReductionProxyConfigurator( |
| + scoped_refptr<base::SequencedTaskRunner> network_task_runner, |
| + net::NetLog* net_log, |
| + data_reduction_proxy::DataReductionProxyEventStore* event_store); |
| + |
| + virtual ~DataReductionProxyConfigurator(); |
| + |
| + void set_net_log(net::NetLog* net_log) { |
| + DCHECK(!net_log_); |
| + net_log_ = net_log; |
| + DCHECK(net_log_); |
| + } |
| + |
| + // Constructs a proxy configuration suitable for enabling the Data Reduction |
| + // proxy. |
| virtual void Enable(bool primary_restricted, |
| - bool fallback_restricted, |
| - const std::string& primary_origin, |
| - const std::string& fallback_origin, |
| - const std::string& ssl_origin) = 0; |
| + bool fallback_restricted, |
|
sclittle
2014/12/30 22:10:41
indentation is off
bengr
2014/12/30 23:22:29
Done.
|
| + const std::string& primary_origin, |
| + const std::string& fallback_origin, |
| + const std::string& ssl_origin); |
| - // Disable the data reduction proxy. |
| - virtual void Disable() = 0; |
| + // Constructs a proxy configuration suitable for disabling the Data Reduction |
| + // proxy. |
| + virtual void Disable(); |
| // Adds a host pattern to bypass. This should follow the same syntax used |
| // in net::ProxyBypassRules; that is, a hostname pattern, a hostname suffix |
| // pattern, an IP literal, a CIDR block, or the magic string '<local>'. |
| // Bypass settings persist for the life of this object and are applied |
| // each time the proxy is enabled, but are not updated while it is enabled. |
| - virtual void AddHostPatternToBypass(const std::string& pattern) = 0; |
| + virtual void AddHostPatternToBypass(const std::string& pattern); |
| // Adds a URL pattern to bypass the proxy. The base implementation strips |
| // everything in |pattern| after the first single slash and then treats it |
| // as a hostname pattern. |
| - virtual void AddURLPatternToBypass(const std::string& pattern) = 0; |
| + virtual void AddURLPatternToBypass(const std::string& pattern); |
| + |
| + // Updates the config for use on the IO thread. |
| + void UpdateProxyConfigOnIOThread(const net::ProxyConfig& config); |
| + |
| + // Returns the current data reduction proxy config, even if it is not the |
| + // effective configuration used by the proxy service. |
| + const net::ProxyConfig& GetProxyConfigOnIOThread() const; |
| private: |
| + FRIEND_TEST_ALL_PREFIXES(DataReductionProxyConfigTest, TestBypassList); |
| + |
| + // Used for updating the proxy config on the IO thread. |
| + scoped_refptr<base::SequencedTaskRunner> network_task_runner_; |
| + |
| + // Rules for bypassing the Data Reduction Proxy. |
| + std::vector<std::string> bypass_rules_; |
| + |
| + // The Data Reduction Proxy's configuration. This contains the list of |
| + // acceptable data reduction proxies and bypass rules. It should be accessed |
| + // only on the IO thread. |
| + net::ProxyConfig config_; |
| + |
| + // Used for logging of network- and Data Reduction Proxy-related events. |
| + net::NetLog* net_log_; |
| + data_reduction_proxy::DataReductionProxyEventStore* |
| + data_reduction_proxy_event_store_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(DataReductionProxyConfigurator); |
| }; |
| } // namespace data_reduction_proxy |
| -#endif // COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_CONFIGURATOR_H_ |
| +#endif // COMPONENTS_DATA_REDUCTION_PROXY_CORE_BROWSER_DATA_REDUCTION_PROXY_CONFIGURATOR_ |