OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ | 5 #ifndef CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ |
6 #define CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ | 6 #define CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
42 // Class for tracking the list of visible networks and their properties. | 42 // Class for tracking the list of visible networks and their properties. |
43 // | 43 // |
44 // This class maps essential properties from the connection manager (Shill) for | 44 // This class maps essential properties from the connection manager (Shill) for |
45 // each visible network. It is not used to change the properties of services or | 45 // each visible network. It is not used to change the properties of services or |
46 // devices, only global (manager) properties. | 46 // devices, only global (manager) properties. |
47 // | 47 // |
48 // All getters return the currently cached properties. This class is expected to | 48 // All getters return the currently cached properties. This class is expected to |
49 // keep properties up to date by managing the appropriate Shill observers. | 49 // keep properties up to date by managing the appropriate Shill observers. |
50 // It will invoke its own more specific observer methods when the specified | 50 // It will invoke its own more specific observer methods when the specified |
51 // changes occur. | 51 // changes occur. |
52 // | |
53 // Some notes about NetworkState, FavoriteState, and GUIDs: | |
54 // * A FavoriteState exists for all network services stored in a profile, and | |
55 // all "visible" networks (physically connected networks like ethernet and | |
56 // cellular or in-range wifi networks). If the network is stored in a profile, | |
57 // FavoriteState.IsInProfile() will return true. | |
58 // * A NetworkState exists for "visible" networks only. There will always be a | |
59 // corresponding FavoriteState with the same service_path() property. | |
60 // * All networks saved to a profile will have a saved GUID that is persistent | |
61 // across sessions. | |
62 // * Networks that are not saved to a profile will have a GUID assigned when | |
63 // the initial properties are received. The GUID will be consistent for | |
64 // the duration of a session, even if the network drops out and returns. | |
65 // * Both FavoriteState and NetworkState store the GUID. It will always be the | |
66 // same for the same network (i.e. entries with the same service_path()). | |
52 | 67 |
53 class CHROMEOS_EXPORT NetworkStateHandler | 68 class CHROMEOS_EXPORT NetworkStateHandler |
54 : public internal::ShillPropertyHandler::Listener { | 69 : public internal::ShillPropertyHandler::Listener { |
55 public: | 70 public: |
56 typedef std::vector<ManagedState*> ManagedStateList; | 71 typedef std::vector<ManagedState*> ManagedStateList; |
57 typedef std::vector<const NetworkState*> NetworkStateList; | 72 typedef std::vector<const NetworkState*> NetworkStateList; |
58 typedef std::vector<const DeviceState*> DeviceStateList; | 73 typedef std::vector<const DeviceState*> DeviceStateList; |
59 typedef std::vector<const FavoriteState*> FavoriteStateList; | 74 typedef std::vector<const FavoriteState*> FavoriteStateList; |
60 | 75 |
61 enum TechnologyState { | 76 enum TechnologyState { |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
168 // favorite is visible and retrieve the complete properties (and vice-versa). | 183 // favorite is visible and retrieve the complete properties (and vice-versa). |
169 void GetFavoriteList(FavoriteStateList* list) const; | 184 void GetFavoriteList(FavoriteStateList* list) const; |
170 | 185 |
171 // Like GetFavoriteList() but only returns favorites with matching |type|. | 186 // Like GetFavoriteList() but only returns favorites with matching |type|. |
172 void GetFavoriteListByType(const NetworkTypePattern& type, | 187 void GetFavoriteListByType(const NetworkTypePattern& type, |
173 FavoriteStateList* list) const; | 188 FavoriteStateList* list) const; |
174 | 189 |
175 // Finds and returns a favorite state by |service_path| or NULL if not found. | 190 // Finds and returns a favorite state by |service_path| or NULL if not found. |
176 const FavoriteState* GetFavoriteState(const std::string& service_path) const; | 191 const FavoriteState* GetFavoriteState(const std::string& service_path) const; |
177 | 192 |
193 // Finds the FavoriteState associated with |guid|. Note: The FavoriteState | |
194 // may or may not be in a profile (IsProfile() may be false), and may or may | |
pneubeck (no reviews)
2014/05/12 13:37:07
it's a bit unlucky that the name is so similar to
stevenjb
2014/05/13 01:19:00
GetFavoriteState -> GetFravoriteStateFromServicePa
pneubeck (no reviews)
2014/05/13 08:43:54
yes, that's much better.
| |
195 // not be visible. | |
196 const FavoriteState* GetFavoriteStateFromGuid(const std::string& guid) const; | |
197 | |
178 // Requests a network scan. This may trigger updates to the network | 198 // Requests a network scan. This may trigger updates to the network |
179 // list, which will trigger the appropriate observer calls. | 199 // list, which will trigger the appropriate observer calls. |
180 void RequestScan() const; | 200 void RequestScan() const; |
181 | 201 |
182 // Request a scan if not scanning and run |callback| when the Scanning state | 202 // Request a scan if not scanning and run |callback| when the Scanning state |
183 // for any Device of network type |type| completes. | 203 // for any Device of network type |type| completes. |
184 void WaitForScan(const std::string& type, const base::Closure& callback); | 204 void WaitForScan(const std::string& type, const base::Closure& callback); |
185 | 205 |
186 // Request a network scan then signal Shill to connect to the best available | 206 // Request a network scan then signal Shill to connect to the best available |
187 // networks when completed. | 207 // networks when completed. |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
281 virtual void DefaultNetworkServiceChanged( | 301 virtual void DefaultNetworkServiceChanged( |
282 const std::string& service_path) OVERRIDE; | 302 const std::string& service_path) OVERRIDE; |
283 | 303 |
284 // Called after construction. Called explicitly by tests after adding | 304 // Called after construction. Called explicitly by tests after adding |
285 // test observers. | 305 // test observers. |
286 void InitShillPropertyHandler(); | 306 void InitShillPropertyHandler(); |
287 | 307 |
288 private: | 308 private: |
289 typedef std::list<base::Closure> ScanCallbackList; | 309 typedef std::list<base::Closure> ScanCallbackList; |
290 typedef std::map<std::string, ScanCallbackList> ScanCompleteCallbackMap; | 310 typedef std::map<std::string, ScanCallbackList> ScanCompleteCallbackMap; |
311 typedef std::map<std::string, std::string> SpecifierGuidMap; | |
291 friend class NetworkStateHandlerTest; | 312 friend class NetworkStateHandlerTest; |
292 FRIEND_TEST_ALL_PREFIXES(NetworkStateHandlerTest, NetworkStateHandlerStub); | 313 FRIEND_TEST_ALL_PREFIXES(NetworkStateHandlerTest, NetworkStateHandlerStub); |
293 | 314 |
294 // NetworkState specific method for UpdateManagedStateProperties which | 315 // NetworkState specific method for UpdateManagedStateProperties which |
295 // notifies observers. | 316 // notifies observers. |
296 void UpdateNetworkStateProperties(NetworkState* network, | 317 void UpdateNetworkStateProperties(NetworkState* network, |
297 const base::DictionaryValue& properties); | 318 const base::DictionaryValue& properties); |
298 | 319 |
320 // Ensure a valid GUID for FavoriteState and update the NetworkState GUID from | |
321 // the corresponding FavoriteState if necessary. | |
322 void UpdateGuid(ManagedState* managed); | |
323 | |
299 // Sends DeviceListChanged() to observers and logs an event. | 324 // Sends DeviceListChanged() to observers and logs an event. |
300 void NotifyDeviceListChanged(); | 325 void NotifyDeviceListChanged(); |
301 | 326 |
302 // Non-const getters for managed entries. These are const so that they can | 327 // Non-const getters for managed entries. These are const so that they can |
303 // be called by Get[Network|Device]State, even though they return non-const | 328 // be called by Get[Network|Device]State, even though they return non-const |
304 // pointers. | 329 // pointers. |
305 DeviceState* GetModifiableDeviceState(const std::string& device_path) const; | 330 DeviceState* GetModifiableDeviceState(const std::string& device_path) const; |
306 NetworkState* GetModifiableNetworkState( | 331 NetworkState* GetModifiableNetworkState( |
307 const std::string& service_path) const; | 332 const std::string& service_path) const; |
333 FavoriteState* GetModifiableFavoriteState( | |
334 const std::string& service_path) const; | |
308 ManagedState* GetModifiableManagedState(const ManagedStateList* managed_list, | 335 ManagedState* GetModifiableManagedState(const ManagedStateList* managed_list, |
309 const std::string& path) const; | 336 const std::string& path) const; |
310 | 337 |
311 // Gets the list specified by |type|. | 338 // Gets the list specified by |type|. |
312 ManagedStateList* GetManagedList(ManagedState::ManagedType type); | 339 ManagedStateList* GetManagedList(ManagedState::ManagedType type); |
313 | 340 |
314 // Helper function to notify observers. Calls CheckDefaultNetworkChanged(). | 341 // Helper function to notify observers. Calls CheckDefaultNetworkChanged(). |
315 void OnNetworkConnectionStateChanged(NetworkState* network); | 342 void OnNetworkConnectionStateChanged(NetworkState* network); |
316 | 343 |
317 // Notifies observers when the default network or its properties change. | 344 // Notifies observers when the default network or its properties change. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
350 | 377 |
351 // Keeps track of the default network for notifying observers when it changes. | 378 // Keeps track of the default network for notifying observers when it changes. |
352 std::string default_network_path_; | 379 std::string default_network_path_; |
353 | 380 |
354 // List of interfaces on which portal check is enabled. | 381 // List of interfaces on which portal check is enabled. |
355 std::string check_portal_list_; | 382 std::string check_portal_list_; |
356 | 383 |
357 // Callbacks to run when a scan for the technology type completes. | 384 // Callbacks to run when a scan for the technology type completes. |
358 ScanCompleteCallbackMap scan_complete_callbacks_; | 385 ScanCompleteCallbackMap scan_complete_callbacks_; |
359 | 386 |
387 // Map of network specifiers to guids. | |
pneubeck (no reviews)
2014/05/12 13:37:07
According to your class comment, you should ensure
stevenjb
2014/05/13 01:19:00
Done.
| |
388 SpecifierGuidMap specifier_guid_map_; | |
389 | |
360 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandler); | 390 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandler); |
361 }; | 391 }; |
362 | 392 |
363 } // namespace chromeos | 393 } // namespace chromeos |
364 | 394 |
365 #endif // CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ | 395 #endif // CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ |
OLD | NEW |