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

Unified Diff: chrome/browser/chromeos/cros/network_library.cc

Issue 7765009: Use new GValue chromeos_network calls instead of base::Value (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments. Created 9 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/cros/network_library.cc
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index 39500dee5f4e0b6672781e3325ee06332f72309a..edbb832a612cff75259da699cfc9d337f0063658 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -5,6 +5,9 @@
#include "chrome/browser/chromeos/cros/network_library.h"
#include <algorithm>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-gtype-specialized.h>
+#include <glib-object.h>
#include <map>
#include <set>
@@ -69,7 +72,7 @@
// the "Services" message which list all visible networks. The handler
// rebuilds the network lists without destroying existing Network structures,
// then requests neccessary updates to be fetched asynchronously from
-// libcros (RequestNetworkServiceInfo).
+// libcros (RequestNetworkServiceProperties).
//
// TODO(stevenjb): Document cellular data plan handlers.
//
@@ -114,17 +117,17 @@ const char* kAlwaysInRoamingOperators[] = {
// Safe string constructor since we can't rely on non NULL pointers
// for string values from libcros.
-static std::string SafeString(const char* s) {
+std::string SafeString(const char* s) {
return s ? std::string(s) : std::string();
}
// Erase the memory used by a string, then clear it.
-static void WipeString(std::string* str) {
+void WipeString(std::string* str) {
str->assign(str->size(), '\0');
str->clear();
}
-static bool EnsureCrosLoaded() {
+bool EnsureCrosLoaded() {
if (!CrosLibrary::Get()->EnsureLoaded() ||
!CrosLibrary::Get()->GetNetworkLibrary()->IsCros()) {
return false;
@@ -135,7 +138,7 @@ static bool EnsureCrosLoaded() {
}
}
-static void ValidateUTF8(const std::string& str, std::string* output) {
+void ValidateUTF8(const std::string& str, std::string* output) {
output->clear();
for (int32 index = 0; index < static_cast<int32>(str.size()); ++index) {
@@ -150,6 +153,136 @@ static void ValidateUTF8(const std::string& str, std::string* output) {
}
}
+////////////////////////////////////////////////////////////////////////////////
+// glib
+
+Value* ConvertGlibValue(const GValue* gvalue);
+
+void AppendListElement(const GValue* gvalue, gpointer user_data) {
+ ListValue* list = static_cast<ListValue*>(user_data);
+ Value* value = ConvertGlibValue(gvalue);
+ list->Append(value);
+}
+
+void AppendDictionaryElement(const GValue* keyvalue,
+ const GValue* gvalue,
+ gpointer user_data) {
+ DictionaryValue* dict = static_cast<DictionaryValue*>(user_data);
+ std::string key(g_value_get_string(keyvalue));
+ Value* value = ConvertGlibValue(gvalue);
+ dict->SetWithoutPathExpansion(key, value);
+}
+
+Value* ConvertGlibValue(const GValue* gvalue) {
+ if (G_VALUE_HOLDS_STRING(gvalue)) {
+ return Value::CreateStringValue(g_value_get_string(gvalue));
+ } else if (G_VALUE_HOLDS_BOOLEAN(gvalue)) {
+ return Value::CreateBooleanValue(
+ static_cast<bool>(g_value_get_boolean(gvalue)));
+ } else if (G_VALUE_HOLDS_INT(gvalue)) {
+ return Value::CreateIntegerValue(g_value_get_int(gvalue));
+ } else if (G_VALUE_HOLDS_UINT(gvalue)) {
+ return Value::CreateIntegerValue(
+ static_cast<int>(g_value_get_uint(gvalue)));
+ } else if (G_VALUE_HOLDS_UCHAR(gvalue)) {
+ return Value::CreateIntegerValue(
+ static_cast<int>(g_value_get_uchar(gvalue)));
+ } else if (G_VALUE_HOLDS(gvalue, DBUS_TYPE_G_OBJECT_PATH)) {
+ const char* path = static_cast<const char*>(g_value_get_boxed(gvalue));
+ return Value::CreateStringValue(path);
+ } else if (G_VALUE_HOLDS(gvalue, G_TYPE_STRV)) {
+ ListValue* list = new ListValue();
+ for (GStrv strv = static_cast<GStrv>(g_value_get_boxed(gvalue));
+ *strv != NULL; ++strv) {
+ list->Append(Value::CreateStringValue(*strv));
+ }
+ return list;
+ } else if (dbus_g_type_is_collection(G_VALUE_TYPE(gvalue))) {
+ ListValue* list = new ListValue();
+ dbus_g_type_collection_value_iterate(gvalue, AppendListElement, list);
+ return list;
+ } else if (dbus_g_type_is_map(G_VALUE_TYPE(gvalue))) {
+ DictionaryValue* dict = new DictionaryValue();
+ dbus_g_type_map_value_iterate(gvalue, AppendDictionaryElement, dict);
+ return dict;
+ } else if (G_VALUE_HOLDS(gvalue, G_TYPE_VALUE)) {
+ const GValue* bvalue = static_cast<GValue*>(g_value_get_boxed(gvalue));
+ return ConvertGlibValue(bvalue);
+ } else {
+ LOG(ERROR) << "Unrecognized Glib value type: " << G_VALUE_TYPE(gvalue);
+ return Value::CreateNullValue();
+ }
+}
+
+DictionaryValue* ConvertGHashTable(GHashTable* ghash) {
+ DictionaryValue* dict = new DictionaryValue();
+ GHashTableIter iter;
+ gpointer gkey, gvalue;
+ g_hash_table_iter_init(&iter, ghash);
+ while (g_hash_table_iter_next(&iter, &gkey, &gvalue)) {
+ std::string key(static_cast<char*>(gkey));
+ Value* value = ConvertGlibValue(static_cast<GValue*>(gvalue));
+ dict->SetWithoutPathExpansion(key, value);
+ }
+ return dict;
+}
+
+GValue* ConvertBoolToGValue(bool b) {
+ GValue* gvalue = new GValue();
+ g_value_init(gvalue, G_TYPE_BOOLEAN);
+ g_value_set_boolean(gvalue, b);
+ return gvalue;
+}
+
+GValue* ConvertIntToGValue(int i) {
+ // Converting to a 32-bit signed int type in particular, since
+ // that's what flimflam expects in its DBus API
satorux1 2011/08/29 19:52:47 Not fault of this change, but use of base::Value f
+ GValue* gvalue = new GValue();
+ g_value_init(gvalue, G_TYPE_INT);
+ g_value_set_int(gvalue, i);
+ return gvalue;
+}
+
+GValue* ConvertStringToGValue(const std::string& s) {
+ GValue* gvalue = new GValue();
+ g_value_init(gvalue, G_TYPE_STRING);
+ g_value_set_string(gvalue, s.c_str());
+ return gvalue;
+}
+
+GValue* ConvertValueToGValue(const Value* value) {
+ switch (value->GetType()) {
+ case Value::TYPE_BOOLEAN: {
+ bool out;
+ if (value->GetAsBoolean(&out))
+ return ConvertBoolToGValue(out);
+ break;
+ }
+ case Value::TYPE_INTEGER: {
+ int out;
+ if (value->GetAsInteger(&out))
+ return ConvertIntToGValue(out);
+ break;
+ }
+ case Value::TYPE_STRING: {
+ std::string out;
+ if (value->GetAsString(&out))
+ return ConvertStringToGValue(out);
+ break;
+ }
+ case Value::TYPE_NULL:
+ case Value::TYPE_DOUBLE:
+ case Value::TYPE_BINARY:
+ case Value::TYPE_DICTIONARY:
+ case Value::TYPE_LIST:
+ // Other Value types shouldn't be passed through this mechanism.
+ NOTREACHED() << "Unconverted Value of type: " << value->GetType();
+ return NULL;
+ }
+ NOTREACHED() << "Value conversion failed, type: " << value->GetType();
+ return NULL;
+}
+
} // namespace
////////////////////////////////////////////////////////////////////////////////
@@ -263,12 +396,14 @@ bool Network::RequiresUserProfile() const {
void Network::CopyCredentialsFromRemembered(Network* remembered) {
}
-void Network::SetValueProperty(const char* prop, Value* val) {
+void Network::SetValueProperty(const char* prop, Value* value) {
DCHECK(prop);
- DCHECK(val);
+ DCHECK(value);
if (!EnsureCrosLoaded())
return;
- chromeos::SetNetworkServiceProperty(service_path_.c_str(), prop, val);
+ scoped_ptr<GValue> gvalue(ConvertValueToGValue(value));
+ chromeos::SetNetworkServicePropertyGValue(
+ service_path_.c_str(), prop, gvalue.get());
}
void Network::ClearProperty(const char* prop) {
@@ -2987,12 +3122,12 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase {
//////////////////////////////////////////////////////////////////////////////
// Calbacks.
static void NetworkStatusChangedHandler(
- void* object, const char* path, const char* key, const Value* value);
+ void* object, const char* path, const char* key, const GValue* value);
void UpdateNetworkStatus(
const std::string& path, const std::string& key, const Value& value);
static void NetworkDevicePropertyChangedHandler(
- void* object, const char* path, const char* key, const Value* value);
+ void* object, const char* path, const char* key, const GValue* gvalue);
void UpdateNetworkDeviceStatus(
const std::string& path, const std::string& key, const Value& value);
@@ -3012,27 +3147,27 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase {
const char* error_message);
static void WifiServiceUpdateAndConnect(
- void* object, const char* service_path, const Value* info);
+ void* object, const char* service_path, GHashTable* ghash);
static void VPNServiceUpdateAndConnect(
- void* object, const char* service_path, const Value* info);
+ void* object, const char* service_path, GHashTable* ghash);
static void NetworkManagerStatusChangedHandler(
- void* object, const char* path, const char* key, const Value* value);
+ void* object, const char* path, const char* key, const GValue* value);
static void NetworkManagerUpdate(
- void* object, const char* manager_path, const Value* info);
+ void* object, const char* manager_path, GHashTable* ghash);
static void DataPlanUpdateHandler(void* object,
const char* modem_service_path,
const CellularDataPlanList* dataplan);
static void NetworkServiceUpdate(
- void* object, const char* service_path, const Value* info);
+ void* object, const char* service_path, GHashTable* ghash);
static void RememberedNetworkServiceUpdate(
- void* object, const char* service_path, const Value* info);
+ void* object, const char* service_path, GHashTable* ghash);
static void ProfileUpdate(
- void* object, const char* profile_path, const Value* info);
+ void* object, const char* profile_path, GHashTable* ghash);
static void NetworkDeviceUpdate(
- void* object, const char* device_path, const Value* info);
+ void* object, const char* device_path, GHashTable* ghash);
private:
// This processes all Manager update messages.
@@ -3069,11 +3204,11 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase {
NetworkLibrary* cros, const NetworkDevice* device) OVERRIDE {}
};
- typedef std::map<std::string, chromeos::PropertyChangeMonitor>
- PropertyChangeMonitorMap;
+ typedef std::map<std::string, chromeos::NetworkPropertiesMonitor>
+ NetworkPropertiesMonitorMap;
// For monitoring network manager status changes.
- PropertyChangeMonitor network_manager_monitor_;
+ NetworkPropertiesMonitor network_manager_monitor_;
// For monitoring data plan changes to the connected cellular network.
DataPlanUpdateMonitor data_plan_monitor_;
@@ -3082,10 +3217,10 @@ class NetworkLibraryImplCros : public NetworkLibraryImplBase {
scoped_ptr<NetworkLibraryDeviceObserver> network_device_observer_;
// Map of monitored networks.
- PropertyChangeMonitorMap montitored_networks_;
+ NetworkPropertiesMonitorMap montitored_networks_;
// Map of monitored devices.
- PropertyChangeMonitorMap montitored_devices_;
+ NetworkPropertiesMonitorMap montitored_devices_;
DISALLOW_COPY_AND_ASSIGN(NetworkLibraryImplCros);
};
@@ -3100,16 +3235,18 @@ NetworkLibraryImplCros::NetworkLibraryImplCros()
NetworkLibraryImplCros::~NetworkLibraryImplCros() {
if (network_manager_monitor_)
- chromeos::DisconnectPropertyChangeMonitor(network_manager_monitor_);
+ chromeos::DisconnectNetworkPropertiesMonitor(network_manager_monitor_);
if (data_plan_monitor_)
chromeos::DisconnectDataPlanUpdateMonitor(data_plan_monitor_);
- for (PropertyChangeMonitorMap::iterator iter = montitored_networks_.begin();
+ for (NetworkPropertiesMonitorMap::iterator iter =
+ montitored_networks_.begin();
iter != montitored_networks_.end(); ++iter) {
- chromeos::DisconnectPropertyChangeMonitor(iter->second);
+ chromeos::DisconnectNetworkPropertiesMonitor(iter->second);
}
- for (PropertyChangeMonitorMap::iterator iter = montitored_devices_.begin();
+ for (NetworkPropertiesMonitorMap::iterator iter =
+ montitored_devices_.begin();
iter != montitored_devices_.end(); ++iter) {
- chromeos::DisconnectPropertyChangeMonitor(iter->second);
+ chromeos::DisconnectNetworkPropertiesMonitor(iter->second);
}
}
@@ -3117,10 +3254,10 @@ void NetworkLibraryImplCros::Init() {
// First, get the currently available networks. This data is cached
// on the connman side, so the call should be quick.
VLOG(1) << "Requesting initial network manager info from libcros.";
- chromeos::RequestNetworkManagerInfo(&NetworkManagerUpdate, this);
+ chromeos::RequestNetworkManagerProperties(&NetworkManagerUpdate, this);
network_manager_monitor_ =
- chromeos::MonitorNetworkManager(&NetworkManagerStatusChangedHandler,
- this);
+ chromeos::MonitorNetworkManagerProperties(
+ &NetworkManagerStatusChangedHandler, this);
data_plan_monitor_ =
chromeos::MonitorCellularDataPlan(&DataPlanUpdateHandler, this);
// Always have at least one device obsever so that device updates are
@@ -3134,20 +3271,19 @@ void NetworkLibraryImplCros::Init() {
void NetworkLibraryImplCros::MonitorNetworkStart(
const std::string& service_path) {
if (montitored_networks_.find(service_path) == montitored_networks_.end()) {
- chromeos::PropertyChangeMonitor monitor =
- chromeos::MonitorNetworkService(&NetworkStatusChangedHandler,
- service_path.c_str(),
- this);
+ chromeos::NetworkPropertiesMonitor monitor =
+ chromeos::MonitorNetworkServiceProperties(
+ &NetworkStatusChangedHandler, service_path.c_str(), this);
montitored_networks_[service_path] = monitor;
}
}
void NetworkLibraryImplCros::MonitorNetworkStop(
const std::string& service_path) {
- PropertyChangeMonitorMap::iterator iter =
+ NetworkPropertiesMonitorMap::iterator iter =
montitored_networks_.find(service_path);
if (iter != montitored_networks_.end()) {
- chromeos::DisconnectPropertyChangeMonitor(iter->second);
+ chromeos::DisconnectNetworkPropertiesMonitor(iter->second);
montitored_networks_.erase(iter);
}
}
@@ -3155,32 +3291,32 @@ void NetworkLibraryImplCros::MonitorNetworkStop(
void NetworkLibraryImplCros::MonitorNetworkDeviceStart(
const std::string& device_path) {
if (montitored_devices_.find(device_path) == montitored_devices_.end()) {
- chromeos::PropertyChangeMonitor monitor =
- chromeos::MonitorNetworkDevice(&NetworkDevicePropertyChangedHandler,
- device_path.c_str(),
- this);
+ chromeos::NetworkPropertiesMonitor monitor =
+ chromeos::MonitorNetworkDeviceProperties(
+ &NetworkDevicePropertyChangedHandler, device_path.c_str(), this);
montitored_devices_[device_path] = monitor;
}
}
void NetworkLibraryImplCros::MonitorNetworkDeviceStop(
const std::string& device_path) {
- PropertyChangeMonitorMap::iterator iter =
+ NetworkPropertiesMonitorMap::iterator iter =
montitored_devices_.find(device_path);
if (iter != montitored_devices_.end()) {
- chromeos::DisconnectPropertyChangeMonitor(iter->second);
+ chromeos::DisconnectNetworkPropertiesMonitor(iter->second);
montitored_devices_.erase(iter);
}
}
// static callback
void NetworkLibraryImplCros::NetworkStatusChangedHandler(
- void* object, const char* path, const char* key, const Value* value) {
+ void* object, const char* path, const char* key, const GValue* gvalue) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- if (key == NULL || value == NULL || path == NULL || object == NULL)
+ if (key == NULL || gvalue == NULL || path == NULL || object == NULL)
return;
+ scoped_ptr<Value> value(ConvertGlibValue(gvalue));
networklib->UpdateNetworkStatus(std::string(path), std::string(key), *value);
}
@@ -3206,12 +3342,13 @@ void NetworkLibraryImplCros::UpdateNetworkStatus(
// static callback
void NetworkLibraryImplCros::NetworkDevicePropertyChangedHandler(
- void* object, const char* path, const char* key, const Value* value) {
+ void* object, const char* path, const char* key, const GValue* gvalue) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- if (key == NULL || value == NULL || path == NULL || object == NULL)
+ if (key == NULL || gvalue == NULL || path == NULL || object == NULL)
return;
+ scoped_ptr<Value> value(ConvertGlibValue(gvalue));
networklib->UpdateNetworkDeviceStatus(std::string(path),
std::string(key),
*value);
@@ -3246,9 +3383,9 @@ void NetworkLibraryImplCros::UpdateNetworkDeviceStatus(
NotifyNetworkDeviceChanged(device, index);
// If a device's power state changes, new properties may become defined.
if (index == PROPERTY_INDEX_POWERED)
- chromeos::RequestNetworkDeviceInfo(path.c_str(),
- &NetworkDeviceUpdate,
- this);
+ chromeos::RequestNetworkDeviceProperties(path.c_str(),
+ &NetworkDeviceUpdate,
+ this);
}
}
@@ -3293,15 +3430,14 @@ void NetworkLibraryImplCros::CallConnectToNetwork(Network* network) {
// static callback
void NetworkLibraryImplCros::WifiServiceUpdateAndConnect(
- void* object, const char* service_path, const Value* info) {
+ void* object, const char* service_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- if (service_path && info) {
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
+ if (service_path && ghash) {
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
Network* network =
- networklib->ParseNetwork(std::string(service_path), *dict);
+ networklib->ParseNetwork(std::string(service_path), *(dict.get()));
DCHECK_EQ(network->type(), TYPE_WIFI);
networklib->ConnectToWifiNetworkUsingConnectData(
static_cast<WifiNetwork*>(network));
@@ -3312,24 +3448,24 @@ void NetworkLibraryImplCros::CallRequestWifiNetworkAndConnect(
const std::string& ssid, ConnectionSecurity security) {
// Asynchronously request service properties and call
// WifiServiceUpdateAndConnect.
- chromeos::RequestHiddenWifiNetwork(ssid.c_str(),
- SecurityToString(security),
- WifiServiceUpdateAndConnect,
- this);
+ chromeos::RequestHiddenWifiNetworkProperties(
+ ssid.c_str(),
+ SecurityToString(security),
+ WifiServiceUpdateAndConnect,
+ this);
}
// static callback
void NetworkLibraryImplCros::VPNServiceUpdateAndConnect(
- void* object, const char* service_path, const Value* info) {
+ void* object, const char* service_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- if (service_path && info) {
+ if (service_path && ghash) {
VLOG(1) << "Connecting to new VPN Service: " << service_path;
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
Network* network =
- networklib->ParseNetwork(std::string(service_path), *dict);
+ networklib->ParseNetwork(std::string(service_path), *(dict.get()));
DCHECK_EQ(network->type(), TYPE_VPN);
networklib->ConnectToVirtualNetworkUsingConnectData(
static_cast<VirtualNetwork*>(network));
@@ -3342,11 +3478,12 @@ void NetworkLibraryImplCros::CallRequestVirtualNetworkAndConnect(
const std::string& service_name,
const std::string& server_hostname,
ProviderType provider_type) {
- chromeos::RequestVirtualNetwork(service_name.c_str(),
- server_hostname.c_str(),
- ProviderTypeToString(provider_type),
- VPNServiceUpdateAndConnect,
- this);
+ chromeos::RequestVirtualNetworkProperties(
+ service_name.c_str(),
+ server_hostname.c_str(),
+ ProviderTypeToString(provider_type),
+ VPNServiceUpdateAndConnect,
+ this);
}
void NetworkLibraryImplCros::CallDeleteRememberedNetwork(
@@ -3489,10 +3626,10 @@ void NetworkLibraryImplCros::SetCellularDataRoamingAllowed(bool new_value) {
"w/o cellular device.";
return;
}
- scoped_ptr<Value> value(Value::CreateBooleanValue(new_value));
- chromeos::SetNetworkDeviceProperty(cellular->device_path().c_str(),
- kCellularAllowRoamingProperty,
- value.get());
+ scoped_ptr<GValue> gvalue(ConvertBoolToGValue(new_value));
+ chromeos::SetNetworkDevicePropertyGValue(cellular->device_path().c_str(),
+ kCellularAllowRoamingProperty,
+ gvalue.get());
}
bool NetworkLibraryImplCros::IsCellularAlwaysInRoaming() {
@@ -3519,7 +3656,7 @@ void NetworkLibraryImplCros::RequestNetworkScan() {
cellular_network()->RefreshDataPlansIfNeeded();
// Make sure all Manager info is up to date. This will also update
// remembered networks and visible services.
- chromeos::RequestNetworkManagerInfo(&NetworkManagerUpdate, this);
+ chromeos::RequestNetworkManagerProperties(&NetworkManagerUpdate, this);
}
bool NetworkLibraryImplCros::GetWifiAccessPoints(
@@ -3650,35 +3787,30 @@ void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) {
if (ipconfig_static) {
// Save any changed details.
if (ipconfig.address != ipconfig_static->address) {
- scoped_ptr<Value> value(Value::CreateStringValue(ipconfig.address));
- chromeos::SetNetworkIPConfigProperty(ipconfig_static->path,
- kAddressProperty,
- value.get());
+ scoped_ptr<GValue> gvalue(ConvertStringToGValue(ipconfig.address));
+ chromeos::SetNetworkIPConfigPropertyGValue(
+ ipconfig_static->path, kAddressProperty, gvalue.get());
}
if (ipconfig.netmask != ipconfig_static->netmask) {
- int32 prefixlen = ipconfig.GetPrefixLength();
+ int prefixlen = ipconfig.GetPrefixLength();
if (prefixlen == -1) {
VLOG(1) << "IP config prefixlen is invalid for netmask "
<< ipconfig.netmask;
} else {
- scoped_ptr<Value> value(Value::CreateIntegerValue(prefixlen));
- chromeos::SetNetworkIPConfigProperty(ipconfig_static->path,
- kPrefixlenProperty,
- value.get());
+ scoped_ptr<GValue> gvalue(ConvertIntToGValue(prefixlen));
+ chromeos::SetNetworkIPConfigPropertyGValue(
+ ipconfig_static->path, kPrefixlenProperty, gvalue.get());
}
}
if (ipconfig.gateway != ipconfig_static->gateway) {
- scoped_ptr<Value> value(Value::CreateStringValue(ipconfig.gateway));
- chromeos::SetNetworkIPConfigProperty(ipconfig_static->path,
- kGatewayProperty,
- value.get());
+ scoped_ptr<GValue> gvalue(ConvertStringToGValue(ipconfig.gateway));
+ chromeos::SetNetworkIPConfigPropertyGValue(
+ ipconfig_static->path, kGatewayProperty, gvalue.get());
}
if (ipconfig.name_servers != ipconfig_static->name_servers) {
- scoped_ptr<Value> value(
- Value::CreateStringValue(ipconfig.name_servers));
- chromeos::SetNetworkIPConfigProperty(ipconfig_static->path,
- kNameServersProperty,
- value.get());
+ scoped_ptr<GValue> gvalue(ConvertStringToGValue(ipconfig.name_servers));
+ chromeos::SetNetworkIPConfigPropertyGValue(
+ ipconfig_static->path, kNameServersProperty, gvalue.get());
}
// Remove dhcp ip config if there is one.
if (ipconfig_dhcp)
@@ -3697,11 +3829,12 @@ void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) {
// static
void NetworkLibraryImplCros::NetworkManagerStatusChangedHandler(
- void* object, const char* path, const char* key, const Value* value) {
+ void* object, const char* path, const char* key, const GValue* gvalue) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- networklib->NetworkManagerStatusChanged(key, value);
+ scoped_ptr<Value> value(ConvertGlibValue(gvalue));
+ networklib->NetworkManagerStatusChanged(key, value.get());
}
// This processes all Manager update messages.
@@ -3797,18 +3930,17 @@ void NetworkLibraryImplCros::NetworkManagerStatusChanged(
// static
void NetworkLibraryImplCros::NetworkManagerUpdate(
- void* object, const char* manager_path, const Value* info) {
+ void* object, const char* manager_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- if (!info) {
+ if (!ghash) {
LOG(ERROR) << "Error retrieving manager properties: " << manager_path;
return;
}
VLOG(1) << "Received NetworkManagerUpdate.";
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
- networklib->ParseNetworkManager(*dict);
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
+ networklib->ParseNetworkManager(*(dict.get()));
}
void NetworkLibraryImplCros::ParseNetworkManager(const DictionaryValue& dict) {
@@ -3921,9 +4053,9 @@ void NetworkLibraryImplCros::UpdateNetworkServiceList(
// Use update_request map to store network priority.
network_update_requests_[service_path] = network_priority_order++;
wifi_scanning_ = true;
- chromeos::RequestNetworkServiceInfo(service_path.c_str(),
- &NetworkServiceUpdate,
- this);
+ chromeos::RequestNetworkServiceProperties(service_path.c_str(),
+ &NetworkServiceUpdate,
+ this);
}
}
// Iterate through list of remaining networks that are no longer in the
@@ -3966,25 +4098,24 @@ void NetworkLibraryImplCros::UpdateWatchedNetworkServiceList(
(*iter)->GetAsString(&service_path);
if (!service_path.empty()) {
VLOG(1) << "Watched Service: " << service_path;
- chromeos::RequestNetworkServiceInfo(service_path.c_str(),
- &NetworkServiceUpdate,
- this);
+ chromeos::RequestNetworkServiceProperties(service_path.c_str(),
+ &NetworkServiceUpdate,
+ this);
}
}
}
// static
void NetworkLibraryImplCros::NetworkServiceUpdate(
- void* object, const char* service_path, const Value* info) {
+ void* object, const char* service_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
if (service_path) {
- if (!info)
+ if (!ghash)
return; // Network no longer in visible list, ignore.
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
- networklib->ParseNetwork(std::string(service_path), *dict);
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
+ networklib->ParseNetwork(std::string(service_path), *(dict.get()));
}
}
@@ -4077,7 +4208,7 @@ void NetworkLibraryImplCros::UpdateRememberedNetworks(
void NetworkLibraryImplCros::RequestRememberedNetworksUpdate() {
VLOG(1) << "RequestRememberedNetworksUpdate";
// Delete all remembered networks. We delete them because
- // RequestNetworkProfile is asynchronous and may invoke
+ // RequestNetworkProfileProperties is asynchronous and may invoke
// UpdateRememberedServiceList multiple times (once per profile).
// We can do this safely because we do not save any local state for
// remembered networks. This list updates infrequently.
@@ -4089,24 +4220,23 @@ void NetworkLibraryImplCros::RequestRememberedNetworksUpdate() {
iter != profile_list_.end(); ++iter) {
NetworkProfile& profile = *iter;
VLOG(1) << " Requesting Profile: " << profile.path;
- chromeos::RequestNetworkProfile(
+ chromeos::RequestNetworkProfileProperties(
profile.path.c_str(), &ProfileUpdate, this);
}
}
// static
void NetworkLibraryImplCros::ProfileUpdate(
- void* object, const char* profile_path, const Value* info) {
+ void* object, const char* profile_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
- if (!info) {
+ if (!ghash) {
LOG(ERROR) << "Error retrieving profile: " << profile_path;
return;
}
VLOG(1) << "Received ProfileUpdate for: " << profile_path;
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
ListValue* entries(NULL);
dict->GetList(kEntriesProperty, &entries);
DCHECK(entries);
@@ -4141,27 +4271,28 @@ void NetworkLibraryImplCros::UpdateRememberedServiceList(
// Add service to profile list.
profile.services.insert(service_path);
// Request update for remembered network.
- chromeos::RequestNetworkProfileEntry(profile_path,
- service_path.c_str(),
- &RememberedNetworkServiceUpdate,
- this);
+ chromeos::RequestNetworkProfileEntryProperties(
+ profile_path,
+ service_path.c_str(),
+ &RememberedNetworkServiceUpdate,
+ this);
}
}
// static
void NetworkLibraryImplCros::RememberedNetworkServiceUpdate(
- void* object, const char* service_path, const Value* info) {
+ void* object, const char* service_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
if (service_path) {
- if (!info) {
+ if (!ghash) {
// Remembered network no longer exists.
networklib->DeleteRememberedNetwork(std::string(service_path));
} else {
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
- networklib->ParseRememberedNetwork(std::string(service_path), *dict);
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
+ networklib->ParseRememberedNetwork(
+ std::string(service_path), *(dict.get()));
}
}
}
@@ -4204,11 +4335,12 @@ Network* NetworkLibraryImplCros::ParseRememberedNetwork(
VLOG(1) << "Requesting VPN: " << vpn->name()
<< " Server: " << vpn->server_hostname()
<< " Type: " << provider_type;
- chromeos::RequestVirtualNetwork(vpn->name().c_str(),
- vpn->server_hostname().c_str(),
- provider_type.c_str(),
- NetworkServiceUpdate,
- this);
+ chromeos::RequestVirtualNetworkProperties(
+ vpn->name().c_str(),
+ vpn->server_hostname().c_str(),
+ provider_type.c_str(),
+ NetworkServiceUpdate,
+ this);
}
}
@@ -4236,9 +4368,9 @@ void NetworkLibraryImplCros::UpdateNetworkDeviceList(const ListValue* devices) {
device_map_[device_path] = found->second;
old_device_map.erase(found);
}
- chromeos::RequestNetworkDeviceInfo(device_path.c_str(),
- &NetworkDeviceUpdate,
- this);
+ chromeos::RequestNetworkDeviceProperties(device_path.c_str(),
+ &NetworkDeviceUpdate,
+ this);
}
}
// Delete any old devices that no longer exist.
@@ -4252,18 +4384,17 @@ void NetworkLibraryImplCros::UpdateNetworkDeviceList(const ListValue* devices) {
// static
void NetworkLibraryImplCros::NetworkDeviceUpdate(
- void* object, const char* device_path, const Value* info) {
+ void* object, const char* device_path, GHashTable* ghash) {
NetworkLibraryImplCros* networklib =
static_cast<NetworkLibraryImplCros*>(object);
DCHECK(networklib);
if (device_path) {
- if (!info) {
+ if (!ghash) {
// device no longer exists.
networklib->DeleteDevice(std::string(device_path));
} else {
- DCHECK_EQ(info->GetType(), Value::TYPE_DICTIONARY);
- const DictionaryValue* dict = static_cast<const DictionaryValue*>(info);
- networklib->ParseNetworkDevice(std::string(device_path), *dict);
+ scoped_ptr<DictionaryValue> dict(ConvertGHashTable(ghash));
+ networklib->ParseNetworkDevice(std::string(device_path), *(dict.get()));
}
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698