Merge "Add test coverage for EmergencyCallHelper." into udc-dev am: 3d4c6eebfd am: 55e0540398 am: fc803575cb

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/Telecomm/+/23143003

Change-Id: Iebe7df0cbdc533621c9a1080bf35cbee6237d2e4
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/server/telecom/EmergencyCallHelper.java b/src/com/android/server/telecom/EmergencyCallHelper.java
index fbb666d..5ab0e99 100644
--- a/src/com/android/server/telecom/EmergencyCallHelper.java
+++ b/src/com/android/server/telecom/EmergencyCallHelper.java
@@ -82,10 +82,17 @@
         return mLastEmergencyCallTimestampMillis;
     }
 
-    void setLastOutgoingEmergencyCallPAH(PhoneAccountHandle accountHandle) {
+    @VisibleForTesting
+    public void setLastOutgoingEmergencyCallTimestampMillis(long timestampMillis) {
+        mLastOutgoingEmergencyCallTimestampMillis = timestampMillis;
+    }
+
+    @VisibleForTesting
+    public void setLastOutgoingEmergencyCallPAH(PhoneAccountHandle accountHandle) {
         mLastOutgoingEmergencyCallPAH = accountHandle;
     }
 
+    @VisibleForTesting
     public boolean isLastOutgoingEmergencyCallPAH(PhoneAccountHandle currentCallHandle) {
         boolean ecbmActive = mLastOutgoingEmergencyCallPAH != null
                 && isInEmergencyCallbackWindow(mLastOutgoingEmergencyCallTimestampMillis)
diff --git a/tests/src/com/android/server/telecom/tests/EmergencyCallHelperTest.java b/tests/src/com/android/server/telecom/tests/EmergencyCallHelperTest.java
index 380e327..692d720 100644
--- a/tests/src/com/android/server/telecom/tests/EmergencyCallHelperTest.java
+++ b/tests/src/com/android/server/telecom/tests/EmergencyCallHelperTest.java
@@ -19,9 +19,11 @@
 import static android.Manifest.permission.ACCESS_BACKGROUND_LOCATION;
 import static android.Manifest.permission.ACCESS_FINE_LOCATION;
 
-import android.content.Context;
+import android.content.ComponentName;
+import android.content.ContentResolver;
 import android.content.pm.PackageManager;
 import android.os.UserHandle;
+import android.telecom.PhoneAccountHandle;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.server.telecom.Call;
@@ -34,19 +36,20 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
 import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.any;
 
 @RunWith(JUnit4.class)
 public class EmergencyCallHelperTest extends TelecomTestCase {
@@ -62,6 +65,7 @@
   private UserHandle mUserHandle;
   @Mock
   private Call mCall;
+  @Mock private PhoneAccountHandle mPhoneAccountHandle;
 
   @Override
   @Before
@@ -86,6 +90,8 @@
     when(mCall.isEmergencyCall()).thenReturn(true);
     when(mContext.getResources().getBoolean(R.bool.grant_location_permission_enabled)).thenReturn(
         true);
+    when(mTimeoutsAdapter.getEmergencyCallbackWindowMillis(any(ContentResolver.class))).thenReturn(
+            5000L);
   }
 
   @Override
@@ -245,4 +251,21 @@
     verifyRevokeNotInvokedFor(ACCESS_FINE_LOCATION);
     verifyRevokeInvokedFor(ACCESS_BACKGROUND_LOCATION);
   }
+
+  @SmallTest
+  @Test
+  public void testIsLastOutgoingEmergencyCallPAH() {
+    PhoneAccountHandle dummyHandle = new PhoneAccountHandle(new ComponentName("pkg", "cls"), "foo");
+    long currentTimeMillis = System.currentTimeMillis();
+    mEmergencyCallHelper.setLastOutgoingEmergencyCallPAH(mPhoneAccountHandle);
+    mEmergencyCallHelper.setLastOutgoingEmergencyCallTimestampMillis(currentTimeMillis);
+
+    // Verify that ECBM is active on mPhoneAccountHandle.
+    assertTrue(mEmergencyCallHelper.isLastOutgoingEmergencyCallPAH(mPhoneAccountHandle));
+    assertFalse(mEmergencyCallHelper.isLastOutgoingEmergencyCallPAH(dummyHandle));
+
+    // Expire ECBM and verify that mPhoneAccountHandle is no longer supported for ECBM.
+    mEmergencyCallHelper.setLastOutgoingEmergencyCallTimestampMillis(currentTimeMillis/2);
+    assertFalse(mEmergencyCallHelper.isLastOutgoingEmergencyCallPAH(mPhoneAccountHandle));
+  }
 }