Loading src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +16 −6 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ public class WifiDetailPreferenceController extends PreferenceController impleme mSignalStr = context.getResources().getStringArray(R.array.wifi_signal); mWifiConfig = accessPoint.getConfig(); mWifiManager = wifiManager; mWifiInfo = wifiManager.getConnectionInfo(); lifecycle.addObserver(this); } Loading Loading @@ -265,16 +266,25 @@ public class WifiDetailPreferenceController extends PreferenceController impleme mDnsPref.setDetailText(builder.toString()); } /** * Returns whether the network represented by this preference can be forgotten. */ public boolean canForgetNetwork() { return mWifiInfo != null && mWifiInfo.isEphemeral() || mWifiConfig != null; } /** * Forgets the wifi network associated with this preference. */ public void forgetNetwork() { if (mWifiConfig.ephemeral) { mWifiManager.disableEphemeralNetwork(mWifiConfig.SSID); } else if (mWifiConfig.isPasspoint()) { if (mWifiInfo != null && mWifiInfo.isEphemeral()) { mWifiManager.disableEphemeralNetwork(mWifiInfo.getSSID()); } else if (mWifiConfig != null) { if (mWifiConfig.isPasspoint()) { mWifiManager.removePasspointConfiguration(mWifiConfig.FQDN); } else { mWifiManager.forget(mWifiConfig.networkId, null /* action listener */); } } } } src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +4 −5 Original line number Diff line number Diff line Loading @@ -16,10 +16,8 @@ package com.android.settings.wifi.details; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.android.internal.logging.nano.MetricsProto; Loading Loading @@ -63,8 +61,9 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { // Header Title set automatically from launching Preference mForgetButton = (Button) ((LayoutPreference) findPreference(KEY_FORGET_BUTTON)) .findViewById(R.id.button); LayoutPreference forgetPreference = ((LayoutPreference) findPreference(KEY_FORGET_BUTTON)); forgetPreference.setVisible(mWifiDetailPreferenceController.canForgetNetwork()); mForgetButton = (Button) forgetPreference.findViewById(R.id.button); mForgetButton.setText(R.string.forget); mForgetButton.setOnClickListener(view -> forgetNetwork()); } Loading @@ -72,7 +71,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { private void forgetNetwork() { mMetricsFeatureProvider.action(getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_FORGET); mWifiDetailPreferenceController.forgetNetwork(); mForgetButton.setEnabled(false); getActivity().finish(); } @Override Loading tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java +36 −12 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.wifi.details; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading Loading @@ -93,14 +94,14 @@ public class WifiDetailPreferenceControllerTest { when(mockAccessPoint.getRssi()).thenReturn(RSSI); when(mockAccessPoint.getSecurityString(false)).thenReturn(SECURITY); when(mockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED); when(mockWifiInfo.getRssi()).thenReturn(RSSI); when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo); mController = new WifiDetailPreferenceController( mockAccessPoint, mContext, mLifecycle, mockWifiManager); setupMockedPreferenceScreen(); when(mockWifiInfo.getRssi()).thenReturn(RSSI); when(mockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED); when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo); } private void setupMockedPreferenceScreen() { Loading Loading @@ -143,7 +144,8 @@ public class WifiDetailPreferenceControllerTest { public void latestWifiInfoAndConfig_shouldBeFetchedOnResume() { mController.onResume(); verify(mockWifiManager).getConnectionInfo(); // Once in construction, once in onResume verify(mockWifiManager, times(2)).getConnectionInfo(); } @Test Loading Loading @@ -193,19 +195,41 @@ public class WifiDetailPreferenceControllerTest { } @Test public void forgetNetwork_ephemeral() { WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "ssid"; // WifiConfiguration#isEphemeral will not be visible in robolectric until O is supported wifiConfiguration.ephemeral = true; when(mockAccessPoint.getConfig()).thenReturn(wifiConfiguration); public void canForgetNetwork_noNetwork() { when(mockAccessPoint.getConfig()).thenReturn(null); mController = new WifiDetailPreferenceController( mockAccessPoint, mContext, mLifecycle, mockWifiManager); assertThat(mController.canForgetNetwork()).isFalse(); } @Test public void canForgetNetwork_ephemeral() { when(mockWifiInfo.isEphemeral()).thenReturn(true); when(mockAccessPoint.getConfig()).thenReturn(null); mController = new WifiDetailPreferenceController( mockAccessPoint, mContext, mLifecycle, mockWifiManager); assertThat(mController.canForgetNetwork()).isTrue(); } @Test public void canForgetNetwork_saved() { assertThat(mController.canForgetNetwork()).isTrue(); } @Test public void forgetNetwork_ephemeral() { String ssid = "ssid"; when(mockWifiInfo.isEphemeral()).thenReturn(true); when(mockWifiInfo.getSSID()).thenReturn(ssid); mController.forgetNetwork(); verify(mockWifiManager).disableEphemeralNetwork(wifiConfiguration.SSID); verify(mockWifiManager).disableEphemeralNetwork(ssid); } @Test Loading Loading
src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +16 −6 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ public class WifiDetailPreferenceController extends PreferenceController impleme mSignalStr = context.getResources().getStringArray(R.array.wifi_signal); mWifiConfig = accessPoint.getConfig(); mWifiManager = wifiManager; mWifiInfo = wifiManager.getConnectionInfo(); lifecycle.addObserver(this); } Loading Loading @@ -265,16 +266,25 @@ public class WifiDetailPreferenceController extends PreferenceController impleme mDnsPref.setDetailText(builder.toString()); } /** * Returns whether the network represented by this preference can be forgotten. */ public boolean canForgetNetwork() { return mWifiInfo != null && mWifiInfo.isEphemeral() || mWifiConfig != null; } /** * Forgets the wifi network associated with this preference. */ public void forgetNetwork() { if (mWifiConfig.ephemeral) { mWifiManager.disableEphemeralNetwork(mWifiConfig.SSID); } else if (mWifiConfig.isPasspoint()) { if (mWifiInfo != null && mWifiInfo.isEphemeral()) { mWifiManager.disableEphemeralNetwork(mWifiInfo.getSSID()); } else if (mWifiConfig != null) { if (mWifiConfig.isPasspoint()) { mWifiManager.removePasspointConfiguration(mWifiConfig.FQDN); } else { mWifiManager.forget(mWifiConfig.networkId, null /* action listener */); } } } }
src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java +4 −5 Original line number Diff line number Diff line Loading @@ -16,10 +16,8 @@ package com.android.settings.wifi.details; import android.content.Context; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.Bundle; import android.view.View; import android.widget.Button; import com.android.internal.logging.nano.MetricsProto; Loading Loading @@ -63,8 +61,9 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { // Header Title set automatically from launching Preference mForgetButton = (Button) ((LayoutPreference) findPreference(KEY_FORGET_BUTTON)) .findViewById(R.id.button); LayoutPreference forgetPreference = ((LayoutPreference) findPreference(KEY_FORGET_BUTTON)); forgetPreference.setVisible(mWifiDetailPreferenceController.canForgetNetwork()); mForgetButton = (Button) forgetPreference.findViewById(R.id.button); mForgetButton.setText(R.string.forget); mForgetButton.setOnClickListener(view -> forgetNetwork()); } Loading @@ -72,7 +71,7 @@ public class WifiNetworkDetailsFragment extends DashboardFragment { private void forgetNetwork() { mMetricsFeatureProvider.action(getActivity(), MetricsProto.MetricsEvent.ACTION_WIFI_FORGET); mWifiDetailPreferenceController.forgetNetwork(); mForgetButton.setEnabled(false); getActivity().finish(); } @Override Loading
tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java +36 −12 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.wifi.details; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading Loading @@ -93,14 +94,14 @@ public class WifiDetailPreferenceControllerTest { when(mockAccessPoint.getRssi()).thenReturn(RSSI); when(mockAccessPoint.getSecurityString(false)).thenReturn(SECURITY); when(mockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED); when(mockWifiInfo.getRssi()).thenReturn(RSSI); when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo); mController = new WifiDetailPreferenceController( mockAccessPoint, mContext, mLifecycle, mockWifiManager); setupMockedPreferenceScreen(); when(mockWifiInfo.getRssi()).thenReturn(RSSI); when(mockWifiInfo.getLinkSpeed()).thenReturn(LINK_SPEED); when(mockWifiManager.getConnectionInfo()).thenReturn(mockWifiInfo); } private void setupMockedPreferenceScreen() { Loading Loading @@ -143,7 +144,8 @@ public class WifiDetailPreferenceControllerTest { public void latestWifiInfoAndConfig_shouldBeFetchedOnResume() { mController.onResume(); verify(mockWifiManager).getConnectionInfo(); // Once in construction, once in onResume verify(mockWifiManager, times(2)).getConnectionInfo(); } @Test Loading Loading @@ -193,19 +195,41 @@ public class WifiDetailPreferenceControllerTest { } @Test public void forgetNetwork_ephemeral() { WifiConfiguration wifiConfiguration = new WifiConfiguration(); wifiConfiguration.SSID = "ssid"; // WifiConfiguration#isEphemeral will not be visible in robolectric until O is supported wifiConfiguration.ephemeral = true; when(mockAccessPoint.getConfig()).thenReturn(wifiConfiguration); public void canForgetNetwork_noNetwork() { when(mockAccessPoint.getConfig()).thenReturn(null); mController = new WifiDetailPreferenceController( mockAccessPoint, mContext, mLifecycle, mockWifiManager); assertThat(mController.canForgetNetwork()).isFalse(); } @Test public void canForgetNetwork_ephemeral() { when(mockWifiInfo.isEphemeral()).thenReturn(true); when(mockAccessPoint.getConfig()).thenReturn(null); mController = new WifiDetailPreferenceController( mockAccessPoint, mContext, mLifecycle, mockWifiManager); assertThat(mController.canForgetNetwork()).isTrue(); } @Test public void canForgetNetwork_saved() { assertThat(mController.canForgetNetwork()).isTrue(); } @Test public void forgetNetwork_ephemeral() { String ssid = "ssid"; when(mockWifiInfo.isEphemeral()).thenReturn(true); when(mockWifiInfo.getSSID()).thenReturn(ssid); mController.forgetNetwork(); verify(mockWifiManager).disableEphemeralNetwork(wifiConfiguration.SSID); verify(mockWifiManager).disableEphemeralNetwork(ssid); } @Test Loading