Added TerminalId params for GetPhoneNumber. am: e0773a8085

Original change: https://android-review.googlesource.com/c/platform/frameworks/libs/service_entitlement/+/2691154

Change-Id: I1d21a37b5df1028bbda7574a5db2ac717aab93ed
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/java/com/android/libraries/entitlement/Ts43Operation.java b/java/com/android/libraries/entitlement/Ts43Operation.java
index 681220a..4221514 100644
--- a/java/com/android/libraries/entitlement/Ts43Operation.java
+++ b/java/com/android/libraries/entitlement/Ts43Operation.java
@@ -36,6 +36,7 @@
 import com.android.libraries.entitlement.odsa.CheckEligibilityOperation.CheckEligibilityRequest;
 import com.android.libraries.entitlement.odsa.CheckEligibilityOperation.CheckEligibilityResponse;
 import com.android.libraries.entitlement.odsa.DownloadInfo;
+import com.android.libraries.entitlement.odsa.GetPhoneNumberOperation.GetPhoneNumberRequest;
 import com.android.libraries.entitlement.odsa.GetPhoneNumberOperation.GetPhoneNumberResponse;
 import com.android.libraries.entitlement.odsa.ManageServiceOperation.ManageServiceRequest;
 import com.android.libraries.entitlement.odsa.ManageServiceOperation.ManageServiceResponse;
@@ -854,17 +855,25 @@
      * Get the phone number as described in GSMA Service Entitlement Configuration section 6.2 and
      * 6.5.8.
      *
+     * @param getPhoneNumberRequest The get phone number request.
      * @return The phone number response from the network.
      * @throws ServiceEntitlementException The exception for error case. If it's an HTTP response
      *                                     error from the server, the error code can be retrieved by
      *                                     {@link ServiceEntitlementException#getHttpStatus()}
      */
     @NonNull
-    public GetPhoneNumberResponse getPhoneNumber() throws ServiceEntitlementException {
+    public GetPhoneNumberResponse getPhoneNumber(
+            @NonNull GetPhoneNumberRequest getPhoneNumberRequest)
+            throws ServiceEntitlementException {
         ServiceEntitlementRequest.Builder builder =
                 ServiceEntitlementRequest.builder()
-                        .setEntitlementVersion(mEntitlementVersion)
-                        .setTerminalId(mImei);
+                        .setEntitlementVersion(mEntitlementVersion);
+
+        if (!TextUtils.isEmpty(getPhoneNumberRequest.terminalId())) {
+            builder.setTerminalId(getPhoneNumberRequest.terminalId());
+        } else {
+            builder.setTerminalId(mImei);
+        }
 
         if (mTokenType == TOKEN_TYPE_NORMAL) {
             builder.setAuthenticationToken(mAuthToken);
@@ -883,7 +892,7 @@
         try {
             rawXml =
                     mServiceEntitlement.performEsimOdsa(
-                            EsimOdsaOperation.OPERATION_GET_PHONE_NUMBER, request, operation);
+                        Ts43Constants.APP_PHONE_NUMBER_INFORMATION, request, operation);
         } catch (ServiceEntitlementException e) {
             Log.w(TAG, "getPhoneNumber: Failed to perform ODSA operation. e=" + e);
             throw e;
diff --git a/java/com/android/libraries/entitlement/odsa/GetPhoneNumberOperation.java b/java/com/android/libraries/entitlement/odsa/GetPhoneNumberOperation.java
index 4ae07f1..3a30f0a 100644
--- a/java/com/android/libraries/entitlement/odsa/GetPhoneNumberOperation.java
+++ b/java/com/android/libraries/entitlement/odsa/GetPhoneNumberOperation.java
@@ -25,6 +25,43 @@
  */
 public final class GetPhoneNumberOperation {
     /**
+     * Get phone number request described in GSMA Service Entitlement Configuration section 6.4.8.
+     */
+    @AutoValue
+    public abstract static class GetPhoneNumberRequest {
+        /**
+         * Returns the terminal id.
+         */
+        @NonNull
+        public abstract String terminalId();
+
+        /** Returns a new {@link GetPhoneNumberRequest.Builder} object. */
+        @NonNull
+        public static Builder builder() {
+            return new AutoValue_GetPhoneNumberOperation_GetPhoneNumberRequest
+                .Builder()
+                .setTerminalId("");
+        }
+
+        /** Builder. */
+        @AutoValue.Builder
+        public abstract static class Builder {
+            /**
+             * Sets the terminal id.
+             *
+             * @param terminalId The terminal id.
+             * @return The builder.
+             */
+            @NonNull
+            public abstract Builder setTerminalId(@NonNull String terminalId);
+
+            /** Returns the {@link GetPhoneNumberRequest} object. */
+            @NonNull
+            public abstract GetPhoneNumberRequest build();
+        }
+    }
+
+    /**
      * Get phone number response described in GSMA Service Entitlement Configuration section
      * 6.5.8.
      */
diff --git a/tests/src/com/android/libraries/entitlement/Ts43OperationTest.java b/tests/src/com/android/libraries/entitlement/Ts43OperationTest.java
index 6d90c5d..97e2193 100644
--- a/tests/src/com/android/libraries/entitlement/Ts43OperationTest.java
+++ b/tests/src/com/android/libraries/entitlement/Ts43OperationTest.java
@@ -35,6 +35,7 @@
 import com.android.libraries.entitlement.odsa.CheckEligibilityOperation;
 import com.android.libraries.entitlement.odsa.CheckEligibilityOperation.CheckEligibilityRequest;
 import com.android.libraries.entitlement.odsa.CheckEligibilityOperation.CheckEligibilityResponse;
+import com.android.libraries.entitlement.odsa.GetPhoneNumberOperation.GetPhoneNumberRequest;
 import com.android.libraries.entitlement.odsa.GetPhoneNumberOperation.GetPhoneNumberResponse;
 import com.android.libraries.entitlement.odsa.ManageServiceOperation.ManageServiceRequest;
 import com.android.libraries.entitlement.odsa.ManageServiceOperation.ManageServiceResponse;
@@ -62,6 +63,7 @@
     private static final String SUBSCRIPTION_SERVICE_URL = "http://www.MNO.org/CDSubs";
     private static final String SUBSCRIPTION_SERVICE_USER_DATA = "imsi=XX";
     private static final String IMEI = "861536030196001";
+    private static final String TERMINAL_ID = "861536030196005";
     private static final String COMPANION_TERMINAL_ID = "98112687006099944";
     private static final String COMPANION_TERMINAL_EID = "JHSDHljhsdfy763hh";
     private static final String ICCID = "123456789";
@@ -376,7 +378,11 @@
     public void testGetPhoneNumber() throws Exception {
         doReturn(GET_PHONE_NUMBER_RESPONSE).when(mMockHttpResponse).body();
 
-        GetPhoneNumberResponse response = mTs43Operation.getPhoneNumber();
+        GetPhoneNumberRequest request = GetPhoneNumberRequest.builder()
+                .setTerminalId(TERMINAL_ID)
+                .build();
+
+        GetPhoneNumberResponse response = mTs43Operation.getPhoneNumber(request);
         assertThat(response.operationResult()).isEqualTo(
                 EsimOdsaOperation.OPERATION_RESULT_SUCCESS);
         assertThat(response.msisdn()).isEqualTo(MSISDN);