diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java index c0921fc9e40..13905c8abbe 100644 --- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java @@ -838,7 +838,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController * Returns whether the user can sign into the network represented by this preference. */ private boolean canSignIntoNetwork() { - return WifiUtils.canSignIntoNetwork(mNetworkCapabilities); + return mAccessPoint.isActive() && WifiUtils.canSignIntoNetwork(mNetworkCapabilities); } /** 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 307712e686b..2166e979131 100644 --- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java @@ -1404,6 +1404,27 @@ public class WifiDetailPreferenceControllerTest { .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_SIGNIN); } + @Test + public void testSignInButton_shouldHideSignInButtonForDisconnectedNetwork() { + setUpForDisconnectedNetwork(); + NetworkCapabilities nc = makeNetworkCapabilities(); + nc.addCapability(NetworkCapabilities.NET_CAPABILITY_CAPTIVE_PORTAL); + when(mockConnectivityManager.getNetworkCapabilities(mockNetwork)) + .thenReturn(new NetworkCapabilities(nc)); + + // verify onResume + displayAndResume(); + + verify(mockButtonsPref, never()).setButton2Visible(true); + verify(mockButtonsPref).setButton2Visible(false); + + // verify onCapabilitiesChanged + updateNetworkCapabilities(nc); + + verify(mockButtonsPref, never()).setButton2Visible(true); + verify(mockButtonsPref).setButton2Visible(false); + } + @Test public void testRefreshRssiViews_shouldNotUpdateIfLevelIsSame() { displayAndResume(); @@ -1437,7 +1458,6 @@ public class WifiDetailPreferenceControllerTest { verify(mockSignalStrengthPref, times(2)).setVisible(false); } - private ActionButtonsPreference createMock() { final ActionButtonsPreference pref = mock(ActionButtonsPreference.class); when(pref.setButton1Text(anyInt())).thenReturn(pref);