diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index e2406826320..69183ff25c0 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -19,6 +19,8 @@ package com.android.settings.network; import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED; import static android.os.UserManager.DISALLOW_CONFIG_WIFI; +import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED; + import android.app.Activity; import android.app.Dialog; import android.app.settings.SettingsEnums; @@ -669,7 +671,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @VisibleForTesting void addModifyMenuIfSuitable(ContextMenu menu, WifiEntry wifiEntry) { if (mIsAdmin && wifiEntry.isSaved() - && wifiEntry.getConnectedState() != WifiEntry.CONNECTED_STATE_CONNECTED) { + && wifiEntry.getConnectedState() != CONNECTED_STATE_CONNECTED) { menu.add(Menu.NONE, MENU_ID_MODIFY, 0 /* order */, R.string.wifi_modify); } } @@ -765,7 +767,7 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment private void showDialog(WifiEntry wifiEntry, int dialogMode) { if (WifiUtils.isNetworkLockedDown(getActivity(), wifiEntry.getWifiConfiguration()) - && wifiEntry.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED) { + && wifiEntry.getConnectedState() == CONNECTED_STATE_CONNECTED) { RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(), RestrictedLockUtilsInternal.getDeviceOwner(getActivity())); return; @@ -1068,8 +1070,8 @@ public class NetworkProviderSettings extends RestrictedSettingsFragment @VisibleForTesting void launchNetworkDetailsFragment(LongPressWifiEntryPreference pref) { final WifiEntry wifiEntry = pref.getWifiEntry(); - if (!wifiEntry.isSaved()) { - Log.w(TAG, "launchNetworkDetailsFragment: Don't launch because WifiEntry isn't saved!"); + if (!wifiEntry.isSaved() && wifiEntry.getConnectedState() != CONNECTED_STATE_CONNECTED) { + Log.w(TAG, "Don't launch Wi-Fi details because WifiEntry is not saved or connected!"); return; } final Context context = requireContext(); diff --git a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java index 1bed8a82172..400f73f7f56 100644 --- a/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java +++ b/tests/robotests/src/com/android/settings/network/NetworkProviderSettingsTest.java @@ -22,6 +22,7 @@ import static com.android.settings.network.NetworkProviderSettings.MENU_ID_MODIF import static com.android.settings.network.NetworkProviderSettings.MENU_ID_SHARE; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_CONNECT; import static com.android.settings.wifi.WifiConfigUiBase2.MODE_MODIFY; +import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED; import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_DISCONNECTED; import static com.android.wifitrackerlib.WifiPickerTracker.WIFI_ENTRIES_CHANGED_REASON_GENERAL; @@ -343,7 +344,7 @@ public class NetworkProviderSettingsTest { when(mWifiEntry.canDisconnect()).thenReturn(true); when(mWifiEntry.canForget()).thenReturn(true); when(mWifiEntry.isSaved()).thenReturn(true); - when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED); + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED); final LongPressWifiEntryPreference connectedWifiEntryPreference = mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); @@ -366,7 +367,7 @@ public class NetworkProviderSettingsTest { when(mWifiEntry.canShare()).thenReturn(true); when(mWifiEntry.canForget()).thenReturn(true); when(mWifiEntry.isSaved()).thenReturn(true); - when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED); + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED); final LongPressWifiEntryPreference connectedWifiEntryPreference = mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); @@ -388,7 +389,7 @@ public class NetworkProviderSettingsTest { when(mWifiEntry.canShare()).thenReturn(false); when(mWifiEntry.canForget()).thenReturn(true); when(mWifiEntry.isSaved()).thenReturn(true); - when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED); + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED); final LongPressWifiEntryPreference connectedWifiEntryPreference = mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); @@ -872,14 +873,54 @@ public class NetworkProviderSettingsTest { } @Test - public void launchNetworkDetailsFragment_wifiEntryIsNotSaved_ignoreWifiEntry() { + public void launchNetworkDetailsFragment_entryDisconnectedNotSaved_ignore() { + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED); when(mWifiEntry.isSaved()).thenReturn(false); LongPressWifiEntryPreference preference = mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); mNetworkProviderSettings.launchNetworkDetailsFragment(preference); - verify(mWifiEntry, never()).getKey(); + verify(mContext, never()).startActivity(any()); + } + + @Test + public void launchNetworkDetailsFragment_entryConnectedNotSaved_launch() { + doNothing().when(mContext).startActivity(any()); + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED); + when(mWifiEntry.isSaved()).thenReturn(false); + LongPressWifiEntryPreference preference = + mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); + + mNetworkProviderSettings.launchNetworkDetailsFragment(preference); + + verify(mContext).startActivity(any()); + } + + @Test + public void launchNetworkDetailsFragment_entryDisconnectedSaved_launch() { + doNothing().when(mContext).startActivity(any()); + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_DISCONNECTED); + when(mWifiEntry.isSaved()).thenReturn(true); + LongPressWifiEntryPreference preference = + mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); + + mNetworkProviderSettings.launchNetworkDetailsFragment(preference); + + verify(mContext).startActivity(any()); + } + + @Test + public void launchNetworkDetailsFragment_entryConnectedSaved_launch() { + doNothing().when(mContext).startActivity(any()); + when(mWifiEntry.getConnectedState()).thenReturn(CONNECTED_STATE_CONNECTED); + when(mWifiEntry.isSaved()).thenReturn(true); + LongPressWifiEntryPreference preference = + mNetworkProviderSettings.createLongPressWifiEntryPreference(mWifiEntry); + + mNetworkProviderSettings.launchNetworkDetailsFragment(preference); + + verify(mContext).startActivity(any()); } @Implements(PreferenceFragmentCompat.class)