| Index: components/data_reduction_proxy/browser/data_reduction_proxy_settings.h
|
| diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_settings.h b/components/data_reduction_proxy/browser/data_reduction_proxy_settings.h
|
| index 27bf1588c904c2710bbe5b0bd3d47b891ba498e4..cf0abe105c15062a070d8d7c6abddb28db2e692d 100644
|
| --- a/components/data_reduction_proxy/browser/data_reduction_proxy_settings.h
|
| +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_settings.h
|
| @@ -14,6 +14,7 @@
|
| #include "base/prefs/pref_member.h"
|
| #include "base/threading/thread_checker.h"
|
| #include "components/data_reduction_proxy/browser/data_reduction_proxy_configurator.h"
|
| +#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
|
| #include "net/base/network_change_notifier.h"
|
| #include "net/url_request/url_fetcher_delegate.h"
|
|
|
| @@ -86,34 +87,14 @@ class DataReductionProxySettings
|
| public net::NetworkChangeNotifier::IPAddressObserver {
|
| public:
|
| typedef std::vector<long long> ContentLengthList;
|
| - // TODO(marq): Consider instead using a std::pair instead of a vector.
|
| - typedef std::vector<GURL> DataReductionProxyList;
|
|
|
| - // Returns true of the data reduction proxy origin is set on the command line.
|
| - static bool IsProxyOriginSetOnCommandLine();
|
| -
|
| - // Returns true if the data reduction proxy key is set on the command line.
|
| static bool IsProxyKeySetOnCommandLine();
|
|
|
| - // Returns true if this application instance is part of the data reduction
|
| - // proxy field trial, or if it a proxy origin is set in flags. This is a
|
| - // convenience method for platforms like Chrome on Android and iOS, to
|
| - // determine if the data reduction proxy is allowed.
|
| - static bool IsIncludedInFieldTrialOrFlags();
|
| -
|
| - static void SetAllowed(bool allowed);
|
| - static void SetPromoAllowed(bool promo_allowed);
|
| -
|
| - DataReductionProxySettings();
|
| + DataReductionProxySettings(DataReductionProxyParams* params);
|
| virtual ~DataReductionProxySettings();
|
|
|
| - // Set and get the key to be used for data reduction proxy authentication.
|
| - void set_key(const std::string& key) {
|
| - key_ = key;
|
| - }
|
| -
|
| - const std::string& key() const {
|
| - return key_;
|
| + DataReductionProxyParams* params() const {
|
| + return params_.get();
|
| }
|
|
|
| // Initializes the data reduction proxy with profile and local state prefs,
|
| @@ -134,45 +115,22 @@ class DataReductionProxySettings
|
| PrefService* prefs,
|
| PrefService* local_state_prefs,
|
| net::URLRequestContextGetter* url_request_context_getter,
|
| - scoped_ptr<DataReductionProxyConfigurator> config);
|
| + scoped_ptr<DataReductionProxyConfigurator> configurator);
|
|
|
| // Sets the logic the embedder uses to set the networking configuration that
|
| // causes traffic to be proxied.
|
| void SetProxyConfigurator(
|
| scoped_ptr<DataReductionProxyConfigurator> configurator);
|
|
|
| - // If proxy authentication is compiled in, pre-cache an authentication
|
| - // |key| for all configured proxies in |session|.
|
| - static void InitDataReductionProxySession(net::HttpNetworkSession* session,
|
| - const std::string& key);
|
| -
|
| - // Returns true if the data reduction proxy is allowed to be used. This could
|
| - // return false, for example, if this instance is not part of the field trial,
|
| - // or if the proxy name is not configured via gyp.
|
| - static bool IsDataReductionProxyAllowed();
|
| -
|
| - // Returns true if a screen promoting the data reduction proxy is allowed to
|
| - // be shown. Logic that decides when to show the promo should check its
|
| - // availability. This would return false if not part of a separate field
|
| - // trial that governs the use of the promotion.
|
| - static bool IsDataReductionProxyPromoAllowed();
|
| -
|
| - // Returns true if preconnect advisory hinting is enabled by command line
|
| - // flag or Finch trial.
|
| - static bool IsPreconnectHintingAllowed();
|
| -
|
| - // Returns the URL of the data reduction proxy.
|
| - static std::string GetDataReductionProxyOrigin();
|
| -
|
| - // Returns the URL of the fallback data reduction proxy.
|
| - static std::string GetDataReductionProxyFallback();
|
| -
|
| - // Returns a vector of GURLs for all configured proxies.
|
| - static DataReductionProxyList GetDataReductionProxies();
|
| + // If proxy authentication is compiled in, pre-cache authentication
|
| + // keys for all configured proxies in |session|.
|
| + static void InitDataReductionProxySession(
|
| + net::HttpNetworkSession* session,
|
| + const DataReductionProxyParams* params);
|
|
|
| // Returns true if |auth_info| represents an authentication challenge from
|
| // a compatible, configured proxy.
|
| - static bool IsAcceptableAuthChallenge(net::AuthChallengeInfo* auth_info);
|
| + bool IsAcceptableAuthChallenge(net::AuthChallengeInfo* auth_info);
|
|
|
| // Returns a UTF16 string suitable for use as an authentication token in
|
| // response to the challenge represented by |auth_info|. If the token can't
|
| @@ -182,6 +140,9 @@ class DataReductionProxySettings
|
| // Returns true if the proxy is enabled.
|
| bool IsDataReductionProxyEnabled();
|
|
|
| + // Returns true if the alternative proxy is enabled.
|
| + bool IsDataReductionProxyAlternativeEnabled();
|
| +
|
| // Returns true if the proxy is managed by an adminstrator's policy.
|
| bool IsDataReductionProxyManaged();
|
|
|
| @@ -190,15 +151,8 @@ class DataReductionProxySettings
|
| // probe succeeds.
|
| void SetDataReductionProxyEnabled(bool enabled);
|
|
|
| - // If |allowed|, the fallback proxy will be included in the proxy
|
| - // configuration.
|
| - void set_fallback_allowed(bool allowed) {
|
| - fallback_allowed_ = allowed;
|
| - }
|
| -
|
| - bool fallback_allowed() const {
|
| - return fallback_allowed_;
|
| - }
|
| + // Enables or disables the alternative data reduction proxy configuration.
|
| + void SetDataReductionProxyAlternativeEnabled(bool enabled);
|
|
|
| // Returns the time in microseconds that the last update was made to the
|
| // daily original and received content lengths.
|
| @@ -232,13 +186,17 @@ class DataReductionProxySettings
|
| ContentLengthList GetDailyContentLengths(const char* pref_name);
|
|
|
| // Sets the proxy configs, enabling or disabling the proxy according to
|
| - // the value of |enabled|. If |restricted| is true, only enable the fallback
|
| - // proxy. |at_startup| is true when this method is called from
|
| - // InitDataReductionProxySettings.
|
| - virtual void SetProxyConfigs(bool enabled, bool restricted, bool at_startup);
|
| -
|
| - // Metrics methods. Subclasses should override if they wish to provide
|
| - // alternate methods.
|
| + // the value of |enabled| and |alternative_enabled|. Use the alternative
|
| + // configuration only if |enabled| and |alternative_enabled| are true. If
|
| + // |restricted| is true, only enable the fallback proxy. |at_startup| is true
|
| + // when this method is called from InitDataReductionProxySettings.
|
| + virtual void SetProxyConfigs(bool enabled,
|
| + bool alternative_enabled,
|
| + bool restricted,
|
| + bool at_startup);
|
| +
|
| + // Metrics method. Subclasses should override if they wish to provide
|
| + // alternatives.
|
| virtual void RecordDataReductionInit();
|
|
|
| virtual void AddDefaultProxyBypassRules();
|
| @@ -253,10 +211,13 @@ class DataReductionProxySettings
|
| virtual void RecordStartupState(
|
| data_reduction_proxy::ProxyStartupState state);
|
|
|
| - DataReductionProxyConfigurator* config() {
|
| - return config_.get();
|
| + DataReductionProxyConfigurator* configurator() {
|
| + return configurator_.get();
|
| }
|
|
|
| + // Reset params for tests.
|
| + void ResetParamsForTest(DataReductionProxyParams* params);
|
| +
|
| private:
|
| friend class DataReductionProxySettingsTestBase;
|
| friend class DataReductionProxySettingsTest;
|
| @@ -288,16 +249,20 @@ class DataReductionProxySettings
|
| TestBypassList);
|
| FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
|
| CheckInitMetricsWhenNotAllowed);
|
| + FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
|
| + TestSetProxyConfigs);
|
|
|
| // NetworkChangeNotifier::IPAddressObserver:
|
| virtual void OnIPAddressChanged() OVERRIDE;
|
|
|
| // Underlying implementation of InitDataReductionProxySession(), factored
|
| // out to be testable without creating a full HttpNetworkSession.
|
| - static void InitDataReductionAuthentication(net::HttpAuthCache* auth_cache,
|
| - const std::string& key);
|
| + static void InitDataReductionAuthentication(
|
| + net::HttpAuthCache* auth_cache,
|
| + const DataReductionProxyParams* params);
|
|
|
| void OnProxyEnabledPrefChange();
|
| + void OnProxyAlternativeEnabledPrefChange();
|
|
|
| void ResetDataReductionStatistics();
|
|
|
| @@ -307,15 +272,12 @@ class DataReductionProxySettings
|
| // the proxy, if enabled. Otherwise enables the proxy if disabled by a probe
|
| // failure.
|
| void ProbeWhetherDataReductionProxyIsAvailable();
|
| - std::string GetProxyCheckURL();
|
|
|
| // Returns a UTF16 string that's the hash of the configured authentication
|
| // |key| and |salt|. Returns an empty UTF16 string if no key is configured or
|
| // the data reduction proxy feature isn't available.
|
| - static base::string16 AuthHashForSalt(int64 salt, const std::string& key);
|
| -
|
| - static bool allowed_;
|
| - static bool promo_allowed_;
|
| + static base::string16 AuthHashForSalt(int64 salt,
|
| + const std::string& key);
|
|
|
| std::string key_;
|
| bool restricted_by_carrier_;
|
| @@ -323,17 +285,18 @@ class DataReductionProxySettings
|
|
|
| scoped_ptr<net::URLFetcher> fetcher_;
|
| BooleanPrefMember spdy_proxy_auth_enabled_;
|
| + BooleanPrefMember data_reduction_proxy_alternative_enabled_;
|
|
|
| PrefService* prefs_;
|
| PrefService* local_state_prefs_;
|
|
|
| net::URLRequestContextGetter* url_request_context_getter_;
|
|
|
| - scoped_ptr<DataReductionProxyConfigurator> config_;
|
| + scoped_ptr<DataReductionProxyConfigurator> configurator_;
|
|
|
| base::ThreadChecker thread_checker_;
|
|
|
| - bool fallback_allowed_;
|
| + scoped_ptr<DataReductionProxyParams> params_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(DataReductionProxySettings);
|
| };
|
|
|