Index: extensions/browser/api/networking_private/networking_private_chromeos.cc |
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.cc b/extensions/browser/api/networking_private/networking_private_chromeos.cc |
index 1179f4cfa056ca170b690bb30f48ee4f762cd2d3..d1cdf44520286bbba77a8f54958617ff25ee55cd 100644 |
--- a/extensions/browser/api/networking_private/networking_private_chromeos.cc |
+++ b/extensions/browser/api/networking_private/networking_private_chromeos.cc |
@@ -29,6 +29,7 @@ |
#include "extensions/common/api/networking_private.h" |
using chromeos::NetworkHandler; |
+using chromeos::NetworkStateHandler; |
using chromeos::NetworkTypePattern; |
using chromeos::ShillManagerClient; |
using extensions::NetworkingPrivateDelegate; |
@@ -77,6 +78,33 @@ bool GetUserIdHash(content::BrowserContext* browser_context, |
return true; |
} |
+void InsertDeviceState( |
+ const char* type, |
+ extensions::NetworkingPrivateDelegate::DeviceStateMap* devices) { |
+ NetworkTypePattern pattern = |
+ chromeos::onc::NetworkTypePatternFromOncType(type); |
+ NetworkStateHandler::TechnologyState technology_state = |
+ GetStateHandler()->GetTechnologyState(pattern); |
+ switch (technology_state) { |
+ case NetworkStateHandler::TECHNOLOGY_UNAVAILABLE: |
+ // No entry for unavaliable network types. |
pneubeck (no reviews)
2015/04/08 10:05:07
typo: unavaliable -> unavailable
stevenjb
2015/04/08 20:27:30
Done.
|
+ return; |
+ case NetworkStateHandler::TECHNOLOGY_AVAILABLE: |
+ (*devices)[type] = ::onc::device_state::kDisabled; |
+ return; |
+ case NetworkStateHandler::TECHNOLOGY_UNINITIALIZED: |
+ (*devices)[type] = ::onc::device_state::kUninitialized; |
+ return; |
+ case NetworkStateHandler::TECHNOLOGY_ENABLING: |
+ (*devices)[type] = ::onc::device_state::kEnabling; |
+ return; |
+ case NetworkStateHandler::TECHNOLOGY_ENABLED: |
+ (*devices)[type] = ::onc::device_state::kEnabled; |
+ return; |
+ } |
+ NOTREACHED(); |
+} |
+ |
void NetworkHandlerDictionaryCallback( |
const NetworkingPrivateDelegate::DictionaryCallback& callback, |
const std::string& service_path, |
@@ -333,6 +361,18 @@ NetworkingPrivateChromeOS::GetEnabledNetworkTypes() { |
return network_list.Pass(); |
} |
+scoped_ptr<NetworkingPrivateDelegate::DeviceStateMap> |
+NetworkingPrivateChromeOS::GetDeviceStates() { |
+ scoped_ptr<DeviceStateMap> device_list(new DeviceStateMap); |
+ |
+ InsertDeviceState(::onc::network_type::kEthernet, device_list.get()); |
pneubeck (no reviews)
2015/04/08 10:05:07
for consideration:
would it make sense to expose
stevenjb
2015/04/08 20:27:30
See meta comment. I'm actually going to need to ch
|
+ InsertDeviceState(::onc::network_type::kWiFi, device_list.get()); |
+ InsertDeviceState(::onc::network_type::kWimax, device_list.get()); |
+ InsertDeviceState(::onc::network_type::kCellular, device_list.get()); |
+ |
+ return device_list.Pass(); |
+} |
+ |
bool NetworkingPrivateChromeOS::EnableNetworkType(const std::string& type) { |
NetworkTypePattern pattern = |
chromeos::onc::NetworkTypePatternFromOncType(type); |