From 72534295d3cf82df8b94c702ce3cc2fc36df67b5 Mon Sep 17 00:00:00 2001 From: Ben Lin Date: Thu, 2 Mar 2023 11:37:39 -0800 Subject: [PATCH] Do isAvailable() checks when accessing AirplaneEnabler. This instance is only initialized if isAvailable() returns true in the first place, so we should check for it everytime we try to access it, or else we will result in a NPE. Bug: 271223463 Test: atest AirplaneModePreferenceControllerTest Change-Id: I43d35b91c86517201c8ec4f458f8c0328a9fb768 --- .../network/AirplaneModePreferenceController.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java index 720a33409c2..5b4ce1b00b9 100644 --- a/src/com/android/settings/network/AirplaneModePreferenceController.java +++ b/src/com/android/settings/network/AirplaneModePreferenceController.java @@ -79,7 +79,7 @@ public class AirplaneModePreferenceController extends TogglePreferenceController @Override public boolean handlePreferenceTreeClick(Preference preference) { - if (KEY_AIRPLANE_MODE.equals(preference.getKey()) + if (KEY_AIRPLANE_MODE.equals(preference.getKey()) && isAvailable() && mAirplaneModeEnabler.isInEcmMode()) { // In ECM mode launch ECM app dialog if (mFragment != null) { @@ -141,12 +141,14 @@ public class AirplaneModePreferenceController extends TogglePreferenceController @Override public void onDestroy() { - mAirplaneModeEnabler.close(); + if (isAvailable()) { + mAirplaneModeEnabler.close(); + } } public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_CODE_EXIT_ECM) { + if (requestCode == REQUEST_CODE_EXIT_ECM && isAvailable()) { final boolean isChoiceYes = (resultCode == Activity.RESULT_OK); // Set Airplane mode based on the return value and checkbox state mAirplaneModeEnabler.setAirplaneModeInECM(isChoiceYes, @@ -156,7 +158,7 @@ public class AirplaneModePreferenceController extends TogglePreferenceController @Override public boolean isChecked() { - return mAirplaneModeEnabler.isAirplaneModeOn(); + return isAvailable() && mAirplaneModeEnabler.isAirplaneModeOn(); } @Override @@ -164,7 +166,9 @@ public class AirplaneModePreferenceController extends TogglePreferenceController if (isChecked() == isChecked) { return false; } - mAirplaneModeEnabler.setAirplaneMode(isChecked); + if (isAvailable()) { + mAirplaneModeEnabler.setAirplaneMode(isChecked); + } return true; }