Index: chromeos/network/network_state_handler.h |
diff --git a/chromeos/network/network_state_handler.h b/chromeos/network/network_state_handler.h |
index 314a975ba1a9e8655116f3858fcfde08f06af116..0d3709e3bb062f9fc352c66f6a84ef5e0629eec7 100644 |
--- a/chromeos/network/network_state_handler.h |
+++ b/chromeos/network/network_state_handler.h |
@@ -49,6 +49,21 @@ class NetworkTypePattern; |
// keep properties up to date by managing the appropriate Shill observers. |
// It will invoke its own more specific observer methods when the specified |
// changes occur. |
+// |
+// Some notes about NetworkState, FavoriteState, and GUIDs: |
+// * A FavoriteState exists for all network services stored in a profile, and |
+// all "visible" networks (physically connected networks like ethernet and |
+// cellular or in-range wifi networks). If the network is stored in a profile, |
+// FavoriteState.IsInProfile() will return true. |
+// * A NetworkState exists for "visible" networks only. There will always be a |
+// corresponding FavoriteState with the same service_path() property. |
+// * All networks saved to a profile will have a saved GUID that is persistent |
+// across sessions. |
+// * Networks that are not saved to a profile will have a GUID assigned when |
+// the initial properties are received. The GUID will be consistent for |
+// the duration of a session, even if the network drops out and returns. |
+// * Both FavoriteState and NetworkState store the GUID. It will always be the |
+// same for the same network (i.e. entries with the same service_path()). |
class CHROMEOS_EXPORT NetworkStateHandler |
: public internal::ShillPropertyHandler::Listener { |
@@ -172,8 +187,16 @@ class CHROMEOS_EXPORT NetworkStateHandler |
void GetFavoriteListByType(const NetworkTypePattern& type, |
FavoriteStateList* list) const; |
- // Finds and returns a favorite state by |service_path| or NULL if not found. |
- const FavoriteState* GetFavoriteState(const std::string& service_path) const; |
+ // Finds and returns the FavoriteState associated with |service_path| or NULL |
+ // if not found. If |configured_only| is true, only returns saved entries |
+ // (IsInProfile is true). |
+ const FavoriteState* GetFavoriteStateFromServicePath( |
+ const std::string& service_path, |
+ bool configured_only) const; |
+ |
+ // Finds and returns the FavoriteState associated with |guid| or NULL if not |
+ // found. This returns all entries (IsInProfile() may be true or false). |
+ const FavoriteState* GetFavoriteStateFromGuid(const std::string& guid) const; |
// Requests a network scan. This may trigger updates to the network |
// list, which will trigger the appropriate observer calls. |
@@ -288,6 +311,7 @@ class CHROMEOS_EXPORT NetworkStateHandler |
private: |
typedef std::list<base::Closure> ScanCallbackList; |
typedef std::map<std::string, ScanCallbackList> ScanCompleteCallbackMap; |
+ typedef std::map<std::string, std::string> SpecifierGuidMap; |
friend class NetworkStateHandlerTest; |
FRIEND_TEST_ALL_PREFIXES(NetworkStateHandlerTest, NetworkStateHandlerStub); |
@@ -296,6 +320,10 @@ class CHROMEOS_EXPORT NetworkStateHandler |
void UpdateNetworkStateProperties(NetworkState* network, |
const base::DictionaryValue& properties); |
+ // Ensure a valid GUID for FavoriteState and update the NetworkState GUID from |
+ // the corresponding FavoriteState if necessary. |
+ void UpdateGuid(ManagedState* managed); |
+ |
// Sends DeviceListChanged() to observers and logs an event. |
void NotifyDeviceListChanged(); |
@@ -305,6 +333,8 @@ class CHROMEOS_EXPORT NetworkStateHandler |
DeviceState* GetModifiableDeviceState(const std::string& device_path) const; |
NetworkState* GetModifiableNetworkState( |
const std::string& service_path) const; |
+ FavoriteState* GetModifiableFavoriteState( |
+ const std::string& service_path) const; |
ManagedState* GetModifiableManagedState(const ManagedStateList* managed_list, |
const std::string& path) const; |
@@ -357,6 +387,10 @@ class CHROMEOS_EXPORT NetworkStateHandler |
// Callbacks to run when a scan for the technology type completes. |
ScanCompleteCallbackMap scan_complete_callbacks_; |
+ // Map of network specifiers to guids. Contains an entry for each |
+ // FavoriteState that is not saved in a profile. |
+ SpecifierGuidMap specifier_guid_map_; |
+ |
DISALLOW_COPY_AND_ASSIGN(NetworkStateHandler); |
}; |