diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 89e5b74c5dd..2e1dc83ff66 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -1132,7 +1132,7 @@ public class WifiSettings extends RestrictedSettingsFragment * @param config The WiFi config. * @return true if the config is not editable through Settings. */ - static boolean isEditabilityLockedDown(Context context, WifiConfiguration config) { + public static boolean isEditabilityLockedDown(Context context, WifiConfiguration config) { return !canModifyNetwork(context, config); } diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java index f427e1cdce3..9dec71d31de 100644 --- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java @@ -19,6 +19,8 @@ import static android.net.NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL; import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED; import static android.net.NetworkCapabilities.TRANSPORT_WIFI; +import static com.android.settings.wifi.WifiSettings.isEditabilityLockedDown; + import android.app.Fragment; import android.content.BroadcastReceiver; import android.content.Context; @@ -464,7 +466,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController * Returns whether the network represented by this preference can be forgotten. */ private boolean canForgetNetwork() { - return mWifiInfo != null && mWifiInfo.isEphemeral() || mWifiConfig != null; + // TODO(65396674): create test for the locked down scenario + return (mWifiInfo != null && mWifiInfo.isEphemeral()) + || (mWifiConfig != null && !isEditabilityLockedDown(mContext, mWifiConfig)); } /** diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java index bdbe48addd0..4bc4c34649c 100644 --- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java @@ -18,12 +18,15 @@ package com.android.settings.wifi.details; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -138,7 +141,7 @@ public class WifiDetailPreferenceControllerTest { @Captor private ArgumentCaptor mForgetClickListener; @Captor private ArgumentCaptor mIpv6AddressCaptor; - private Context mContext = RuntimeEnvironment.application; + private Context mContext; private Lifecycle mLifecycle; private LinkProperties mLinkProperties; private WifiDetailPreferenceController mController; @@ -199,6 +202,7 @@ public class WifiDetailPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); + mContext = spy(RuntimeEnvironment.application); mLifecycle = new Lifecycle(); when(mockAccessPoint.getConfig()).thenReturn(mockWifiConfig); @@ -230,6 +234,8 @@ public class WifiDetailPreferenceControllerTest { .thenReturn(mockHeaderController); when(mockHeaderController.setSummary(anyString())).thenReturn(mockHeaderController); + doReturn(null).when(mContext).getSystemService(eq(Context.DEVICE_POLICY_SERVICE)); + setupMockedPreferenceScreen(); mController = newWifiDetailPreferenceController(); }