Chromium Code Reviews| 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..068706915574b958a241ccab50a98c4521c2482f 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,8 @@ 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) {} |
| void NetworkDeviceHandlerImpl::Init( |
| NetworkStateHandler* network_state_handler) { |
| @@ -573,16 +574,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, |
| + base::Unretained(this))); |
|
stevenjb
2016/08/02 22:42:34
We need to use a weak ptr here, otherwise the erro
|
| +} |
| + |
| +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( |