diff --git a/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java b/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java index 27cf1e2e809..44114e5aa75 100644 --- a/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java +++ b/src/com/android/settings/wifi/UseOpenWifiPreferenceController.java @@ -100,6 +100,10 @@ public class UseOpenWifiPreferenceController extends TogglePreferenceController @Override public int getAvailabilityStatus() { + // It is possible that mEnableUseWifiComponentName is no longer enabled by + // USE_OPEN_WIFI_PACKAGE. So update this component to reflect correct availability. + updateEnableUseWifiComponentName(); + checkForFeatureSupportedScorers(); return mDoFeatureSupportedScorersExist ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } diff --git a/tests/robotests/src/com/android/settings/wifi/UseOpenWifiPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/UseOpenWifiPreferenceControllerTest.java index beaa1a6b8ca..ca636a4996c 100644 --- a/tests/robotests/src/com/android/settings/wifi/UseOpenWifiPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/UseOpenWifiPreferenceControllerTest.java @@ -39,7 +39,6 @@ import android.net.NetworkScorerAppData; import android.provider.Settings; import androidx.fragment.app.Fragment; -import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.settings.R; @@ -143,6 +142,19 @@ public class UseOpenWifiPreferenceControllerTest { assertThat(mController.isAvailable()).isTrue(); } + @Test + public void isAvailable_disableUseOpenWifiComponentBetweenCalls_returnsTrueThenReturnsFalse() { + setupScorers(Lists.newArrayList(sAppData)); + createController(); + + assertThat(mController.isAvailable()).isTrue(); + + // Update NetworkScorerAppData so that it no longer has openWifiActivity. + setupScorers(Lists.newArrayList(sAppDataNoActivity)); + + assertThat(mController.isAvailable()).isFalse(); + } + @Test public void setChecked_withTrue_enableShouldStartEnableActivity() { setupScorers(Lists.newArrayList(sAppData, sAppDataNoActivity));