Index: net/proxy/proxy_config_service.h |
diff --git a/net/proxy/proxy_config_service.h b/net/proxy/proxy_config_service.h |
index da67cd67130d27f8786501d272600644312684b5..f194ca0ce7781867ee0c9e14a6b9b16f020d7e60 100644 |
--- a/net/proxy/proxy_config_service.h |
+++ b/net/proxy/proxy_config_service.h |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
@@ -13,11 +13,27 @@ class ProxyConfig; |
// Service for watching when the proxy settings have changed. |
class ProxyConfigService { |
public: |
+ // Indicates whether proxy configuration is valid, and if not, why. |
+ enum ConfigAvailability { |
+ // Configuration is pending, observers will be notified later. |
+ CONFIG_PENDING, |
+ // Configuration is present and valid. |
+ CONFIG_VALID, |
+ // No configuration is set. |
+ CONFIG_UNSET |
+ }; |
+ |
// Observer for being notified when the proxy settings have changed. |
class Observer { |
public: |
virtual ~Observer() {} |
- virtual void OnProxyConfigChanged(const ProxyConfig& config) = 0; |
+ // Notification callback that should be invoked by ProxyConfigService |
+ // implementors whenever the configuration changes. |availability| indicates |
+ // the new availability status and can be CONFIG_UNSET or CONFIG_VALID (in |
+ // which case |config| contains the configuration). Implementors must not |
+ // pass CONFIG_PENDING. |
+ virtual void OnProxyConfigChanged(const ProxyConfig& config, |
+ ConfigAvailability availability) = 0; |
}; |
virtual ~ProxyConfigService() {} |
@@ -27,13 +43,14 @@ class ProxyConfigService { |
virtual void AddObserver(Observer* observer) = 0; |
virtual void RemoveObserver(Observer* observer) = 0; |
- // Gets the most recent value of the proxy configuration. Returns false if |
- // it is not available yet. In the case where we returned false, it is |
- // guaranteed that subscribed observers will be notified of a change at |
+ // Gets the most recent availability status. If a configuration is present, |
+ // the proxy configuration is written to |config| and CONFIG_VALID is |
+ // returned. Returns CONFIG_PENDING if it is not available yet. In this case, |
+ // it is guaranteed that subscribed observers will be notified of a change at |
// some point in the future once the configuration is available. |
// Note that to avoid re-entrancy problems, implementations should not |
// dispatch any change notifications from within this function. |
- virtual bool GetLatestProxyConfig(ProxyConfig* config) = 0; |
+ virtual ConfigAvailability GetLatestProxyConfig(ProxyConfig* config) = 0; |
// ProxyService will call this periodically during periods of activity. |
// It can be used as a signal for polling-based implementations. |