OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
6 #define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ | 6 #define CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/observer_list.h" | 11 #include "base/observer_list.h" |
| 12 #include "base/platform_thread.h" |
12 #include "base/singleton.h" | 13 #include "base/singleton.h" |
13 #include "base/string16.h" | 14 #include "base/string16.h" |
14 #include "third_party/cros/chromeos_network.h" | 15 #include "third_party/cros/chromeos_network.h" |
15 | 16 |
16 struct WifiNetwork { | 17 struct WifiNetwork { |
17 WifiNetwork() | 18 WifiNetwork() |
18 : encrypted(false), | 19 : encrypted(false), |
19 encryption(chromeos::NONE), | 20 encryption(chromeos::NONE), |
20 strength(0), | 21 strength(0), |
21 connecting(false), | 22 connecting(false), |
22 connected(false) {} | 23 connected(false), |
| 24 destroyed(false) {} |
23 WifiNetwork(const std::string& ssid, bool encrypted, | 25 WifiNetwork(const std::string& ssid, bool encrypted, |
24 chromeos::EncryptionType encryption, int strength, | 26 chromeos::EncryptionType encryption, int strength, |
25 bool connecting, bool connected) | 27 bool connecting, bool connected) |
26 : ssid(ssid), | 28 : ssid(ssid), |
27 encrypted(encrypted), | 29 encrypted(encrypted), |
28 encryption(encryption), | 30 encryption(encryption), |
29 strength(strength), | 31 strength(strength), |
30 connecting(connecting), | 32 connecting(connecting), |
31 connected(connected) {} | 33 connected(connected), |
| 34 destroyed(false) {} |
32 | 35 |
33 // WifiNetworks are sorted by ssids. | 36 // WifiNetworks are sorted by ssids. |
34 bool operator< (const WifiNetwork& other) const { | 37 bool operator< (const WifiNetwork& other) const { |
35 return ssid < other.ssid; | 38 return ssid < other.ssid; |
36 } | 39 } |
37 | 40 |
38 std::string ssid; | 41 std::string ssid; |
39 bool encrypted; | 42 bool encrypted; |
40 chromeos::EncryptionType encryption; | 43 chromeos::EncryptionType encryption; |
41 int strength; | 44 int strength; |
42 bool connecting; | 45 bool connecting; |
43 bool connected; | 46 bool connected; |
| 47 bool destroyed; |
44 }; | 48 }; |
45 typedef std::vector<WifiNetwork> WifiNetworkVector; | 49 typedef std::vector<WifiNetwork> WifiNetworkVector; |
46 | 50 |
47 // This class handles the interaction with the ChromeOS network library APIs. | 51 // This class handles the interaction with the ChromeOS network library APIs. |
48 // Classes can add themselves as observers. Users can get an instance of this | 52 // Classes can add themselves as observers. Users can get an instance of this |
49 // library class like this: CrosNetworkLibrary::Get() | 53 // library class like this: CrosNetworkLibrary::Get() |
50 class CrosNetworkLibrary { | 54 class CrosNetworkLibrary { |
51 public: | 55 public: |
52 class Observer { | 56 class Observer { |
53 public: | 57 public: |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 const chromeos::ServiceStatus& service_status); | 90 const chromeos::ServiceStatus& service_status); |
87 | 91 |
88 // This parses ServiceStatus and creates a WifiNetworkVector of wifi networks. | 92 // This parses ServiceStatus and creates a WifiNetworkVector of wifi networks. |
89 // It also sets ethernet_connected depending on if we have ethernet or not. | 93 // It also sets ethernet_connected depending on if we have ethernet or not. |
90 static void ParseNetworks(const chromeos::ServiceStatus& service_status, | 94 static void ParseNetworks(const chromeos::ServiceStatus& service_status, |
91 WifiNetworkVector* networks, | 95 WifiNetworkVector* networks, |
92 bool* ethernet_connected); | 96 bool* ethernet_connected); |
93 | 97 |
94 // This methods loads the initial list of networks on startup and starts the | 98 // This methods loads the initial list of networks on startup and starts the |
95 // monitoring of network changes. | 99 // monitoring of network changes. |
96 // It should be called on a background thread. | 100 void Init(); |
97 void InitOnBackgroundThread(); | |
98 | 101 |
99 // Update the network with the a list of wifi networks and ethernet status. | 102 // Update the network with the a list of wifi networks and ethernet status. |
100 // This will notify all the Observers. | 103 // This will notify all the Observers. |
101 void UpdateNetworkStatus(const WifiNetworkVector& networks, | 104 void UpdateNetworkStatus(const WifiNetworkVector& networks, |
102 bool ethernet_connected); | 105 bool ethernet_connected); |
103 | 106 |
104 ObserverList<Observer> observers_; | 107 ObserverList<Observer> observers_; |
105 | 108 |
106 // The network status connection for monitoring network status changes. | 109 // The network status connection for monitoring network status changes. |
107 chromeos::NetworkStatusConnection network_status_connection_; | 110 chromeos::NetworkStatusConnection network_status_connection_; |
108 | 111 |
109 // Whether or not we are connected to the ethernet line. | 112 // Whether or not we are connected to the ethernet line. |
110 bool ethernet_connected_; | 113 bool ethernet_connected_; |
111 | 114 |
112 // The list of available wifi networks. | 115 // The list of available wifi networks. |
113 WifiNetworkVector wifi_networks_; | 116 WifiNetworkVector wifi_networks_; |
114 | 117 |
115 // The current connected (or connecting) wifi network. | 118 // The current connected (or connecting) wifi network. |
116 WifiNetwork wifi_; | 119 WifiNetwork wifi_; |
117 | 120 |
118 DISALLOW_COPY_AND_ASSIGN(CrosNetworkLibrary); | 121 DISALLOW_COPY_AND_ASSIGN(CrosNetworkLibrary); |
119 }; | 122 }; |
120 | 123 |
121 #endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ | 124 #endif // CHROME_BROWSER_CHROMEOS_CROS_NETWORK_LIBRARY_H_ |
OLD | NEW |