| Index: chrome/browser/chromeos/proxy_config_service_impl.h
|
| diff --git a/chrome/browser/chromeos/proxy_config_service_impl.h b/chrome/browser/chromeos/proxy_config_service_impl.h
|
| index 730e003bd968005b9da7a81f12f217f4f9cc42e4..e32fbd90d6225c3f5aca3140a26d7cdda08e523d 100644
|
| --- a/chrome/browser/chromeos/proxy_config_service_impl.h
|
| +++ b/chrome/browser/chromeos/proxy_config_service_impl.h
|
| @@ -10,18 +10,23 @@
|
|
|
| #include "base/basictypes.h"
|
| #include "base/prefs/pref_member.h"
|
| -#include "base/values.h"
|
| -#include "chrome/browser/chromeos/cros/network_library.h"
|
| #include "chrome/browser/net/pref_proxy_config_tracker_impl.h"
|
| +#include "chromeos/network/network_state_handler_observer.h"
|
|
|
| class PrefRegistrySimple;
|
|
|
| +namespace base {
|
| +class DictionaryValue;
|
| +}
|
| +
|
| namespace user_prefs {
|
| class PrefRegistrySyncable;
|
| }
|
|
|
| namespace chromeos {
|
|
|
| +class NetworkState;
|
| +
|
| // Implementation of proxy config service for chromeos that:
|
| // - extends PrefProxyConfigTrackerImpl (and so lives and runs entirely on UI
|
| // thread) to handle proxy from prefs (via PrefProxyConfigTrackerImpl) and
|
| @@ -37,8 +42,7 @@ namespace chromeos {
|
| // any remembered network (either currently active or non-active) of current
|
| // user profile
|
| class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
| - public NetworkLibrary::NetworkManagerObserver,
|
| - public NetworkLibrary::NetworkObserver {
|
| + public NetworkStateHandlerObserver {
|
| public:
|
| // ProxyConfigServiceImpl is created in ProxyServiceFactory::
|
| // CreatePrefProxyConfigTrackerImpl via Profile::GetProxyConfigTracker() for
|
| @@ -94,7 +98,7 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
|
|
| // Converts |this| to Dictionary of ProxyConfigDictionary format (which
|
| // is the same format used by prefs).
|
| - DictionaryValue* ToPrefProxyConfig();
|
| + base::DictionaryValue* ToPrefProxyConfig();
|
|
|
| // Map |scheme| (one of "http", "https", "ftp" or "socks") to the correct
|
| // ManualProxy. Returns NULL if scheme is invalid.
|
| @@ -142,22 +146,20 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
| net::ProxyBypassRules bypass_rules;
|
| };
|
|
|
| - // Constructor.
|
| explicit ProxyConfigServiceImpl(PrefService* pref_service);
|
| virtual ~ProxyConfigServiceImpl();
|
|
|
| - // Called by UI to set service path of |network| to be displayed or edited.
|
| - // Subsequent UISet* methods will use this network, until UI calls it again
|
| - // with a different network.
|
| + // Called by UI to set the network with service path |current_network| to be
|
| + // displayed or edited. Subsequent UISet*/UIGet* methods will use this
|
| + // network, until this method is called again.
|
| void UISetCurrentNetwork(const std::string& current_network);
|
|
|
| - // Called from UI to make the currently active network the one to be displayed
|
| - // or edited. Subsequent UISet* methods will use this network until UI calls
|
| - // it again when the active network has changed.
|
| - void UIMakeActiveNetworkCurrent();
|
| + // Called from UI to make the current default network the one to be displayed
|
| + // or edited. See UISetCurrentNetwork.
|
| + void UIMakeDefaultNetworkCurrent();
|
|
|
| // Called from UI to get name of the current network set via
|
| - // UISetCurrentNetwork or UIMakeActiveNetworkCurrent.
|
| + // UISetCurrentNetwork or UIMakeDefaultNetworkCurrent.
|
| void UIGetCurrentNetworkName(std::string* network_name);
|
|
|
| // Called from UI to retrieve proxy configuration in |current_ui_config_|.
|
| @@ -165,7 +167,7 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
|
|
| // Called from UI to update proxy configuration for different modes.
|
| // Returns true if config is set properly and persisted to shill for the
|
| - // current network (set via UISetCurrentNetwork/UIMakeActiveNetworkCurrent).
|
| + // current network (set via UISetCurrentNetwork/UIMakeDefaultNetworkCurrent).
|
| // If this network is also currently active, config service proceeds to start
|
| // activating it on network stack.
|
| // Returns false if config is not set properly, probably because information
|
| @@ -191,16 +193,13 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
| virtual void OnProxyConfigChanged(ProxyPrefs::ConfigState config_state,
|
| const net::ProxyConfig& config) OVERRIDE;
|
|
|
| - // NetworkLibrary::NetworkManagerObserver implementation.
|
| - virtual void OnNetworkManagerChanged(NetworkLibrary* cros) OVERRIDE;
|
| -
|
| - // NetworkLibrary::NetworkObserver implementation.
|
| - virtual void OnNetworkChanged(NetworkLibrary* cros,
|
| - const Network* network) OVERRIDE;
|
| + // NetworkStateHandlerObserver implementation.
|
| + virtual void DefaultNetworkChanged(const NetworkState* network) OVERRIDE;
|
|
|
| - // Parse |network| proxy config and store result in |proxy_config|.
|
| - // Returns true if proxy config was successfully parsed.
|
| - static bool ParseProxyConfig(const Network* network,
|
| + // Convert and store the proxy config of |network| to |proxy_config|. Returns
|
| + // true if any proxy config is stored in |network| and proxy config was
|
| + // successfully converted.
|
| + static bool ParseProxyConfig(const NetworkState& network,
|
| net::ProxyConfig* proxy_config);
|
|
|
| // Register UseShardProxies preference.
|
| @@ -209,11 +208,11 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
|
|
| #if defined(UNIT_TEST)
|
| void SetTesting(ProxyConfig* test_config) {
|
| - UIMakeActiveNetworkCurrent();
|
| + UIMakeDefaultNetworkCurrent();
|
| if (test_config) {
|
| std::string value;
|
| test_config->SerializeForNetwork(&value);
|
| - SetProxyConfigForNetwork(active_network_, value, false);
|
| + SetProxyConfigForNetwork(current_ui_network_, value, false);
|
| }
|
| }
|
| #endif // defined(UNIT_TEST)
|
| @@ -225,13 +224,6 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
| // Called from the various UISetProxyConfigTo*.
|
| void OnUISetProxyConfig();
|
|
|
| - // Called from OnNetworkManagerChanged and OnNetworkChanged for currently
|
| - // active network, to handle previously active network, new active network,
|
| - // and if necessary, migrates device settings to shill and/or activates
|
| - // proxy setting of new network.
|
| - void OnActiveNetworkChanged(NetworkLibrary* cros,
|
| - const Network* active_network);
|
| -
|
| // Sets proxy config for |network_path| into shill and activates setting
|
| // if the network is currently active. If |only_set_if_empty| is true,
|
| // proxy will be set and saved only if network has no proxy.
|
| @@ -245,7 +237,11 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
|
|
| // Returns true if proxy is to be ignored for network, which happens if
|
| // network is shared and use-shared-proxies is turned off.
|
| - bool IgnoreProxy(const Network* network);
|
| + bool IgnoreProxy(const NetworkState& network);
|
| +
|
| + // Determines, applies and stores the effective proxy config based on the
|
| + // current default network.
|
| + void UpdateProxyConfigOfDefaultNetwork();
|
|
|
| // Determines effective proxy config based on prefs from config tracker,
|
| // |network| and if user is using shared proxies.
|
| @@ -253,23 +249,16 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
| // activated on network stack, and hence, picked up by observers.
|
| // if |activate| is false, effective config is stored in |current_ui_config_|
|
| // but not activated on network stack, and hence, not picked up by observers.
|
| - void DetermineEffectiveConfig(const Network* network, bool activate);
|
| -
|
| - // Determines |current_ui_config_| based on |network|, called from
|
| - // UISetCurrentNetwork and UIMakeActiveNetworkActive.
|
| - void OnUISetCurrentNetwork(const Network* network);
|
| + void DetermineEffectiveConfig(const NetworkState* network, bool activate);
|
|
|
| // Reset UI cache variables that keep track of UI activities.
|
| void ResetUICache();
|
|
|
| void FetchProxyPolicy();
|
|
|
| - // Data members.
|
| -
|
| - // Service path of currently active network (determined via shill
|
| - // notifications); if effective proxy config is from system, proxy of this
|
| - // network will be the one taking effect.
|
| - std::string active_network_;
|
| + // Service path of last known default network; if effective proxy config is
|
| + // from system, proxy of this network will be the one taking effect.
|
| + std::string default_network_;
|
|
|
| // State of |active_config_|. |active_config_| is only valid if
|
| // |active_config_state_| is not ProxyPrefs::CONFIG_UNSET.
|
| @@ -283,7 +272,7 @@ class ProxyConfigServiceImpl : public PrefProxyConfigTrackerImpl,
|
| std::string device_config_;
|
|
|
| // Service path of network whose proxy configuration is being displayed or
|
| - // edited via UI, separate from |active_network_| which may be same or
|
| + // edited via UI, separate from |default_network_| which may be same or
|
| // different.
|
| std::string current_ui_network_;
|
|
|
|
|