Add test coverage for EmergencyCallHelper.
Add unit test coverage for the public method:
isLastOutgoingEmergencyCallPAH.
Fixes: 281691029
Test: atest EmergencyCallHelperTest#isLastOutgoingEmergencyCallPAH
Change-Id: I8c6b6e609c52370971db0bd621ebfc63ee8b9422
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));
+ }
}