From e7d468f6583b5f935801e2fb0c1ea7151b5e397a Mon Sep 17 00:00:00 2001 From: changbetty Date: Tue, 4 May 2021 22:17:33 +0800 Subject: [PATCH] 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 --- .../details2/WifiDetailPreferenceController2.java | 15 ++++++++++----- .../WifiDetailPreferenceController2Test.java | 12 ++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java index 3c312b8f7b9..b66633e03a2 100644 --- a/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java +++ b/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2.java @@ -958,9 +958,11 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle mWifiEntry.forget(this); } - mMetricsFeatureProvider.action( - mFragment.getActivity(), SettingsEnums.ACTION_WIFI_FORGET); - mFragment.getActivity().finish(); + final Activity activity = mFragment.getActivity(); + if (activity != null) { + mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_WIFI_FORGET); + activity.finish(); + } } @VisibleForTesting @@ -1135,8 +1137,11 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle Log.e(TAG, "Forget Wi-Fi network failed"); } - mMetricsFeatureProvider.action(mFragment.getActivity(), SettingsEnums.ACTION_WIFI_FORGET); - mFragment.getActivity().finish(); + final Activity activity = mFragment.getActivity(); + if (activity != null) { + mMetricsFeatureProvider.action(activity, SettingsEnums.ACTION_WIFI_FORGET); + activity.finish(); + } } /** diff --git a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java index 4360a09cb5f..8bfc1331b62 100644 --- a/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java +++ b/tests/robotests/src/com/android/settings/wifi/details2/WifiDetailPreferenceController2Test.java @@ -1266,6 +1266,18 @@ public class WifiDetailPreferenceController2Test { 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 public void forgetNetwork_standardWifiNetwork_forget() { setUpForConnectedNetwork();