Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(136)

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h

Issue 893003002: Data Reduction Proxy class ownership updates and Settings cleanup (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h
index 911668705fed33cf74bf7068c2e001c537e635ec..f59c8eb13c3b0f192a1697fe389df3dbc9e087df 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h
@@ -11,31 +11,17 @@
#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/gtest_prod_util.h"
-#include "base/memory/scoped_ptr.h"
#include "base/prefs/pref_member.h"
#include "base/threading/thread_checker.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator.h"
-#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_statistics_prefs.h"
-#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
-#include "net/base/net_log.h"
-#include "net/base/net_util.h"
-#include "net/base/network_change_notifier.h"
-#include "net/url_request/url_fetcher_delegate.h"
+#include "url/gurl.h"
class PrefService;
-namespace net {
-class HostPortPair;
-class HttpNetworkSession;
-class HttpResponseHeaders;
-class URLFetcher;
-class URLRequestContextGetter;
-}
-
namespace data_reduction_proxy {
+class DataReductionProxyConfig;
class DataReductionProxyEventStore;
+class DataReductionProxyStatisticsPrefs;
// The number of days of bandwidth usage statistics that are tracked.
const unsigned int kNumDaysInHistory = 60;
@@ -62,29 +48,21 @@ enum ProxyStartupState {
// be called from there.
// TODO(marq): Convert this to be a KeyedService with an
// associated factory class, and refactor the Java call sites accordingly.
-class DataReductionProxySettings
- : public net::URLFetcherDelegate,
- public net::NetworkChangeNotifier::IPAddressObserver {
+class DataReductionProxySettings {
public:
typedef std::vector<long long> ContentLengthList;
- static bool IsProxyKeySetOnCommandLine();
-
- DataReductionProxySettings(scoped_ptr<DataReductionProxyParams> params);
- ~DataReductionProxySettings() override;
-
- DataReductionProxyParams* params() const {
- return config_->params();
- }
+ DataReductionProxySettings();
+ virtual ~DataReductionProxySettings();
// Initializes the data reduction proxy with profile and local state prefs,
- // and a |UrlRequestContextGetter| for canary probes. The caller must ensure
+ // a |DataReductionProxyConfig| for retrieving configuration information and
+ // a |DataReductionProxyEventStore| for event logging. The caller must ensure
// that all parameters remain alive for the lifetime of the
// |DataReductionProxySettings| instance.
void InitDataReductionProxySettings(
PrefService* prefs,
- net::URLRequestContextGetter* url_request_context_getter,
- net::NetLog* net_log,
+ DataReductionProxyConfig* config,
DataReductionProxyEventStore* event_store);
// Sets the |statistics_prefs_| to be used for data reduction proxy pref reads
@@ -97,11 +75,6 @@ class DataReductionProxySettings
void SetOnDataReductionEnabledCallback(
const base::Callback<void(bool)>& on_data_reduction_proxy_enabled);
- // Sets the logic the embedder uses to set the networking configuration that
- // causes traffic to be proxied.
- void SetProxyConfigurator(
- DataReductionProxyConfigurator* configurator);
-
// Returns true if the proxy is enabled.
bool IsDataReductionProxyEnabled();
@@ -111,9 +84,7 @@ class DataReductionProxySettings
// Returns true if the proxy is managed by an adminstrator's policy.
bool IsDataReductionProxyManaged();
- // Enables or disables the data reduction proxy. If a probe URL is available,
- // and a probe request fails at some point, the proxy won't be used until a
- // probe succeeds.
+ // Enables or disables the data reduction proxy.
void SetDataReductionProxyEnabled(bool enabled);
// Enables or disables the alternative data reduction proxy configuration.
@@ -149,11 +120,7 @@ class DataReductionProxySettings
ContentLengthList GetDailyContentLengths(const char* pref_name);
- // net::URLFetcherDelegate:
- void OnURLFetchComplete(const net::URLFetcher* source) override;
-
- // Configures data reduction proxy and makes a request to the probe URL to
- // determine server availability. |at_startup| is true when this method is
+ // Configures data reduction proxy. |at_startup| is true when this method is
// called in response to creating or loading a new profile.
void MaybeActivateDataReductionProxy(bool at_startup);
@@ -163,64 +130,47 @@ class DataReductionProxySettings
return event_store_;
}
+ // Returns true if the data reduction proxy configuration may be used.
+ bool Allowed() const { return allowed_; }
bengr 2015/02/03 21:51:58 Move return to new line here and below.
jeremyim 2015/02/04 01:31:21 Done.
+
+ // Returns true if the alternative data reduction proxy configuration may be
+ // used.
+ bool AlternativeAllowed() const { return alternative_allowed_; }
+
+ // Returns true if the data reduction proxy promo may be shown.
+ // This is idependent of whether the data reduction proxy is allowed.
+ bool PromoAllowed() const { return promo_allowed_; }
+
+ // The data reduction proxy primary origin
+ const GURL& PrimaryOrigin() const { return primary_origin_; }
+
+ // Permits changing the underlying |DataReductionProxyConfig| without running
+ // the initialization loop.
+ void ResetConfigForTest(DataReductionProxyConfig* config) {
+ config_ = config;
+ }
+
protected:
void InitPrefMembers();
- // Returns a fetcher for the probe to check if OK for the proxy to use SPDY.
- // Virtual for testing.
- virtual net::URLFetcher* GetURLFetcherForAvailabilityCheck();
+ void UpdateConfigValues();
// Virtualized for unit test support.
virtual PrefService* GetOriginalProfilePrefs();
- // Sets the proxy configs, enabling or disabling the proxy according to
- // 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();
-
- // Writes a warning to the log that is used in backend processing of
- // customer feedback. Virtual so tests can mock it for verification.
- virtual void LogProxyState(bool enabled, bool restricted, bool at_startup);
-
- // Virtualized for mocking. Records UMA containing the result of requesting
- // the probe URL.
- virtual void RecordProbeURLFetchResult(
- data_reduction_proxy::ProbeURLFetchResult result);
-
// Virtualized for mocking. Records UMA specifying whether the proxy was
// enabled or disabled at startup.
virtual void RecordStartupState(
data_reduction_proxy::ProxyStartupState state);
- // Virtualized for mocking. Returns the list of network interfaces in use.
- virtual void GetNetworkList(net::NetworkInterfaceList* interfaces,
- int policy);
-
- DataReductionProxyConfigurator* configurator() {
- return configurator_;
- }
-
private:
friend class DataReductionProxySettingsTestBase;
friend class DataReductionProxySettingsTest;
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestAuthenticationInit);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestAuthHashGeneration);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestAuthHashGenerationWithOriginSetViaSwitch);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
TestResetDataReductionStatistics);
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
TestIsProxyEnabledOrManaged);
@@ -231,53 +181,27 @@ class DataReductionProxySettings
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
TestMaybeActivateDataReductionProxy);
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestOnIPAddressChanged);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
TestOnProxyEnabledPrefChange);
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
TestInitDataReductionProxyOn);
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
TestInitDataReductionProxyOff);
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestBypassList);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
CheckInitMetricsWhenNotAllowed);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestSetProxyConfigs);
- FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest,
- TestSetProxyConfigsHoldback);
-
- // NetworkChangeNotifier::IPAddressObserver:
- void OnIPAddressChanged() override;
void OnProxyEnabledPrefChange();
void OnProxyAlternativeEnabledPrefChange();
void ResetDataReductionStatistics();
- // Requests the proxy probe URL, if one is set. If unable to do so, disables
- // the proxy, if enabled. Otherwise enables the proxy if disabled by a probe
- // failure.
- void ProbeWhetherDataReductionProxyIsAvailable();
-
- // Disables use of the data reduction proxy on VPNs. Returns true if the
- // data reduction proxy has been disabled.
- bool DisableIfVPN();
-
- // Generic method to get a URL fetcher.
- net::URLFetcher* GetBaseURLFetcher(const GURL& gurl, int load_flags);
-
- std::string key_;
- bool restricted_by_carrier_;
- bool enabled_by_user_;
- bool disabled_on_vpn_;
bool unreachable_;
- scoped_ptr<net::URLFetcher> fetcher_;
-
- // A new BoundNetLog is created for each canary check so that we can correlate
- // the request begin/end phases.
- net::BoundNetLog bound_net_log_;
+ // The following values are cached in order to access the values on the
+ // correct thread.
+ bool allowed_;
+ bool alternative_allowed_;
+ bool promo_allowed_;
+ GURL primary_origin_;
BooleanPrefMember spdy_proxy_auth_enabled_;
BooleanPrefMember data_reduction_proxy_alternative_enabled_;
@@ -285,24 +209,16 @@ class DataReductionProxySettings
PrefService* prefs_;
DataReductionProxyStatisticsPrefs* statistics_prefs_;
- net::URLRequestContextGetter* url_request_context_getter_;
-
- // The caller must ensure that the |net_log_|, if set, outlives this instance.
- // It is used to create new instances of |bound_net_log_| on canary
- // requests.
- net::NetLog* net_log_;
-
// The caller must ensure that the |event_store_| outlives this instance.
DataReductionProxyEventStore* event_store_;
- base::Callback<void(bool)> on_data_reduction_proxy_enabled_;
+ // The caller must ensure that the |config_| outlives this instance.
+ DataReductionProxyConfig* config_;
- DataReductionProxyConfigurator* configurator_;
+ base::Callback<void(bool)> on_data_reduction_proxy_enabled_;
base::ThreadChecker thread_checker_;
- scoped_ptr<DataReductionProxyConfig> config_;
-
DISALLOW_COPY_AND_ASSIGN(DataReductionProxySettings);
};

Powered by Google App Engine
This is Rietveld 408576698