From 310ddbb79f183b6437ff3bda5f97180999e6cc11 Mon Sep 17 00:00:00 2001 From: Varun Anand Date: Tue, 17 Mar 2020 15:53:15 -0700 Subject: [PATCH] Fix the availability of UseOpenWifiPreferenceController. Right now, it crashes if mEnableUseWifiComponentName is disabled by the open wifi app. Bug: 150773571 Test: manual - along with ag/10741759, verified that disabling mEnableUseWifiComponentName hides the toggle instead of causing crash. Test: make RunSettingsRoboTests ROBOTEST_FILTER=UseOpenWifiPreferenceControllerTest Change-Id: I47e36fab411e4e4d1a23b7c91504139f124222e1 --- .../wifi/UseOpenWifiPreferenceController.java | 4 ++++ .../wifi/UseOpenWifiPreferenceControllerTest.java | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) 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));