diff --git a/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java b/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java index 1a3d195a973..3a515cc8db7 100644 --- a/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java +++ b/src/com/android/settings/wifi/details/WifiMeteredPreferenceController.java @@ -63,7 +63,9 @@ public class WifiMeteredPreferenceController extends BasePreferenceController im @Override public boolean onPreferenceChange(Preference preference, Object newValue) { - mWifiConfiguration.meteredOverride = Integer.parseInt((String) newValue); + if (mWifiConfiguration != null) { + mWifiConfiguration.meteredOverride = Integer.parseInt((String) newValue); + } mWifiManager.updateNetwork(mWifiConfiguration); // Stage the backup of the SettingsProvider package which backs this up BackupManager.dataChanged("com.android.providers.settings"); @@ -73,8 +75,11 @@ public class WifiMeteredPreferenceController extends BasePreferenceController im @VisibleForTesting int getMeteredOverride() { - // Wrap the meteredOverride since robolectric cannot recognize it - return mWifiConfiguration.meteredOverride; + if (mWifiConfiguration != null) { + // Wrap the meteredOverride since robolectric cannot recognize it + return mWifiConfiguration.meteredOverride; + } + return WifiConfiguration.METERED_OVERRIDE_NONE; } private void updateSummary(DropDownPreference preference, int meteredOverride) { diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java index b3e5cb5117e..00a4a94e10d 100644 --- a/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/wifi/details/WifiMeteredPreferenceControllerTest.java @@ -83,4 +83,12 @@ public class WifiMeteredPreferenceControllerTest { assertThat(mDropDownPreference.getEntry()).isEqualTo("Detect automatically"); } + + @Test + public void testController_resilientToNullConfig() { + mPreferenceController = spy(new WifiMeteredPreferenceController(mContext, null)); + + mPreferenceController.getMeteredOverride(); + mPreferenceController.onPreferenceChange(mDropDownPreference, new Integer(1)); + } }