[eSim Transfer] Map eSim Transfer trigger intents.
Bug: 262195754
Test: Manual
Change-Id: Ib1177e7906793926a0f302c19e456bc4288f4fe1
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 32733cc..090d606 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -424,6 +424,10 @@
"android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" />
<action android:name=
"android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" />
+ <action android:name=
+ "android.telephony.euicc.action.TRANSFER_EMBEDDED_SUBSCRIPTIONS" />
+ <action android:name=
+ "android.telephony.euicc.action.CONVERT_TO_EMBEDDED_SUBSCRIPTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
diff --git a/src/com/android/phone/TelephonyShellCommand.java b/src/com/android/phone/TelephonyShellCommand.java
index f002e25..1858fe2 100644
--- a/src/com/android/phone/TelephonyShellCommand.java
+++ b/src/com/android/phone/TelephonyShellCommand.java
@@ -57,6 +57,7 @@
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.modules.utils.BasicShellCommandHandler;
import com.android.phone.callcomposer.CallComposerPictureManager;
+import com.android.phone.euicc.EuiccUiDispatcherActivity;
import com.android.phone.utils.CarrierAllowListInfo;
import java.io.IOException;
@@ -121,6 +122,9 @@
private static final String CC_SET_VALUES_FROM_XML = "set-values-from-xml";
private static final String CC_CLEAR_VALUES = "clear-values";
+ private static final String EUICC_SUBCOMMAND = "euicc";
+ private static final String EUICC_SET_UI_COMPONENT = "set-euicc-uicomponent";
+
private static final String GBA_SUBCOMMAND = "gba";
private static final String GBA_SET_SERVICE = "set-service";
private static final String GBA_GET_SERVICE = "get-service";
@@ -313,6 +317,8 @@
return handleDataTestModeCommand();
case END_BLOCK_SUPPRESSION:
return handleEndBlockSuppressionCommand();
+ case EUICC_SUBCOMMAND:
+ return handleEuiccCommand();
case GBA_SUBCOMMAND:
return handleGbaCommand();
case D2D_SUBCOMMAND:
@@ -608,6 +614,15 @@
pw.println(" is specified, it will choose the default voice SIM slot.");
}
+ private void onHelpEuicc() {
+ PrintWriter pw = getOutPrintWriter();
+ pw.println("Euicc Commands:");
+ pw.println(" euicc set-euicc-uicomponent COMPONENT_NAME PACKAGE_NAME");
+ pw.println(" Sets the Euicc Ui-Component which handles EuiccService Actions.");
+ pw.println(" COMPONENT_NAME: The component name which handles UI Actions.");
+ pw.println(" PACKAGE_NAME: THe package name in which ui component belongs.");
+ }
+
private void onHelpGba() {
PrintWriter pw = getOutPrintWriter();
pw.println("Gba Commands:");
@@ -2058,6 +2073,35 @@
return 0;
}
+ private int handleEuiccCommand() {
+ String arg = getNextArg();
+ if (arg == null) {
+ onHelpEuicc();
+ return 0;
+ }
+
+ switch (arg) {
+ case EUICC_SET_UI_COMPONENT: {
+ return handleEuiccServiceCommand();
+ }
+ }
+ return -1;
+ }
+
+ private int handleEuiccServiceCommand() {
+ String uiComponent = getNextArg();
+ String packageName = getNextArg();
+ if (packageName == null || uiComponent == null) {
+ return -1;
+ }
+ EuiccUiDispatcherActivity.setTestEuiccUiComponent(packageName, uiComponent);
+ if (VDBG) {
+ Log.v(LOG_TAG, "euicc set-euicc-uicomponent " + uiComponent +" "
+ + packageName);
+ }
+ return 0;
+ }
+
private int handleRestartModemCommand() {
// Verify that the user is allowed to run the command. Only allowed in rooted device in a
// non user build.
diff --git a/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java b/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
index 804611f..5da52d6 100644
--- a/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
+++ b/src/com/android/phone/euicc/EuiccUiDispatcherActivity.java
@@ -29,6 +29,7 @@
import android.permission.LegacyPermissionManager;
import android.service.euicc.EuiccService;
import android.telephony.euicc.EuiccManager;
+import android.text.TextUtils;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
@@ -58,6 +59,8 @@
private LegacyPermissionManager mPermissionManager;
private boolean mGrantPermissionDone = false;
private ThreadPoolExecutor mExecutor;
+ // Used for CTS EuiccManager action verification
+ private static ComponentName mTestEuiccUiComponentName;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -94,6 +97,18 @@
}
}
+ /**
+ * This API used to set the Test EuiccUiComponent for CTS
+ * @param packageName package which handles the intent
+ * @param componentName ui component to be launched for testing
+ */
+ public static void setTestEuiccUiComponent(String packageName, String componentName) {
+ mTestEuiccUiComponentName = null;
+ if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(componentName)) {
+ mTestEuiccUiComponentName = new ComponentName(packageName, componentName);
+ }
+ }
+
@VisibleForTesting
@Nullable
Intent resolveEuiccUiIntent() {
@@ -109,6 +124,13 @@
return null;
}
+ if (mTestEuiccUiComponentName != null) {
+ Log.i(TAG, "Test mode");
+ euiccUiIntent.setComponent(mTestEuiccUiComponentName);
+ mTestEuiccUiComponentName = null;
+ return euiccUiIntent;
+ }
+
revokePermissionFromLuiApps(euiccUiIntent);
ActivityInfo activityInfo = findBestActivity(euiccUiIntent);
@@ -148,6 +170,12 @@
case EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION:
intent.setAction(EuiccService.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION);
break;
+ case EuiccManager.ACTION_TRANSFER_EMBEDDED_SUBSCRIPTIONS:
+ intent.setAction(EuiccService.ACTION_TRANSFER_EMBEDDED_SUBSCRIPTIONS);
+ break;
+ case EuiccManager.ACTION_CONVERT_TO_EMBEDDED_SUBSCRIPTION:
+ intent.setAction(EuiccService.ACTION_CONVERT_TO_EMBEDDED_SUBSCRIPTION);
+ break;
default:
Log.w(TAG, "Unsupported action: " + action);
return null;