| Index: chromeos/network/network_device_handler_impl.cc
|
| diff --git a/chromeos/network/network_device_handler_impl.cc b/chromeos/network/network_device_handler_impl.cc
|
| index d1b1d05d633d019fcac723fa0767606a5af9c7ad..76dc05b54e12a16f23c1b53479e4edda2a730b33 100644
|
| --- a/chromeos/network/network_device_handler_impl.cc
|
| +++ b/chromeos/network/network_device_handler_impl.cc
|
| @@ -434,7 +434,7 @@ void NetworkDeviceHandlerImpl::SetCellularAllowRoaming(
|
|
|
| void NetworkDeviceHandlerImpl::SetMACAddressRandomizationEnabled(
|
| const bool enabled) {
|
| - mac_addr_randomization_ = enabled;
|
| + mac_addr_randomization_enabled_ = enabled;
|
| ApplyMACAddressRandomizationToShill();
|
| }
|
|
|
| @@ -532,7 +532,9 @@ void NetworkDeviceHandlerImpl::DeviceListChanged() {
|
| NetworkDeviceHandlerImpl::NetworkDeviceHandlerImpl()
|
| : network_state_handler_(NULL),
|
| cellular_allow_roaming_(false),
|
| - mac_addr_randomization_(false) {}
|
| + mac_addr_randomization_supported_(true),
|
| + mac_addr_randomization_enabled_(false),
|
| + weak_ptr_factory_(this) {}
|
|
|
| void NetworkDeviceHandlerImpl::Init(
|
| NetworkStateHandler* network_state_handler) {
|
| @@ -573,16 +575,28 @@ void NetworkDeviceHandlerImpl::ApplyCellularAllowRoamingToShill() {
|
| }
|
|
|
| void NetworkDeviceHandlerImpl::ApplyMACAddressRandomizationToShill() {
|
| + if (!mac_addr_randomization_supported_)
|
| + return;
|
| +
|
| const DeviceState* device_state =
|
| GetWifiDeviceState(network_handler::ErrorCallback());
|
| if (!device_state)
|
| return;
|
|
|
| - SetDevicePropertyInternal(device_state->path(),
|
| - shill::kMACAddressRandomizationProperty,
|
| - base::FundamentalValue(mac_addr_randomization_),
|
| - base::Bind(&base::DoNothing),
|
| - network_handler::ErrorCallback());
|
| + SetDevicePropertyInternal(
|
| + device_state->path(), shill::kMACAddressRandomizationProperty,
|
| + base::FundamentalValue(mac_addr_randomization_enabled_),
|
| + base::Bind(&base::DoNothing),
|
| + base::Bind(
|
| + &NetworkDeviceHandlerImpl::SetMACAddressRandomizationErrorCallback,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void NetworkDeviceHandlerImpl::SetMACAddressRandomizationErrorCallback(
|
| + const std::string& error_name,
|
| + std::unique_ptr<base::DictionaryValue> error_data) {
|
| + if (error_name == NetworkDeviceHandler::kErrorNotSupported)
|
| + mac_addr_randomization_supported_ = false;
|
| }
|
|
|
| const DeviceState* NetworkDeviceHandlerImpl::GetWifiDeviceState(
|
|
|