Merge "Handle null intent in WifiCallingPreferenceController" into qt-dev
am: b4d94a8ccc
Change-Id: I025073624de894f70216eb46bb9cd48e8435f9dd
diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
index c71ee35..4d4d3ef 100644
--- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
@@ -114,6 +114,10 @@
if (mSimCallManager != null) {
Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
mSimCallManager);
+ if (intent == null) {
+ // Do nothing in this case since preference is invisible
+ return;
+ }
final PackageManager pm = mContext.getPackageManager();
List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
preference.setTitle(resolutions.get(0).loadLabel(pm));
diff --git a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
index 1a0126e..42422f9 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
@@ -27,6 +27,7 @@
import android.content.Intent;
import android.os.PersistableBundle;
import android.provider.Settings;
+import android.telecom.PhoneAccountHandle;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -118,6 +119,14 @@
}
@Test
+ public void updateState_invalidPhoneAccountHandle_shouldNotCrash() {
+ mController.mSimCallManager = new PhoneAccountHandle(null /* invalid */, "");
+
+ //Should not crash
+ mController.updateState(mPreference);
+ }
+
+ @Test
public void updateState_wfcNonRoaming() {
assertNull(mController.mSimCallManager);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL, false);