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));
+ }
}