Add ability to disable conference event package handling from command line.
Useful for testing non-CEP behavior on a network which does provide CEP
updates.
Bug: 139299700
Test: Manual test of CEP override.
Change-Id: I296bffcacec20336d6512f9219ed927d30a21a5a
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 0469d7d..d0eda12 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -18,6 +18,7 @@
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static com.android.internal.telephony.PhoneConstants.PHONE_TYPE_IMS;
import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
import android.Manifest.permission;
@@ -149,6 +150,8 @@
import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.euicc.EuiccConnector;
import com.android.internal.telephony.ims.ImsResolver;
+import com.android.internal.telephony.imsphone.ImsPhone;
+import com.android.internal.telephony.imsphone.ImsPhoneCallTracker;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.telephony.uicc.IccIoResult;
import com.android.internal.telephony.uicc.IccUtils;
@@ -7183,4 +7186,32 @@
Binder.restoreCallingIdentity(identity);
}
}
+
+ /**
+ * Updates whether conference event pacakge handling is enabled.
+ * @param isCepEnabled {@code true} if CEP handling is enabled (default), or {@code false}
+ * otherwise.
+ */
+ @Override
+ public void setCepEnabled(boolean isCepEnabled) {
+ TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(), "setCepEnabled");
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ Rlog.i(LOG_TAG, "setCepEnabled isCepEnabled=" + isCepEnabled);
+ for (Phone phone : PhoneFactory.getPhones()) {
+ Phone defaultPhone = phone.getImsPhone();
+ if (defaultPhone != null && defaultPhone.getPhoneType() == PHONE_TYPE_IMS) {
+ ImsPhone imsPhone = (ImsPhone) defaultPhone;
+ ImsPhoneCallTracker imsPhoneCallTracker =
+ (ImsPhoneCallTracker) imsPhone.getCallTracker();
+ imsPhoneCallTracker.setConferenceEventPackageEnabled(isCepEnabled);
+ Rlog.i(LOG_TAG, "setCepEnabled isCepEnabled=" + isCepEnabled + ", for imsPhone "
+ + imsPhone.getMsisdn());
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
}
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index a59c9c4..a34abc0 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -53,6 +53,10 @@
private static final String IMS_GET_CARRIER_SERVICE = "get-ims-service";
private static final String IMS_ENABLE = "enable";
private static final String IMS_DISABLE = "disable";
+ // Used to disable or enable processing of conference event package data from the network.
+ // This is handy for testing scenarios where CEP data does not exist on a network which does
+ // support CEP data.
+ private static final String IMS_CEP = "conference-event-package";
private static final String SMS_GET_APPS = "get-apps";
private static final String SMS_GET_DEFAULT_APP = "get-default-app";
@@ -131,6 +135,8 @@
pw.println(" ims disable [-s SLOT_ID]");
pw.println(" disables IMS for the SIM slot specified, or for the default voice SIM");
pw.println(" slot if none is specified.");
+ pw.println(" ims conference-event-package [enable/disable]");
+ pw.println(" enables or disables handling or network conference event package data.");
}
private void onHelpSms() {
@@ -190,6 +196,9 @@
case IMS_DISABLE: {
return handleDisableIms();
}
+ case IMS_CEP: {
+ return handleCepChange();
+ }
}
return -1;
@@ -466,6 +475,22 @@
return 0;
}
+ private int handleCepChange() {
+ Log.i(LOG_TAG, "handleCepChange");
+ String opt = getNextArg();
+ if (opt == null) {
+ return -1;
+ }
+ boolean isCepEnabled = opt.equals("enable");
+
+ try {
+ mInterface.setCepEnabled(isCepEnabled);
+ } catch (RemoteException e) {
+ return -1;
+ }
+ return 0;
+ }
+
private int getDefaultSlot() {
int slotId = SubscriptionManager.getDefaultVoicePhoneId();
if (slotId <= SubscriptionManager.INVALID_SIM_SLOT_INDEX