Loading src/java/com/android/ims/rcs/uce/eab/EabBulkCapabilityUpdater.java +2 −4 Original line number Diff line number Diff line Loading @@ -19,8 +19,6 @@ package com.android.ims.rcs.uce.eab; import static android.telephony.ims.RcsContactUceCapability.CAPABILITY_MECHANISM_OPTIONS; import static android.telephony.ims.RcsContactUceCapability.CAPABILITY_MECHANISM_PRESENCE; import static com.android.ims.rcs.uce.eab.EabControllerImpl.getCapabilityCacheExpiration; import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.Context; Loading Loading @@ -290,7 +288,7 @@ public final class EabBulkCapabilityUpdater { Log.d(TAG, "Can't find min timestamp in eab provider"); return; } expiredTimestamp += getCapabilityCacheExpiration(mSubId); expiredTimestamp += mEabControllerImpl.getCapabilityCacheExpiration(mSubId); Log.d(TAG, "set time alert at " + expiredTimestamp); cancelTimeAlert(mContext); setTimeAlert(mContext, expiredTimestamp); Loading Loading @@ -397,7 +395,7 @@ public final class EabBulkCapabilityUpdater { private List<Uri> getExpiredContactList() { List<Uri> refreshList = new ArrayList<>(); long expiredTime = (System.currentTimeMillis() / 1000) + getCapabilityCacheExpiration(mSubId); + mEabControllerImpl.getCapabilityCacheExpiration(mSubId); String selection = "(" + EabProvider.EabCommonColumns.MECHANISM + "=" + CAPABILITY_MECHANISM_PRESENCE + " AND " + EabProvider.PresenceTupleColumns.REQUEST_TIMESTAMP + "<" Loading src/java/com/android/ims/rcs/uce/eab/EabControllerImpl.java +19 −15 Original line number Diff line number Diff line Loading @@ -41,9 +41,7 @@ import android.telephony.ims.RcsContactUceCapability; import android.telephony.ims.RcsContactUceCapability.OptionsBuilder; import android.telephony.ims.RcsContactUceCapability.PresenceBuilder; import android.text.TextUtils; import android.text.format.Time; import android.util.Log; import android.util.TimeFormatException; import com.android.i18n.phonenumbers.NumberParseException; import com.android.i18n.phonenumbers.PhoneNumberUtil; Loading @@ -56,10 +54,8 @@ import java.time.Instant; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import java.util.Objects; import java.util.TimeZone; import java.util.function.Predicate; /** Loading @@ -84,12 +80,19 @@ public class EabControllerImpl implements EabController { private UceControllerCallback mUceControllerCallback; private volatile boolean mIsSetDestroyedFlag = false; private ExpirationTimeFactory mExpirationTimeFactory = () -> Instant.now().getEpochSecond(); @VisibleForTesting public final Runnable mCapabilityCleanupRunnable = () -> { Log.d(TAG, "Cleanup Capabilities"); cleanupExpiredCapabilities(); }; @VisibleForTesting public interface ExpirationTimeFactory { long getExpirationTime(); } public EabControllerImpl(Context context, int subId, UceControllerCallback c, Looper looper) { mContext = context; mSubId = subId; Loading Loading @@ -481,7 +484,7 @@ public class EabControllerImpl implements EabController { return value; } protected static int getCapabilityCacheExpiration(int subId) { protected int getCapabilityCacheExpiration(int subId) { int value = -1; try { ProvisioningManager pm = ProvisioningManager.createForSubscriptionId(subId); Loading @@ -498,7 +501,7 @@ public class EabControllerImpl implements EabController { return value; } protected static long getAvailabilityCacheExpiration(int subId) { protected long getAvailabilityCacheExpiration(int subId) { long value = -1; try { ProvisioningManager pm = ProvisioningManager.createForSubscriptionId(subId); Loading Loading @@ -577,14 +580,6 @@ public class EabControllerImpl implements EabController { } } // Using the current timestamp if the timestamp doesn't populate Long timestamp; if (tuple.getTime() != null) { timestamp = tuple.getTime().getEpochSecond(); } else { timestamp = Instant.now().getEpochSecond(); } contentValues = new ContentValues(); contentValues.put(EabProvider.PresenceTupleColumns.EAB_COMMON_ID, commonId); contentValues.put(EabProvider.PresenceTupleColumns.BASIC_STATUS, tuple.getStatus()); Loading @@ -593,7 +588,11 @@ public class EabControllerImpl implements EabController { tuple.getServiceVersion()); contentValues.put(EabProvider.PresenceTupleColumns.DESCRIPTION, tuple.getServiceDescription()); contentValues.put(EabProvider.PresenceTupleColumns.REQUEST_TIMESTAMP, timestamp); // Using current timestamp instead of network timestamp since there is not use cases for // network timestamp and the network timestamp may cause capability expire immediately. contentValues.put(EabProvider.PresenceTupleColumns.REQUEST_TIMESTAMP, mExpirationTimeFactory.getExpirationTime()); contentValues.put(EabProvider.PresenceTupleColumns.CONTACT_URI, tuple.getContactUri().toString()); if (serviceCapabilities != null) { Loading Loading @@ -790,4 +789,9 @@ public class EabControllerImpl implements EabController { } return number; } @VisibleForTesting public void setExpirationTimeFactory(ExpirationTimeFactory factory) { mExpirationTimeFactory = factory; } } src/java/com/android/ims/rcs/uce/eab/EabUtil.java +40 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,46 @@ public class EabUtil { return result.toString(); } /** * Get the given EAB capability from the EAB database. * * Output format: * [PHONE_NUMBER], [RAW_PRESENCE_ID], [PRESENCE_TIMESTAMP], [RAW_OPTION_ID], [OPTION_TIMESTAMP] */ public static String getCapabilityFromEab(Context context, String contact) { StringBuilder result = new StringBuilder(); try (Cursor cursor = context.getContentResolver().query( EabProvider.ALL_DATA_URI, new String[]{ContactColumns.PHONE_NUMBER, PresenceTupleColumns._ID, PresenceTupleColumns.REQUEST_TIMESTAMP, OptionsColumns._ID, OptionsColumns.REQUEST_TIMESTAMP}, ContactColumns.PHONE_NUMBER + "=?", new String[]{contact}, null)) { if (cursor != null && cursor.moveToFirst()) { result.append(cursor.getString(cursor.getColumnIndex( ContactColumns.PHONE_NUMBER))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( PresenceTupleColumns._ID))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( PresenceTupleColumns.REQUEST_TIMESTAMP))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( OptionsColumns._ID))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( OptionsColumns.REQUEST_TIMESTAMP))); } } catch (Exception e) { Log.w(LOG_TAG, "getCapability exception " + e); } Log.d(LOG_TAG, "getCapabilityFromEab() result: " + result); return result.toString(); } /** * Remove the given EAB contacts from the EAB database. */ Loading tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java +20 −23 Original line number Diff line number Diff line Loading @@ -28,12 +28,14 @@ import static com.android.ims.rcs.uce.eab.EabProvider.OPTIONS_URI; import static com.android.ims.rcs.uce.eab.EabProvider.PRESENCE_URI; import static org.junit.Assert.fail; import static org.mockito.Mockito.doReturn; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.os.Looper; import android.os.PersistableBundle; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.RcsContactPresenceTuple; import android.telephony.ims.RcsContactUceCapability; import android.test.mock.MockContentResolver; Loading @@ -48,9 +50,10 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import java.time.temporal.ChronoUnit; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; Loading @@ -67,6 +70,9 @@ public class EabControllerTest extends ImsTestBase { PersistableBundle mBundle; ExecutorService mExecutor = Executors.newSingleThreadExecutor(); @Mock EabControllerImpl.ExpirationTimeFactory mExpirationTimeFactory; private static final int TEST_SUB_ID = 1; private static final String TEST_PHONE_NUMBER = "16661234567"; private static final String TEST_SERVICE_STATUS = "status"; Loading @@ -90,6 +96,8 @@ public class EabControllerTest extends ImsTestBase { insertContactInfoToDB(); mEabController = new EabControllerImpl( mContext, TEST_SUB_ID, null, Looper.getMainLooper()); mEabController.setExpirationTimeFactory(mExpirationTimeFactory); doReturn(Instant.now().getEpochSecond()).when(mExpirationTimeFactory).getExpirationTime(); mBundle = mContextFixture.getTestCarrierConfigBundle(); } Loading @@ -103,7 +111,7 @@ public class EabControllerTest extends ImsTestBase { @SmallTest public void testGetAvailability() { List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceCapability(false)); contactList.add(createPresenceCapability()); mEabController.saveCapabilities(contactList); Loading @@ -117,7 +125,7 @@ public class EabControllerTest extends ImsTestBase { @SmallTest public void testGetCapability() { List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceCapability(false)); contactList.add(createPresenceCapability()); mEabController.saveCapabilities(contactList); Loading @@ -133,7 +141,9 @@ public class EabControllerTest extends ImsTestBase { @SmallTest public void testGetExpiredCapability() { List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceCapability(true)); doReturn(0L).when(mExpirationTimeFactory).getExpirationTime(); contactList.add(createPresenceCapability()); mEabController.saveCapabilities(contactList); Loading @@ -150,13 +160,9 @@ public class EabControllerTest extends ImsTestBase { public void testNonRcsCapability() { // Set non-rcs capabilities expiration to 121 days mBundle.putInt(KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT, 121 * 24 * 60 * 60); // Set timestamp to 120 days age GregorianCalendar date = new GregorianCalendar(); date.setTimeZone(TimeZone.getTimeZone("UTC")); date.add(Calendar.DATE, -120); List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceNonRcsCapability(Instant.now())); contactList.add(createPresenceNonRcsCapability()); mEabController.saveCapabilities(contactList); Loading @@ -176,10 +182,11 @@ public class EabControllerTest extends ImsTestBase { // Set non-rcs capabilities expiration to 119 days mBundle.putInt(KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT, 119 * 24 * 60 * 60); // Set timestamp to 120 days age Instant timestamp = Instant.now().minus(120, ChronoUnit.DAYS); long timestamp = Instant.now().minus(120, ChronoUnit.DAYS).getEpochSecond(); doReturn(timestamp).when(mExpirationTimeFactory).getExpirationTime(); List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceNonRcsCapability(timestamp)); contactList.add(createPresenceNonRcsCapability()); mEabController.saveCapabilities(contactList); // Verify result is expired Loading Loading @@ -282,14 +289,7 @@ public class EabControllerTest extends ImsTestBase { } } private RcsContactUceCapability createPresenceCapability(boolean isExpired) { Instant timestamp; if (isExpired) { timestamp = Instant.now().minus(120, ChronoUnit.DAYS); } else { timestamp = Instant.now().plus(120, ChronoUnit.DAYS); } private RcsContactUceCapability createPresenceCapability() { RcsContactPresenceTuple.ServiceCapabilities.Builder serviceCapabilitiesBuilder = new RcsContactPresenceTuple.ServiceCapabilities.Builder(TEST_AUDIO_CAPABLE, TEST_VIDEO_CAPABLE); Loading @@ -299,7 +299,6 @@ public class EabControllerTest extends ImsTestBase { .setServiceDescription(TEST_SERVICE_DESCRIPTION) .setContactUri(TEST_CONTACT_URI) .setServiceCapabilities(serviceCapabilitiesBuilder.build()) .setTime(timestamp) .build(); RcsContactPresenceTuple tupleWithEmptyServiceCapabilities = Loading @@ -307,7 +306,6 @@ public class EabControllerTest extends ImsTestBase { TEST_SERVICE_VERSION) .setServiceDescription(TEST_SERVICE_DESCRIPTION) .setContactUri(TEST_CONTACT_URI) .setTime(timestamp) .build(); RcsContactUceCapability.PresenceBuilder builder = Loading @@ -318,7 +316,7 @@ public class EabControllerTest extends ImsTestBase { return builder.build(); } private RcsContactUceCapability createPresenceNonRcsCapability(Instant timestamp) { private RcsContactUceCapability createPresenceNonRcsCapability() { RcsContactPresenceTuple.ServiceCapabilities.Builder serviceCapabilitiesBuilder = new RcsContactPresenceTuple.ServiceCapabilities.Builder(false, false); RcsContactPresenceTuple tupleWithServiceCapabilities = Loading @@ -327,7 +325,6 @@ public class EabControllerTest extends ImsTestBase { .setServiceDescription(TEST_SERVICE_DESCRIPTION) .setContactUri(TEST_CONTACT_URI) .setServiceCapabilities(serviceCapabilitiesBuilder.build()) .setTime(timestamp) .build(); RcsContactUceCapability.PresenceBuilder builder = Loading Loading
src/java/com/android/ims/rcs/uce/eab/EabBulkCapabilityUpdater.java +2 −4 Original line number Diff line number Diff line Loading @@ -19,8 +19,6 @@ package com.android.ims.rcs.uce.eab; import static android.telephony.ims.RcsContactUceCapability.CAPABILITY_MECHANISM_OPTIONS; import static android.telephony.ims.RcsContactUceCapability.CAPABILITY_MECHANISM_PRESENCE; import static com.android.ims.rcs.uce.eab.EabControllerImpl.getCapabilityCacheExpiration; import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.Context; Loading Loading @@ -290,7 +288,7 @@ public final class EabBulkCapabilityUpdater { Log.d(TAG, "Can't find min timestamp in eab provider"); return; } expiredTimestamp += getCapabilityCacheExpiration(mSubId); expiredTimestamp += mEabControllerImpl.getCapabilityCacheExpiration(mSubId); Log.d(TAG, "set time alert at " + expiredTimestamp); cancelTimeAlert(mContext); setTimeAlert(mContext, expiredTimestamp); Loading Loading @@ -397,7 +395,7 @@ public final class EabBulkCapabilityUpdater { private List<Uri> getExpiredContactList() { List<Uri> refreshList = new ArrayList<>(); long expiredTime = (System.currentTimeMillis() / 1000) + getCapabilityCacheExpiration(mSubId); + mEabControllerImpl.getCapabilityCacheExpiration(mSubId); String selection = "(" + EabProvider.EabCommonColumns.MECHANISM + "=" + CAPABILITY_MECHANISM_PRESENCE + " AND " + EabProvider.PresenceTupleColumns.REQUEST_TIMESTAMP + "<" Loading
src/java/com/android/ims/rcs/uce/eab/EabControllerImpl.java +19 −15 Original line number Diff line number Diff line Loading @@ -41,9 +41,7 @@ import android.telephony.ims.RcsContactUceCapability; import android.telephony.ims.RcsContactUceCapability.OptionsBuilder; import android.telephony.ims.RcsContactUceCapability.PresenceBuilder; import android.text.TextUtils; import android.text.format.Time; import android.util.Log; import android.util.TimeFormatException; import com.android.i18n.phonenumbers.NumberParseException; import com.android.i18n.phonenumbers.PhoneNumberUtil; Loading @@ -56,10 +54,8 @@ import java.time.Instant; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.GregorianCalendar; import java.util.List; import java.util.Objects; import java.util.TimeZone; import java.util.function.Predicate; /** Loading @@ -84,12 +80,19 @@ public class EabControllerImpl implements EabController { private UceControllerCallback mUceControllerCallback; private volatile boolean mIsSetDestroyedFlag = false; private ExpirationTimeFactory mExpirationTimeFactory = () -> Instant.now().getEpochSecond(); @VisibleForTesting public final Runnable mCapabilityCleanupRunnable = () -> { Log.d(TAG, "Cleanup Capabilities"); cleanupExpiredCapabilities(); }; @VisibleForTesting public interface ExpirationTimeFactory { long getExpirationTime(); } public EabControllerImpl(Context context, int subId, UceControllerCallback c, Looper looper) { mContext = context; mSubId = subId; Loading Loading @@ -481,7 +484,7 @@ public class EabControllerImpl implements EabController { return value; } protected static int getCapabilityCacheExpiration(int subId) { protected int getCapabilityCacheExpiration(int subId) { int value = -1; try { ProvisioningManager pm = ProvisioningManager.createForSubscriptionId(subId); Loading @@ -498,7 +501,7 @@ public class EabControllerImpl implements EabController { return value; } protected static long getAvailabilityCacheExpiration(int subId) { protected long getAvailabilityCacheExpiration(int subId) { long value = -1; try { ProvisioningManager pm = ProvisioningManager.createForSubscriptionId(subId); Loading Loading @@ -577,14 +580,6 @@ public class EabControllerImpl implements EabController { } } // Using the current timestamp if the timestamp doesn't populate Long timestamp; if (tuple.getTime() != null) { timestamp = tuple.getTime().getEpochSecond(); } else { timestamp = Instant.now().getEpochSecond(); } contentValues = new ContentValues(); contentValues.put(EabProvider.PresenceTupleColumns.EAB_COMMON_ID, commonId); contentValues.put(EabProvider.PresenceTupleColumns.BASIC_STATUS, tuple.getStatus()); Loading @@ -593,7 +588,11 @@ public class EabControllerImpl implements EabController { tuple.getServiceVersion()); contentValues.put(EabProvider.PresenceTupleColumns.DESCRIPTION, tuple.getServiceDescription()); contentValues.put(EabProvider.PresenceTupleColumns.REQUEST_TIMESTAMP, timestamp); // Using current timestamp instead of network timestamp since there is not use cases for // network timestamp and the network timestamp may cause capability expire immediately. contentValues.put(EabProvider.PresenceTupleColumns.REQUEST_TIMESTAMP, mExpirationTimeFactory.getExpirationTime()); contentValues.put(EabProvider.PresenceTupleColumns.CONTACT_URI, tuple.getContactUri().toString()); if (serviceCapabilities != null) { Loading Loading @@ -790,4 +789,9 @@ public class EabControllerImpl implements EabController { } return number; } @VisibleForTesting public void setExpirationTimeFactory(ExpirationTimeFactory factory) { mExpirationTimeFactory = factory; } }
src/java/com/android/ims/rcs/uce/eab/EabUtil.java +40 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,46 @@ public class EabUtil { return result.toString(); } /** * Get the given EAB capability from the EAB database. * * Output format: * [PHONE_NUMBER], [RAW_PRESENCE_ID], [PRESENCE_TIMESTAMP], [RAW_OPTION_ID], [OPTION_TIMESTAMP] */ public static String getCapabilityFromEab(Context context, String contact) { StringBuilder result = new StringBuilder(); try (Cursor cursor = context.getContentResolver().query( EabProvider.ALL_DATA_URI, new String[]{ContactColumns.PHONE_NUMBER, PresenceTupleColumns._ID, PresenceTupleColumns.REQUEST_TIMESTAMP, OptionsColumns._ID, OptionsColumns.REQUEST_TIMESTAMP}, ContactColumns.PHONE_NUMBER + "=?", new String[]{contact}, null)) { if (cursor != null && cursor.moveToFirst()) { result.append(cursor.getString(cursor.getColumnIndex( ContactColumns.PHONE_NUMBER))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( PresenceTupleColumns._ID))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( PresenceTupleColumns.REQUEST_TIMESTAMP))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( OptionsColumns._ID))); result.append(","); result.append(cursor.getString(cursor.getColumnIndex( OptionsColumns.REQUEST_TIMESTAMP))); } } catch (Exception e) { Log.w(LOG_TAG, "getCapability exception " + e); } Log.d(LOG_TAG, "getCapabilityFromEab() result: " + result); return result.toString(); } /** * Remove the given EAB contacts from the EAB database. */ Loading
tests/src/com/android/ims/rcs/uce/eab/EabControllerTest.java +20 −23 Original line number Diff line number Diff line Loading @@ -28,12 +28,14 @@ import static com.android.ims.rcs.uce.eab.EabProvider.OPTIONS_URI; import static com.android.ims.rcs.uce.eab.EabProvider.PRESENCE_URI; import static org.junit.Assert.fail; import static org.mockito.Mockito.doReturn; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.os.Looper; import android.os.PersistableBundle; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.RcsContactPresenceTuple; import android.telephony.ims.RcsContactUceCapability; import android.test.mock.MockContentResolver; Loading @@ -48,9 +50,10 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import java.time.temporal.ChronoUnit; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; Loading @@ -67,6 +70,9 @@ public class EabControllerTest extends ImsTestBase { PersistableBundle mBundle; ExecutorService mExecutor = Executors.newSingleThreadExecutor(); @Mock EabControllerImpl.ExpirationTimeFactory mExpirationTimeFactory; private static final int TEST_SUB_ID = 1; private static final String TEST_PHONE_NUMBER = "16661234567"; private static final String TEST_SERVICE_STATUS = "status"; Loading @@ -90,6 +96,8 @@ public class EabControllerTest extends ImsTestBase { insertContactInfoToDB(); mEabController = new EabControllerImpl( mContext, TEST_SUB_ID, null, Looper.getMainLooper()); mEabController.setExpirationTimeFactory(mExpirationTimeFactory); doReturn(Instant.now().getEpochSecond()).when(mExpirationTimeFactory).getExpirationTime(); mBundle = mContextFixture.getTestCarrierConfigBundle(); } Loading @@ -103,7 +111,7 @@ public class EabControllerTest extends ImsTestBase { @SmallTest public void testGetAvailability() { List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceCapability(false)); contactList.add(createPresenceCapability()); mEabController.saveCapabilities(contactList); Loading @@ -117,7 +125,7 @@ public class EabControllerTest extends ImsTestBase { @SmallTest public void testGetCapability() { List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceCapability(false)); contactList.add(createPresenceCapability()); mEabController.saveCapabilities(contactList); Loading @@ -133,7 +141,9 @@ public class EabControllerTest extends ImsTestBase { @SmallTest public void testGetExpiredCapability() { List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceCapability(true)); doReturn(0L).when(mExpirationTimeFactory).getExpirationTime(); contactList.add(createPresenceCapability()); mEabController.saveCapabilities(contactList); Loading @@ -150,13 +160,9 @@ public class EabControllerTest extends ImsTestBase { public void testNonRcsCapability() { // Set non-rcs capabilities expiration to 121 days mBundle.putInt(KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT, 121 * 24 * 60 * 60); // Set timestamp to 120 days age GregorianCalendar date = new GregorianCalendar(); date.setTimeZone(TimeZone.getTimeZone("UTC")); date.add(Calendar.DATE, -120); List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceNonRcsCapability(Instant.now())); contactList.add(createPresenceNonRcsCapability()); mEabController.saveCapabilities(contactList); Loading @@ -176,10 +182,11 @@ public class EabControllerTest extends ImsTestBase { // Set non-rcs capabilities expiration to 119 days mBundle.putInt(KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT, 119 * 24 * 60 * 60); // Set timestamp to 120 days age Instant timestamp = Instant.now().minus(120, ChronoUnit.DAYS); long timestamp = Instant.now().minus(120, ChronoUnit.DAYS).getEpochSecond(); doReturn(timestamp).when(mExpirationTimeFactory).getExpirationTime(); List<RcsContactUceCapability> contactList = new ArrayList<>(); contactList.add(createPresenceNonRcsCapability(timestamp)); contactList.add(createPresenceNonRcsCapability()); mEabController.saveCapabilities(contactList); // Verify result is expired Loading Loading @@ -282,14 +289,7 @@ public class EabControllerTest extends ImsTestBase { } } private RcsContactUceCapability createPresenceCapability(boolean isExpired) { Instant timestamp; if (isExpired) { timestamp = Instant.now().minus(120, ChronoUnit.DAYS); } else { timestamp = Instant.now().plus(120, ChronoUnit.DAYS); } private RcsContactUceCapability createPresenceCapability() { RcsContactPresenceTuple.ServiceCapabilities.Builder serviceCapabilitiesBuilder = new RcsContactPresenceTuple.ServiceCapabilities.Builder(TEST_AUDIO_CAPABLE, TEST_VIDEO_CAPABLE); Loading @@ -299,7 +299,6 @@ public class EabControllerTest extends ImsTestBase { .setServiceDescription(TEST_SERVICE_DESCRIPTION) .setContactUri(TEST_CONTACT_URI) .setServiceCapabilities(serviceCapabilitiesBuilder.build()) .setTime(timestamp) .build(); RcsContactPresenceTuple tupleWithEmptyServiceCapabilities = Loading @@ -307,7 +306,6 @@ public class EabControllerTest extends ImsTestBase { TEST_SERVICE_VERSION) .setServiceDescription(TEST_SERVICE_DESCRIPTION) .setContactUri(TEST_CONTACT_URI) .setTime(timestamp) .build(); RcsContactUceCapability.PresenceBuilder builder = Loading @@ -318,7 +316,7 @@ public class EabControllerTest extends ImsTestBase { return builder.build(); } private RcsContactUceCapability createPresenceNonRcsCapability(Instant timestamp) { private RcsContactUceCapability createPresenceNonRcsCapability() { RcsContactPresenceTuple.ServiceCapabilities.Builder serviceCapabilitiesBuilder = new RcsContactPresenceTuple.ServiceCapabilities.Builder(false, false); RcsContactPresenceTuple tupleWithServiceCapabilities = Loading @@ -327,7 +325,6 @@ public class EabControllerTest extends ImsTestBase { .setServiceDescription(TEST_SERVICE_DESCRIPTION) .setContactUri(TEST_CONTACT_URI) .setServiceCapabilities(serviceCapabilitiesBuilder.build()) .setTime(timestamp) .build(); RcsContactUceCapability.PresenceBuilder builder = Loading