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

Side by Side Diff: chromeos/network/network_state_handler.h

Issue 2945643002: [CrOS Tether] Sort Tether network lists. (Closed)
Patch Set: stevenjb@ comments. Created 3 years, 6 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 unified diff | Download patch
OLDNEW
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 <memory> 9 #include <memory>
10 #include <set> 10 #include <set>
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 // the initial properties are received. The GUID will be consistent for 62 // the initial properties are received. The GUID will be consistent for
63 // the duration of a session, even if the network drops out and returns. 63 // the duration of a session, even if the network drops out and returns.
64 64
65 class CHROMEOS_EXPORT NetworkStateHandler 65 class CHROMEOS_EXPORT NetworkStateHandler
66 : public internal::ShillPropertyHandler::Listener { 66 : public internal::ShillPropertyHandler::Listener {
67 public: 67 public:
68 typedef std::vector<std::unique_ptr<ManagedState>> ManagedStateList; 68 typedef std::vector<std::unique_ptr<ManagedState>> ManagedStateList;
69 typedef std::vector<const NetworkState*> NetworkStateList; 69 typedef std::vector<const NetworkState*> NetworkStateList;
70 typedef std::vector<const DeviceState*> DeviceStateList; 70 typedef std::vector<const DeviceState*> DeviceStateList;
71 71
72 class TetherSortDelegate {
73 public:
74 // Sorts |tether_networks| according to the Tether component rules.
75 // |tether_networks| contains only networks of type Tether.
76 virtual void SortTetherNetworkList(
77 ManagedStateList* tether_networks) const = 0;
78 };
79
72 enum TechnologyState { 80 enum TechnologyState {
73 TECHNOLOGY_UNAVAILABLE, 81 TECHNOLOGY_UNAVAILABLE,
74 TECHNOLOGY_AVAILABLE, 82 TECHNOLOGY_AVAILABLE,
75 TECHNOLOGY_UNINITIALIZED, 83 TECHNOLOGY_UNINITIALIZED,
76 TECHNOLOGY_ENABLING, 84 TECHNOLOGY_ENABLING,
77 TECHNOLOGY_ENABLED, 85 TECHNOLOGY_ENABLED,
78 TECHNOLOGY_PROHIBITED 86 TECHNOLOGY_PROHIBITED
79 }; 87 };
80 88
81 ~NetworkStateHandler() override; 89 ~NetworkStateHandler() override;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 // |visible_only| - if true only include networks in the visible Services list 191 // |visible_only| - if true only include networks in the visible Services list
184 // |limit| - if > 0 limits the number of results. 192 // |limit| - if > 0 limits the number of results.
185 // The returned list contains a copy of NetworkState pointers which should not 193 // The returned list contains a copy of NetworkState pointers which should not
186 // be stored or used beyond the scope of the calling function (i.e. they may 194 // be stored or used beyond the scope of the calling function (i.e. they may
187 // later become invalid, but only on the UI thread). SortNetworkList() will be 195 // later become invalid, but only on the UI thread). SortNetworkList() will be
188 // called if necessary to provide the states in a convenient order (see 196 // called if necessary to provide the states in a convenient order (see
189 // SortNetworkList for details). 197 // SortNetworkList for details).
190 void GetNetworkListByType(const NetworkTypePattern& type, 198 void GetNetworkListByType(const NetworkTypePattern& type,
191 bool configured_only, 199 bool configured_only,
192 bool visible_only, 200 bool visible_only,
193 int limit, 201 size_t limit,
194 NetworkStateList* list); 202 NetworkStateList* list);
195 203
196 // Finds and returns the NetworkState associated with |service_path| or NULL 204 // Finds and returns the NetworkState associated with |service_path| or NULL
197 // if not found. If |configured_only| is true, only returns saved entries 205 // if not found. If |configured_only| is true, only returns saved entries
198 // (IsInProfile is true). 206 // (IsInProfile is true).
199 const NetworkState* GetNetworkStateFromServicePath( 207 const NetworkState* GetNetworkStateFromServicePath(
200 const std::string& service_path, 208 const std::string& service_path,
201 bool configured_only) const; 209 bool configured_only) const;
202 210
203 // Finds and returns the NetworkState associated with |guid| or NULL if not 211 // Finds and returns the NetworkState associated with |guid| or NULL if not
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 void SetTetherNetworkStateDisconnected(const std::string& guid); 268 void SetTetherNetworkStateDisconnected(const std::string& guid);
261 269
262 // Set the connection_state of the Tether NetworkState corresponding to the 270 // Set the connection_state of the Tether NetworkState corresponding to the
263 // provided |guid| to "Connecting". This will be reflected in the UI. 271 // provided |guid| to "Connecting". This will be reflected in the UI.
264 void SetTetherNetworkStateConnecting(const std::string& guid); 272 void SetTetherNetworkStateConnecting(const std::string& guid);
265 273
266 // Set the connection_state of the Tether NetworkState corresponding to the 274 // Set the connection_state of the Tether NetworkState corresponding to the
267 // provided |guid| to "Connected". This will be reflected in the UI. 275 // provided |guid| to "Connected". This will be reflected in the UI.
268 void SetTetherNetworkStateConnected(const std::string& guid); 276 void SetTetherNetworkStateConnected(const std::string& guid);
269 277
278 void set_tether_sort_delegate(
279 const TetherSortDelegate* tether_sort_delegate) {
280 tether_sort_delegate_ = tether_sort_delegate;
281 }
282
270 // Sets |list| to contain the list of devices. The returned list contains 283 // Sets |list| to contain the list of devices. The returned list contains
271 // a copy of DeviceState pointers which should not be stored or used beyond 284 // a copy of DeviceState pointers which should not be stored or used beyond
272 // the scope of the calling function (i.e. they may later become invalid, but 285 // the scope of the calling function (i.e. they may later become invalid, but
273 // only on the UI thread). 286 // only on the UI thread).
274 void GetDeviceList(DeviceStateList* list) const; 287 void GetDeviceList(DeviceStateList* list) const;
275 288
276 // Like GetDeviceList() but only returns networks with matching |type|. 289 // Like GetDeviceList() but only returns networks with matching |type|.
277 void GetDeviceListByType(const NetworkTypePattern& type, 290 void GetDeviceListByType(const NetworkTypePattern& type,
278 DeviceStateList* list) const; 291 DeviceStateList* list) const;
279 292
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 void NotifyScanCompleted(const DeviceState* device); 475 void NotifyScanCompleted(const DeviceState* device);
463 476
464 // Returns one technology type for |type|. This technology will be the 477 // Returns one technology type for |type|. This technology will be the
465 // highest priority technology in the type pattern. 478 // highest priority technology in the type pattern.
466 std::string GetTechnologyForType(const NetworkTypePattern& type) const; 479 std::string GetTechnologyForType(const NetworkTypePattern& type) const;
467 480
468 // Returns all the technology types for |type|. 481 // Returns all the technology types for |type|.
469 std::vector<std::string> GetTechnologiesForType( 482 std::vector<std::string> GetTechnologiesForType(
470 const NetworkTypePattern& type) const; 483 const NetworkTypePattern& type) const;
471 484
472 // Sets |list| to contain the list of Tether networks. If |limit| > 0, that 485 // Adds Tether networks to |list|, limiting the maximum size of |list| to be
473 // will determine the number of results; pass 0 for no limit. The returned 486 // |limit|. If |get_active| is true, only active (i.e., connecting/connected)
474 // list contains a copy of NetworkState pointers which should not be stored or 487 // networks will be added; otherwise, only inactive networks will be added.
475 // used beyond the scope of the calling function (i.e. they may later become 488 // The returned list contains a copy of NetworkState pointers which
476 // invalid, but only on the UI thread). 489 // should not be stored or used beyond the scope of the calling
477 // NOTE: See AddTetherNetworkState for more information about Tether networks. 490 // function (i.e., they may later become invalid, but only on the UI thread).
478 void GetTetherNetworkList(int limit, NetworkStateList* list); 491 // See AddTetherNetworkState() for more information about Tether networks.
492 void AppendTetherNetworksToList(bool get_active,
493 size_t limit,
494 NetworkStateList* list);
479 495
480 // Set the connection_state of a Tether NetworkState corresponding to the 496 // Set the connection_state of a Tether NetworkState corresponding to the
481 // provided |guid|. 497 // provided |guid|.
482 void SetTetherNetworkStateConnectionState( 498 void SetTetherNetworkStateConnectionState(
483 const std::string& guid, 499 const std::string& guid,
484 const std::string& connection_state); 500 const std::string& connection_state);
485 501
486 // Ensures that the Tether DeviceState is present in |device_list_| if 502 // Ensures that the Tether DeviceState is present in |device_list_| if
487 // |tether_technology_state_| is not TECHNOLOGY_UNAVAILABLE and ensures that 503 // |tether_technology_state_| is not TECHNOLOGY_UNAVAILABLE and ensures that
488 // it is not present in |device_list_| if it is TECHNOLOGY_UNAVAILABLE. 504 // it is not present in |device_list_| if it is TECHNOLOGY_UNAVAILABLE.
(...skipping 27 matching lines...) Expand all
516 532
517 // Map of network specifiers to guids. Contains an entry for each 533 // Map of network specifiers to guids. Contains an entry for each
518 // NetworkState that is not saved in a profile. 534 // NetworkState that is not saved in a profile.
519 SpecifierGuidMap specifier_guid_map_; 535 SpecifierGuidMap specifier_guid_map_;
520 536
521 // The state corresponding to the Tether device type. This value is managed by 537 // The state corresponding to the Tether device type. This value is managed by
522 // the Tether component. 538 // the Tether component.
523 TechnologyState tether_technology_state_ = 539 TechnologyState tether_technology_state_ =
524 TechnologyState::TECHNOLOGY_UNAVAILABLE; 540 TechnologyState::TECHNOLOGY_UNAVAILABLE;
525 541
542 // Not owned by this instance.
543 const TetherSortDelegate* tether_sort_delegate_ = nullptr;
544
526 // Ensure that Shutdown() gets called exactly once. 545 // Ensure that Shutdown() gets called exactly once.
527 bool did_shutdown_ = false; 546 bool did_shutdown_ = false;
528 547
529 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandler); 548 DISALLOW_COPY_AND_ASSIGN(NetworkStateHandler);
530 }; 549 };
531 550
532 } // namespace chromeos 551 } // namespace chromeos
533 552
534 #endif // CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_ 553 #endif // CHROMEOS_NETWORK_NETWORK_STATE_HANDLER_H_
OLDNEW
« no previous file with comments | « chromeos/components/tether/mock_host_scan_device_prioritizer.cc ('k') | chromeos/network/network_state_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698