Snap for 9885989 from a3f1109499632c1afa177be0cda7656130c950d7 to mainline-art-release

Change-Id: I123fa178dca5a9a1518c82ce40aacbd17603e671
diff --git a/service/java/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponse.java b/service/java/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponse.java
index b5d691d..df088b0 100644
--- a/service/java/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponse.java
+++ b/service/java/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponse.java
@@ -87,11 +87,13 @@
         boolean success =
                 (mAuthResponseCode == RESPONSE_CODE_REQUEST_SUCCESSFUL)
                         && (mGetImsiPseudonymResponseCode == RESPONSE_CODE_REQUEST_SUCCESSFUL);
-        if (success && (mImsiPseudonym != null) && (mImsiPseudonym.length() <= EAP_MTU)
-                && (mRefreshInterval > 0)) {
-            pseudonymInfo =
-                    new PseudonymInfo(mImsiPseudonym, imsi,
-                            mRefreshInterval * HOUR_IN_MILLIS);
+        if (success && (mImsiPseudonym != null) && (mImsiPseudonym.length() <= EAP_MTU)) {
+            if (mRefreshInterval <= 0) {
+                pseudonymInfo = new PseudonymInfo(mImsiPseudonym, imsi);
+            } else {
+                pseudonymInfo = new PseudonymInfo(mImsiPseudonym, imsi,
+                        mRefreshInterval * HOUR_IN_MILLIS);
+            }
         }
         return Optional.ofNullable(pseudonymInfo);
     }
diff --git a/service/tests/wifitests/src/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponseTest.java b/service/tests/wifitests/src/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponseTest.java
index ea9479e..843a0b4 100644
--- a/service/tests/wifitests/src/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponseTest.java
+++ b/service/tests/wifitests/src/com/android/server/wifi/entitlement/response/GetImsiPseudonymResponseTest.java
@@ -34,6 +34,8 @@
 import org.json.JSONObject;
 import org.junit.Test;
 
+import java.time.Duration;
+
 /**
  * Unit tests for {@link ChallengeResponse}.
  */
@@ -42,11 +44,12 @@
     private static final String AKA_TOKEN = "aka_token";
     private static final String IMSI_PSEUDONYM = "imsi_pseudonym";
     private static final int REFRESH_INTERVAL = 48;
+    private static final long DEFAULT_PSEUDONYM_TTL_IN_MILLIS = Duration.ofDays(2).toMillis();
     private static final int INVALID_MESSAGE_ID = -1;
     private static final String IMSI = "imsi";
 
     @Test
-    public void responseBodyCorrect() throws JSONException {
+    public void responseBodyCorrectWithRefreshInterval() throws JSONException {
         JSONObject body1 = (new JSONObject()).put(Response.JSON_KEY_MESSAGE_ID,
                         MESSAGE_ID_3GPP_AUTHENTICATION)
                 .put(Response.JSON_KEY_RESPONSE_CODE, Response.RESPONSE_CODE_REQUEST_SUCCESSFUL)
@@ -70,6 +73,29 @@
     }
 
     @Test
+    public void responseBodyCorrectWithoutRefreshInterval() throws JSONException {
+        JSONObject body1 = (new JSONObject()).put(Response.JSON_KEY_MESSAGE_ID,
+                        MESSAGE_ID_3GPP_AUTHENTICATION)
+                .put(Response.JSON_KEY_RESPONSE_CODE, Response.RESPONSE_CODE_REQUEST_SUCCESSFUL)
+                .put(GetImsiPseudonymResponse.JSON_KEY_AKA_TOKEN, AKA_TOKEN);
+        JSONObject body2 = (new JSONObject()).put(Response.JSON_KEY_MESSAGE_ID,
+                        MESSAGE_ID_GET_IMSI_PSEUDONYM)
+                .put(Response.JSON_KEY_RESPONSE_CODE, Response.RESPONSE_CODE_REQUEST_SUCCESSFUL)
+                .put(GetImsiPseudonymResponse.JSON_KEY_IMSI_PSEUDONYM, IMSI_PSEUDONYM);
+        JSONArray bodyArray = (new JSONArray()).put(body1).put(body2);
+
+        GetImsiPseudonymResponse response = new GetImsiPseudonymResponse(bodyArray.toString());
+        assertEquals(Response.RESPONSE_CODE_REQUEST_SUCCESSFUL, response.getAuthResponseCode());
+        assertEquals(AKA_TOKEN, response.getAkaToken());
+        assertEquals(Response.RESPONSE_CODE_REQUEST_SUCCESSFUL,
+                response.getGetImsiPseudonymResponseCode());
+        PseudonymInfo pseudonymInfo = response.toPseudonymInfo(IMSI).get();
+        assertEquals(IMSI_PSEUDONYM, pseudonymInfo.getPseudonym());
+        assertEquals(DEFAULT_PSEUDONYM_TTL_IN_MILLIS, pseudonymInfo.getTtlInMillis());
+        assertEquals(IMSI, pseudonymInfo.getImsi());
+    }
+
+    @Test
     public void responseBodyNotJsonArray() {
         GetImsiPseudonymResponse response = new GetImsiPseudonymResponse("wrongbody");
         assertEquals(0, response.getAuthResponseCode());