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

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

Issue 11756002: Move cros_network_functions.cc to src/chromeos (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clang fixes Created 7 years, 12 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
Index: chrome/browser/chromeos/cros/cros_network_functions.cc
diff --git a/chrome/browser/chromeos/cros/cros_network_functions.cc b/chrome/browser/chromeos/cros/cros_network_functions.cc
deleted file mode 100644
index 6dd361f77f64df103534ab66082fd62a8b45294a..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/cros/cros_network_functions.cc
+++ /dev/null
@@ -1,830 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/chromeos/cros/cros_network_functions.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/string_tokenizer.h"
-#include "base/stringprintf.h"
-#include "base/values.h"
-#include "chrome/browser/chromeos/cros/sms_watcher.h"
-#include "chromeos/dbus/dbus_thread_manager.h"
-#include "chromeos/dbus/shill_device_client.h"
-#include "chromeos/dbus/shill_ipconfig_client.h"
-#include "chromeos/dbus/shill_manager_client.h"
-#include "chromeos/dbus/shill_network_client.h"
-#include "chromeos/dbus/shill_profile_client.h"
-#include "chromeos/dbus/shill_property_changed_observer.h"
-#include "chromeos/dbus/shill_service_client.h"
-#include "dbus/object_path.h"
-#include "third_party/cros_system_api/dbus/service_constants.h"
-
-using base::DoNothing;
-
-namespace chromeos {
-
-namespace {
-
-// Class to watch network manager's properties without Libcros.
-class NetworkManagerPropertiesWatcher
- : public CrosNetworkWatcher,
- public ShillPropertyChangedObserver {
- public:
- NetworkManagerPropertiesWatcher(
- const NetworkPropertiesWatcherCallback& callback)
- : callback_(callback) {
- DBusThreadManager::Get()->GetShillManagerClient()->
- AddPropertyChangedObserver(this);
- }
-
- virtual ~NetworkManagerPropertiesWatcher() {
- DBusThreadManager::Get()->GetShillManagerClient()->
- RemovePropertyChangedObserver(this);
- }
-
- virtual void OnPropertyChanged(const std::string& name,
- const base::Value& value) {
- callback_.Run(flimflam::kFlimflamServicePath, name, value);
- }
- private:
- NetworkPropertiesWatcherCallback callback_;
-};
-
-// Class to watch network service's properties without Libcros.
-class NetworkServicePropertiesWatcher
- : public CrosNetworkWatcher,
- public ShillPropertyChangedObserver {
- public:
- NetworkServicePropertiesWatcher(
- const NetworkPropertiesWatcherCallback& callback,
- const std::string& service_path) : service_path_(service_path),
- callback_(callback) {
- DBusThreadManager::Get()->GetShillServiceClient()->
- AddPropertyChangedObserver(dbus::ObjectPath(service_path), this);
- }
-
- virtual ~NetworkServicePropertiesWatcher() {
- DBusThreadManager::Get()->GetShillServiceClient()->
- RemovePropertyChangedObserver(dbus::ObjectPath(service_path_), this);
- }
-
- virtual void OnPropertyChanged(const std::string& name,
- const base::Value& value) {
- callback_.Run(service_path_, name, value);
- }
-
- private:
- std::string service_path_;
- NetworkPropertiesWatcherCallback callback_;
-};
-
-// Class to watch network device's properties without Libcros.
-class NetworkDevicePropertiesWatcher
- : public CrosNetworkWatcher,
- public ShillPropertyChangedObserver {
- public:
- NetworkDevicePropertiesWatcher(
- const NetworkPropertiesWatcherCallback& callback,
- const std::string& device_path) : device_path_(device_path),
- callback_(callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->
- AddPropertyChangedObserver(dbus::ObjectPath(device_path), this);
- }
-
- virtual ~NetworkDevicePropertiesWatcher() {
- DBusThreadManager::Get()->GetShillDeviceClient()->
- RemovePropertyChangedObserver(dbus::ObjectPath(device_path_), this);
- }
-
- virtual void OnPropertyChanged(const std::string& name,
- const base::Value& value) {
- callback_.Run(device_path_, name, value);
- }
-
- private:
- std::string device_path_;
- NetworkPropertiesWatcherCallback callback_;
-};
-
-// Gets a string property from dictionary.
-bool GetStringProperty(const base::DictionaryValue& dictionary,
- const std::string& key,
- std::string* out) {
- const bool result = dictionary.GetStringWithoutPathExpansion(key, out);
- LOG_IF(WARNING, !result) << "Cannnot get property " << key;
- return result;
-}
-
-// Gets an int64 property from dictionary.
-bool GetInt64Property(const base::DictionaryValue& dictionary,
- const std::string& key,
- int64* out) {
- // Int64 value is stored as a double because it cannot be fitted in int32.
- double value_double = 0;
- const bool result = dictionary.GetDoubleWithoutPathExpansion(key,
- &value_double);
- if (result)
- *out = value_double;
- else
- LOG(WARNING) << "Cannnot get property " << key;
- return result;
-}
-
-// Gets a base::Time property from dictionary.
-bool GetTimeProperty(const base::DictionaryValue& dictionary,
- const std::string& key,
- base::Time* out) {
- int64 value_int64 = 0;
- if (!GetInt64Property(dictionary, key, &value_int64))
- return false;
- *out = base::Time::FromInternalValue(value_int64);
- return true;
-}
-
-// Does nothing. Used as a callback.
-void DoNothingWithCallStatus(DBusMethodCallStatus call_status) {}
-
-// Ignores errors.
-void IgnoreErrors(const std::string& error_name,
- const std::string& error_message) {}
-
-// A callback used to implement CrosRequest*Properties functions.
-void RunCallbackWithDictionaryValue(const NetworkPropertiesCallback& callback,
- const std::string& path,
- DBusMethodCallStatus call_status,
- const base::DictionaryValue& value) {
- callback.Run(path, call_status == DBUS_METHOD_CALL_SUCCESS ? &value : NULL);
-}
-
-// A callback used to implement CrosRequest*Properties functions.
-void RunCallbackWithDictionaryValueNoStatus(
- const NetworkPropertiesCallback& callback,
- const std::string& path,
- const base::DictionaryValue& value) {
- callback.Run(path, &value);
-}
-
-// A callback used to implement the error callback for CrosRequest*Properties
-// functions.
-void RunCallbackWithDictionaryValueError(
- const NetworkPropertiesCallback& callback,
- const std::string& path,
- const std::string& error_name,
- const std::string& error_message) {
- callback.Run(path, NULL);
-}
-
-// Used as a callback for ShillManagerClient::GetService
-void OnGetService(const NetworkPropertiesCallback& callback,
- const dbus::ObjectPath& service_path) {
- VLOG(1) << "OnGetServiceService: " << service_path.value();
- DBusThreadManager::Get()->GetShillServiceClient()->GetProperties(
- service_path, base::Bind(&RunCallbackWithDictionaryValue,
- callback,
- service_path.value()));
-}
-
-// A callback used to call a NetworkOperationCallback on error.
-void OnNetworkActionError(const NetworkOperationCallback& callback,
- const std::string& path,
- const std::string& error_name,
- const std::string& error_message) {
- if (error_name.empty())
- callback.Run(path, NETWORK_METHOD_ERROR_LOCAL, "");
- else
- callback.Run(path, NETWORK_METHOD_ERROR_REMOTE, error_message);
-}
-
-IPConfigType ParseIPConfigType(const std::string& type) {
- if (type == flimflam::kTypeIPv4)
- return IPCONFIG_TYPE_IPV4;
- if (type == flimflam::kTypeIPv6)
- return IPCONFIG_TYPE_IPV6;
- if (type == flimflam::kTypeDHCP)
- return IPCONFIG_TYPE_DHCP;
- if (type == flimflam::kTypeBOOTP)
- return IPCONFIG_TYPE_BOOTP;
- if (type == flimflam::kTypeZeroConf)
- return IPCONFIG_TYPE_ZEROCONF;
- if (type == flimflam::kTypeDHCP6)
- return IPCONFIG_TYPE_DHCP6;
- if (type == flimflam::kTypePPP)
- return IPCONFIG_TYPE_PPP;
- return IPCONFIG_TYPE_UNKNOWN;
-}
-
-// Converts a list of name servers to a string.
-std::string ConvertNameSerersListToString(const base::ListValue& name_servers) {
- std::string result;
- for (size_t i = 0; i != name_servers.GetSize(); ++i) {
- std::string name_server;
- if (!name_servers.GetString(i, &name_server)) {
- LOG(ERROR) << "name_servers[" << i << "] is not a string.";
- continue;
- }
- if (!result.empty())
- result += ",";
- result += name_server;
- }
- return result;
-}
-
-// Gets NetworkIPConfigVector populated with data from a
-// given DBus object path.
-//
-// returns true on success.
-bool ParseIPConfig(const std::string& device_path,
- const std::string& ipconfig_path,
- NetworkIPConfigVector* ipconfig_vector) {
- ShillIPConfigClient* ipconfig_client =
- DBusThreadManager::Get()->GetShillIPConfigClient();
- // TODO(hashimoto): Remove this blocking D-Bus method call. crosbug.com/29902
- scoped_ptr<base::DictionaryValue> properties(
- ipconfig_client->CallGetPropertiesAndBlock(
- dbus::ObjectPath(ipconfig_path)));
- if (!properties.get())
- return false;
-
- std::string type_string;
- properties->GetStringWithoutPathExpansion(flimflam::kMethodProperty,
- &type_string);
- std::string address;
- properties->GetStringWithoutPathExpansion(flimflam::kAddressProperty,
- &address);
- int32 prefix_len = 0;
- properties->GetIntegerWithoutPathExpansion(flimflam::kPrefixlenProperty,
- &prefix_len);
- std::string gateway;
- properties->GetStringWithoutPathExpansion(flimflam::kGatewayProperty,
- &gateway);
- base::ListValue* name_servers = NULL;
- std::string name_servers_string;
- // store nameservers as a comma delimited list
- if (properties->GetListWithoutPathExpansion(flimflam::kNameServersProperty,
- &name_servers)) {
- name_servers_string = ConvertNameSerersListToString(*name_servers);
- } else {
- LOG(ERROR) << "Cannot get name servers.";
- }
- ipconfig_vector->push_back(
- NetworkIPConfig(device_path,
- ParseIPConfigType(type_string),
- address,
- CrosPrefixLengthToNetmask(prefix_len),
- gateway,
- name_servers_string));
- return true;
-}
-
-void ListIPConfigsCallback(const NetworkGetIPConfigsCallback& callback,
- const std::string& device_path,
- DBusMethodCallStatus call_status,
- const base::DictionaryValue& properties) {
- NetworkIPConfigVector ipconfig_vector;
- std::string hardware_address;
- const ListValue* ips = NULL;
- if (call_status != DBUS_METHOD_CALL_SUCCESS ||
- !properties.GetListWithoutPathExpansion(flimflam::kIPConfigsProperty,
- &ips)) {
- callback.Run(ipconfig_vector, hardware_address);
- return;
- }
-
- for (size_t i = 0; i < ips->GetSize(); i++) {
- std::string ipconfig_path;
- if (!ips->GetString(i, &ipconfig_path)) {
- LOG(WARNING) << "Found NULL ip for device " << device_path;
- continue;
- }
- ParseIPConfig(device_path, ipconfig_path, &ipconfig_vector);
- }
- // Get the hardware address as well.
- properties.GetStringWithoutPathExpansion(flimflam::kAddressProperty,
- &hardware_address);
-
- callback.Run(ipconfig_vector, hardware_address);
-}
-
-} // namespace
-
-SMS::SMS()
- : validity(0),
- msgclass(0) {
-}
-
-SMS::~SMS() {}
-
-bool CrosActivateCellularModem(const std::string& service_path,
- const std::string& carrier) {
- return DBusThreadManager::Get()->GetShillServiceClient()->
- CallActivateCellularModemAndBlock(dbus::ObjectPath(service_path),
- carrier);
-}
-
-void CrosSetNetworkServiceProperty(const std::string& service_path,
- const std::string& property,
- const base::Value& value) {
- DBusThreadManager::Get()->GetShillServiceClient()->SetProperty(
- dbus::ObjectPath(service_path), property, value,
- base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosClearNetworkServiceProperty(const std::string& service_path,
- const std::string& property) {
- DBusThreadManager::Get()->GetShillServiceClient()->ClearProperty(
- dbus::ObjectPath(service_path), property, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosSetNetworkDeviceProperty(const std::string& device_path,
- const std::string& property,
- const base::Value& value) {
- DBusThreadManager::Get()->GetShillDeviceClient()->SetProperty(
- dbus::ObjectPath(device_path), property, value, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosSetNetworkIPConfigProperty(const std::string& ipconfig_path,
- const std::string& property,
- const base::Value& value) {
- DBusThreadManager::Get()->GetShillIPConfigClient()->SetProperty(
- dbus::ObjectPath(ipconfig_path), property, value,
- base::Bind(&DoNothingWithCallStatus));
-}
-
-void CrosSetNetworkManagerProperty(const std::string& property,
- const base::Value& value) {
- DBusThreadManager::Get()->GetShillManagerClient()->SetProperty(
- property, value, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosDeleteServiceFromProfile(const std::string& profile_path,
- const std::string& service_path) {
- DBusThreadManager::Get()->GetShillProfileClient()->DeleteEntry(
- dbus::ObjectPath(profile_path),
- service_path,
- base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-CrosNetworkWatcher* CrosMonitorNetworkManagerProperties(
- const NetworkPropertiesWatcherCallback& callback) {
- return new NetworkManagerPropertiesWatcher(callback);
-}
-
-CrosNetworkWatcher* CrosMonitorNetworkServiceProperties(
- const NetworkPropertiesWatcherCallback& callback,
- const std::string& service_path) {
- return new NetworkServicePropertiesWatcher(callback, service_path);
-}
-
-CrosNetworkWatcher* CrosMonitorNetworkDeviceProperties(
- const NetworkPropertiesWatcherCallback& callback,
- const std::string& device_path) {
- return new NetworkDevicePropertiesWatcher(callback, device_path);
-}
-
-CrosNetworkWatcher* CrosMonitorSMS(const std::string& modem_device_path,
- MonitorSMSCallback callback) {
- return new SMSWatcher(modem_device_path, callback);
-}
-
-void CrosRequestNetworkServiceConnect(
- const std::string& service_path,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillServiceClient()->Connect(
- dbus::ObjectPath(service_path),
- base::Bind(callback, service_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, service_path));
-}
-
-void CrosRequestNetworkManagerProperties(
- const NetworkPropertiesCallback& callback) {
- DBusThreadManager::Get()->GetShillManagerClient()->GetProperties(
- base::Bind(&RunCallbackWithDictionaryValue,
- callback,
- flimflam::kFlimflamServicePath));
-}
-
-void CrosRequestNetworkServiceProperties(
- const std::string& service_path,
- const NetworkPropertiesCallback& callback) {
- DBusThreadManager::Get()->GetShillServiceClient()->GetProperties(
- dbus::ObjectPath(service_path),
- base::Bind(&RunCallbackWithDictionaryValue, callback, service_path));
-}
-
-void CrosRequestNetworkDeviceProperties(
- const std::string& device_path,
- const NetworkPropertiesCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->GetProperties(
- dbus::ObjectPath(device_path),
- base::Bind(&RunCallbackWithDictionaryValue, callback, device_path));
-}
-
-void CrosRequestNetworkProfileProperties(
- const std::string& profile_path,
- const NetworkPropertiesCallback& callback) {
- DBusThreadManager::Get()->GetShillProfileClient()->GetProperties(
- dbus::ObjectPath(profile_path),
- base::Bind(&RunCallbackWithDictionaryValueNoStatus,
- callback, profile_path),
- base::Bind(&RunCallbackWithDictionaryValueError, callback, profile_path));
-}
-
-void CrosRequestNetworkProfileEntryProperties(
- const std::string& profile_path,
- const std::string& profile_entry_path,
- const NetworkPropertiesCallback& callback) {
- DBusThreadManager::Get()->GetShillProfileClient()->GetEntry(
- dbus::ObjectPath(profile_path),
- profile_entry_path,
- base::Bind(&RunCallbackWithDictionaryValueNoStatus,
- callback,
- profile_entry_path),
- base::Bind(&RunCallbackWithDictionaryValueError,
- callback,
- profile_entry_path));
-}
-
-void CrosRequestHiddenWifiNetworkProperties(
- const std::string& ssid,
- const std::string& security,
- const NetworkPropertiesCallback& callback) {
- base::DictionaryValue properties;
- properties.SetWithoutPathExpansion(
- flimflam::kModeProperty,
- new base::StringValue(flimflam::kModeManaged));
- properties.SetWithoutPathExpansion(
- flimflam::kTypeProperty,
- new base::StringValue(flimflam::kTypeWifi));
- properties.SetWithoutPathExpansion(
- flimflam::kSSIDProperty,
- new base::StringValue(ssid));
- properties.SetWithoutPathExpansion(
- flimflam::kSecurityProperty,
- new base::StringValue(security));
- // shill.Manger.GetService() will apply the property changes in
- // |properties| and return a new or existing service to OnGetService().
- // OnGetService will then call GetProperties which will then call callback.
- DBusThreadManager::Get()->GetShillManagerClient()->GetService(
- properties, base::Bind(&OnGetService, callback),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosRequestVirtualNetworkProperties(
- const std::string& service_name,
- const std::string& server_hostname,
- const std::string& provider_type,
- const NetworkPropertiesCallback& callback) {
- base::DictionaryValue properties;
- properties.SetWithoutPathExpansion(
- flimflam::kTypeProperty,
- new base::StringValue(flimflam::kTypeVPN));
- properties.SetWithoutPathExpansion(
- flimflam::kProviderNameProperty,
- new base::StringValue(service_name));
- properties.SetWithoutPathExpansion(
- flimflam::kProviderHostProperty,
- new base::StringValue(server_hostname));
- properties.SetWithoutPathExpansion(
- flimflam::kProviderTypeProperty,
- new base::StringValue(provider_type));
- // The actual value of Domain does not matter, so just use service_name.
- properties.SetWithoutPathExpansion(
- flimflam::kVPNDomainProperty,
- new base::StringValue(service_name));
-
- // shill.Manger.GetService() will apply the property changes in
- // |properties| and pass a new or existing service to OnGetService().
- // OnGetService will then call GetProperties which will then call callback.
- DBusThreadManager::Get()->GetShillManagerClient()->GetService(
- properties, base::Bind(&OnGetService, callback),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosRequestNetworkServiceDisconnect(const std::string& service_path) {
- DBusThreadManager::Get()->GetShillServiceClient()->Disconnect(
- dbus::ObjectPath(service_path), base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosRequestRemoveNetworkService(const std::string& service_path) {
- DBusThreadManager::Get()->GetShillServiceClient()->Remove(
- dbus::ObjectPath(service_path), base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosRequestNetworkScan(const std::string& network_type) {
- DBusThreadManager::Get()->GetShillManagerClient()->RequestScan(
- network_type, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-void CrosRequestNetworkDeviceEnable(const std::string& network_type,
- bool enable) {
- if (enable) {
- DBusThreadManager::Get()->GetShillManagerClient()->EnableTechnology(
- network_type, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
- } else {
- DBusThreadManager::Get()->GetShillManagerClient()->DisableTechnology(
- network_type, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
- }
-}
-
-void CrosRequestRequirePin(const std::string& device_path,
- const std::string& pin,
- bool enable,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->RequirePin(
- dbus::ObjectPath(device_path), pin, enable,
- base::Bind(callback, device_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, device_path));
-}
-
-void CrosRequestEnterPin(const std::string& device_path,
- const std::string& pin,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->EnterPin(
- dbus::ObjectPath(device_path), pin,
- base::Bind(callback, device_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, device_path));
-}
-
-void CrosRequestUnblockPin(const std::string& device_path,
- const std::string& unblock_code,
- const std::string& pin,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->UnblockPin(
- dbus::ObjectPath(device_path), unblock_code, pin,
- base::Bind(callback, device_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, device_path));
-}
-
-void CrosRequestChangePin(const std::string& device_path,
- const std::string& old_pin,
- const std::string& new_pin,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->ChangePin(
- dbus::ObjectPath(device_path), old_pin, new_pin,
- base::Bind(callback, device_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, device_path));
-}
-
-void CrosProposeScan(const std::string& device_path) {
- DBusThreadManager::Get()->GetShillDeviceClient()->ProposeScan(
- dbus::ObjectPath(device_path), base::Bind(&DoNothingWithCallStatus));
-}
-
-void CrosRequestCellularRegister(const std::string& device_path,
- const std::string& network_id,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->Register(
- dbus::ObjectPath(device_path), network_id,
- base::Bind(callback, device_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, device_path));
-}
-
-bool CrosSetOfflineMode(bool offline) {
- base::FundamentalValue value(offline);
- DBusThreadManager::Get()->GetShillManagerClient()->SetProperty(
- flimflam::kOfflineModeProperty, value, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
- return true;
-}
-
-void CrosListIPConfigs(const std::string& device_path,
- const NetworkGetIPConfigsCallback& callback) {
- const dbus::ObjectPath device_object_path(device_path);
- DBusThreadManager::Get()->GetShillDeviceClient()->GetProperties(
- device_object_path,
- base::Bind(&ListIPConfigsCallback, callback, device_path));
-}
-
-bool CrosListIPConfigsAndBlock(const std::string& device_path,
- NetworkIPConfigVector* ipconfig_vector,
- std::vector<std::string>* ipconfig_paths,
- std::string* hardware_address) {
- if (hardware_address)
- hardware_address->clear();
- const dbus::ObjectPath device_object_path(device_path);
- ShillDeviceClient* device_client =
- DBusThreadManager::Get()->GetShillDeviceClient();
- // TODO(hashimoto): Remove this blocking D-Bus method call.
- // crosbug.com/29902
- scoped_ptr<base::DictionaryValue> properties(
- device_client->CallGetPropertiesAndBlock(device_object_path));
- if (!properties.get())
- return false;
-
- ListValue* ips = NULL;
- if (!properties->GetListWithoutPathExpansion(
- flimflam::kIPConfigsProperty, &ips))
- return false;
-
- for (size_t i = 0; i < ips->GetSize(); i++) {
- std::string ipconfig_path;
- if (!ips->GetString(i, &ipconfig_path)) {
- LOG(WARNING) << "Found NULL ip for device " << device_path;
- continue;
- }
- ParseIPConfig(device_path, ipconfig_path, ipconfig_vector);
- if (ipconfig_paths)
- ipconfig_paths->push_back(ipconfig_path);
- }
- // Store the hardware address as well.
- if (hardware_address)
- properties->GetStringWithoutPathExpansion(flimflam::kAddressProperty,
- hardware_address);
- return true;
-}
-
-void CrosRequestIPConfigRefresh(const std::string& ipconfig_path) {
- DBusThreadManager::Get()->GetShillIPConfigClient()->Refresh(
- dbus::ObjectPath(ipconfig_path),
- base::Bind(&DoNothingWithCallStatus));
-}
-
-bool CrosGetWifiAccessPoints(WifiAccessPointVector* result) {
- scoped_ptr<base::DictionaryValue> manager_properties(
- DBusThreadManager::Get()->GetShillManagerClient()->
- CallGetPropertiesAndBlock());
- if (!manager_properties.get()) {
- LOG(WARNING) << "Couldn't read managers's properties";
- return false;
- }
-
- base::ListValue* devices = NULL;
- if (!manager_properties->GetListWithoutPathExpansion(
- flimflam::kDevicesProperty, &devices)) {
- LOG(WARNING) << flimflam::kDevicesProperty << " property not found";
- return false;
- }
- const base::Time now = base::Time::Now();
- bool found_at_least_one_device = false;
- result->clear();
- for (size_t i = 0; i < devices->GetSize(); i++) {
- std::string device_path;
- if (!devices->GetString(i, &device_path)) {
- LOG(WARNING) << "Couldn't get devices[" << i << "]";
- continue;
- }
- scoped_ptr<base::DictionaryValue> device_properties(
- DBusThreadManager::Get()->GetShillDeviceClient()->
- CallGetPropertiesAndBlock(dbus::ObjectPath(device_path)));
- if (!device_properties.get()) {
- LOG(WARNING) << "Couldn't read device's properties " << device_path;
- continue;
- }
-
- base::ListValue* networks = NULL;
- if (!device_properties->GetListWithoutPathExpansion(
- flimflam::kNetworksProperty, &networks))
- continue; // Some devices do not list networks, e.g. ethernet.
-
- base::Value* device_powered_value = NULL;
- bool device_powered = false;
- if (device_properties->GetWithoutPathExpansion(
- flimflam::kPoweredProperty, &device_powered_value) &&
- device_powered_value->GetAsBoolean(&device_powered) &&
- !device_powered)
- continue; // Skip devices that are not powered up.
-
- int scan_interval = 0;
- device_properties->GetIntegerWithoutPathExpansion(
- flimflam::kScanIntervalProperty, &scan_interval);
-
- found_at_least_one_device = true;
- for (size_t j = 0; j < networks->GetSize(); j++) {
- std::string network_path;
- if (!networks->GetString(j, &network_path)) {
- LOG(WARNING) << "Couldn't get networks[" << j << "]";
- continue;
- }
-
- scoped_ptr<base::DictionaryValue> network_properties(
- DBusThreadManager::Get()->GetShillNetworkClient()->
- CallGetPropertiesAndBlock(dbus::ObjectPath(network_path)));
- if (!network_properties.get()) {
- LOG(WARNING) << "Couldn't read network's properties " << network_path;
- continue;
- }
-
- // Using the scan interval as a proxy for approximate age.
- // TODO(joth): Replace with actual age, when available from dbus.
- const int age_seconds = scan_interval;
- WifiAccessPoint ap;
- network_properties->GetStringWithoutPathExpansion(
- flimflam::kAddressProperty, &ap.mac_address);
- network_properties->GetStringWithoutPathExpansion(
- flimflam::kNameProperty, &ap.name);
- ap.timestamp = now - base::TimeDelta::FromSeconds(age_seconds);
- network_properties->GetIntegerWithoutPathExpansion(
- flimflam::kSignalStrengthProperty, &ap.signal_strength);
- network_properties->GetIntegerWithoutPathExpansion(
- flimflam::kWifiChannelProperty, &ap.channel);
- result->push_back(ap);
- }
- }
- if (!found_at_least_one_device)
- return false; // No powered device found that has a 'Networks' array.
- return true;
-}
-
-void CrosConfigureService(const base::DictionaryValue& properties) {
- DBusThreadManager::Get()->GetShillManagerClient()->ConfigureService(
- properties, base::Bind(&DoNothing),
- base::Bind(&IgnoreErrors));
-}
-
-std::string CrosPrefixLengthToNetmask(int32 prefix_length) {
- std::string netmask;
- // Return the empty string for invalid inputs.
- if (prefix_length < 0 || prefix_length > 32)
- return netmask;
- for (int i = 0; i < 4; i++) {
- int remainder = 8;
- if (prefix_length >= 8) {
- prefix_length -= 8;
- } else {
- remainder = prefix_length;
- prefix_length = 0;
- }
- if (i > 0)
- netmask += ".";
- int value = remainder == 0 ? 0 :
- ((2L << (remainder - 1)) - 1) << (8 - remainder);
- netmask += StringPrintf("%d", value);
- }
- return netmask;
-}
-
-int32 CrosNetmaskToPrefixLength(const std::string& netmask) {
- int count = 0;
- int prefix_length = 0;
- StringTokenizer t(netmask, ".");
- while (t.GetNext()) {
- // If there are more than 4 numbers, then it's invalid.
- if (count == 4)
- return -1;
-
- std::string token = t.token();
- // If we already found the last mask and the current one is not
- // "0" then the netmask is invalid. For example, 255.224.255.0
- if (prefix_length / 8 != count) {
- if (token != "0")
- return -1;
- } else if (token == "255") {
- prefix_length += 8;
- } else if (token == "254") {
- prefix_length += 7;
- } else if (token == "252") {
- prefix_length += 6;
- } else if (token == "248") {
- prefix_length += 5;
- } else if (token == "240") {
- prefix_length += 4;
- } else if (token == "224") {
- prefix_length += 3;
- } else if (token == "192") {
- prefix_length += 2;
- } else if (token == "128") {
- prefix_length += 1;
- } else if (token == "0") {
- prefix_length += 0;
- } else {
- // mask is not a valid number.
- return -1;
- }
- count++;
- }
- if (count < 4)
- return -1;
- return prefix_length;
-}
-
-// Changes the active cellular carrier.
-void CrosSetCarrier(const std::string& device_path,
- const std::string& carrier,
- const NetworkOperationCallback& callback) {
- DBusThreadManager::Get()->GetShillDeviceClient()->SetCarrier(
- dbus::ObjectPath(device_path), carrier,
- base::Bind(callback, device_path, NETWORK_METHOD_ERROR_NONE,
- std::string()),
- base::Bind(&OnNetworkActionError, callback, device_path));
-}
-
-} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/cros/cros_network_functions.h ('k') | chrome/browser/chromeos/cros/cros_network_functions_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698