To disable Wi-Fi Direct when user restriction is set

- Remove the Location check for Wi-Fi Direct
 - Add user restriction check for Wi-Fi Direct

Bug: 204288318
Bug: 203170358
Test: make RunSettingsRoboTests ROBOTEST_FILTER=WifiP2PPreferenceControllerTest
Change-Id: I64dab964b485665dd42c933d8974aeda47f178fe
This commit is contained in:
changbetty
2021-12-21 02:49:03 +00:00
parent 8bf6efba9e
commit a639d26660
2 changed files with 37 additions and 38 deletions

View File

@@ -33,6 +33,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
import com.android.settingslib.wifi.WifiEnterpriseRestrictionUtils;
/**
* {@link PreferenceControllerMixin} to toggle Wifi Direct preference on Wi-Fi state.
@@ -51,27 +52,17 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController
}
};
private final IntentFilter mFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
private final LocationManager mLocationManager;
@VisibleForTesting
final BroadcastReceiver mLocationReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (mWifiDirectPref != null) {
updateState(mWifiDirectPref);
}
}
};
private final IntentFilter mLocationFilter =
new IntentFilter(LocationManager.MODE_CHANGED_ACTION);
private Preference mWifiDirectPref;
@VisibleForTesting
boolean mIsWifiDirectAllow;
public WifiP2pPreferenceController(
Context context, Lifecycle lifecycle, WifiManager wifiManager) {
super(context);
mWifiManager = wifiManager;
mIsWifiDirectAllow = WifiEnterpriseRestrictionUtils.isWifiDirectAllowed(context);
lifecycle.addObserver(this);
mLocationManager = (LocationManager) context.getSystemService(Service.LOCATION_SERVICE);
}
@Override
@@ -84,19 +75,17 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController
@Override
public void updateState(Preference preference) {
super.updateState(preference);
preference.setEnabled(mLocationManager.isLocationEnabled() && mWifiManager.isWifiEnabled());
preference.setEnabled(isWifiP2pAvailable());
}
@Override
public void onResume() {
mContext.registerReceiver(mReceiver, mFilter);
mContext.registerReceiver(mLocationReceiver, mLocationFilter);
}
@Override
public void onPause() {
mContext.unregisterReceiver(mReceiver);
mContext.unregisterReceiver(mLocationReceiver);
}
@Override
@@ -111,9 +100,11 @@ public class WifiP2pPreferenceController extends AbstractPreferenceController
private void togglePreferences() {
if (mWifiDirectPref != null) {
mWifiDirectPref.setEnabled(
mWifiManager.isWifiEnabled()
&& mLocationManager.isLocationEnabled());
mWifiDirectPref.setEnabled(isWifiP2pAvailable());
}
}
private boolean isWifiP2pAvailable() {
return mWifiManager.isWifiEnabled() && mIsWifiDirectAllow;
}
}