Fix a NPE when forget wifi network

To prevent the null activity. If activity is null, there is no need to
execute.

Bug: 184154325
Test: manual test
      make RunSettingsRoboTests ROBOTEST_FILTER=WifiDetailPreferenceController2Test
Change-Id: I0dc32e7ea2a0d5a3f2a55ad8936578ed9fadd201
This commit is contained in:
changbetty
2021-05-04 22:17:33 +08:00
parent d8c11f5236
commit e7d468f658
2 changed files with 22 additions and 5 deletions

View File

@@ -958,9 +958,11 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
mWifiEntry.forget(this); mWifiEntry.forget(this);
} }
mMetricsFeatureProvider.action( final Activity activity = mFragment.getActivity();
mFragment.getActivity(), SettingsEnums.ACTION_WIFI_FORGET); if (activity != null) {
mFragment.getActivity().finish(); mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_WIFI_FORGET);
activity.finish();
}
} }
@VisibleForTesting @VisibleForTesting
@@ -1135,8 +1137,11 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
Log.e(TAG, "Forget Wi-Fi network failed"); Log.e(TAG, "Forget Wi-Fi network failed");
} }
mMetricsFeatureProvider.action(mFragment.getActivity(), SettingsEnums.ACTION_WIFI_FORGET); final Activity activity = mFragment.getActivity();
mFragment.getActivity().finish(); if (activity != null) {
mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_WIFI_FORGET);
activity.finish();
}
} }
/** /**

View File

@@ -1266,6 +1266,18 @@ public class WifiDetailPreferenceController2Test {
Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 1); Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 1);
} }
@Test
public void forgetNetwork_activityGone_ignoreFinish() {
setUpForConnectedNetwork();
setUpSpyController();
displayAndResume();
when(mMockFragment.getActivity()).thenReturn(null);
mForgetClickListener.getValue().onClick(null);
verify(mMockActivity, never()).finish();
}
@Test @Test
public void forgetNetwork_standardWifiNetwork_forget() { public void forgetNetwork_standardWifiNetwork_forget() {
setUpForConnectedNetwork(); setUpForConnectedNetwork();