Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7d468f6 authored by changbetty's avatar changbetty
Browse files

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
parent d8c11f52
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -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();
        }
    }

    /**
+12 −0
Original line number Diff line number Diff line
@@ -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();