aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2022-02-19 02:27:45 +0000
committerBrad Ebinger <breadley@google.com>2022-02-22 21:40:44 +0000
commit82c255f4b81defa06889ee1ba54063dd583dae31 (patch)
tree0f1ee437cbc1e2f1bb9a50b99df995d9b18c61ea
parentf88c4378fa753df749ac04dc69ae7a1eb3e6f2dd (diff)
downloadims-82c255f4b81defa06889ee1ba54063dd583dae31.tar.gz
Revert "Add a new api that does not send PUBLISH request with duplicated presence capabilities"
This reverts commit 08151870e5579a2e56eb4dcfbc48326393fbeacb. Reason for revert: CL caused NPE in certain scenarios - b/220236505 Change-Id: I7d6843f6cbabd499a99f530409e247228e9a8f27
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfo.java58
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/PublishProcessor.java21
-rw-r--r--tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfoTest.java128
-rw-r--r--tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java9
4 files changed, 4 insertions, 212 deletions
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfo.java b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfo.java
index 8de8b01f..7fcb1ff7 100644
--- a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfo.java
+++ b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfo.java
@@ -38,7 +38,6 @@ import android.util.Log;
import com.android.ims.rcs.uce.util.FeatureTags;
import com.android.ims.rcs.uce.util.UceUtils;
-import com.android.internal.annotations.VisibleForTesting;
import java.io.PrintWriter;
import java.util.Arrays;
@@ -105,11 +104,6 @@ public class DeviceCapabilityInfo {
private boolean mMobileData;
private boolean mVtSetting;
- // The service description associated with the last publication update.
- private Set<ServiceDescription> mLastSuccessfulCapabilities = new ArraySet<>();
- // The service description to temporarily store the presence capability being sent.
- private Set<ServiceDescription> mPendingPublishCapabilities;
-
public DeviceCapabilityInfo(int subId, String[] capToRegistrationMap) {
mSubId = subId;
mServiceCapRegTracker = PublishServiceDescTracker.fromCarrierConfig(capToRegistrationMap);
@@ -132,8 +126,6 @@ public class DeviceCapabilityInfo {
mMmTelCapabilities = new MmTelCapabilities();
mMmtelAssociatedUris = Collections.EMPTY_LIST;
mRcsAssociatedUris = Collections.EMPTY_LIST;
- mLastSuccessfulCapabilities.clear();
- mPendingPublishCapabilities = null;
}
/**
@@ -181,8 +173,6 @@ public class DeviceCapabilityInfo {
if (mMmtelRegistered) {
mMmtelRegistered = false;
}
- mLastSuccessfulCapabilities.clear();
- mPendingPublishCapabilities = null;
mMmtelNetworkRegType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
}
@@ -252,8 +242,6 @@ public class DeviceCapabilityInfo {
changed = true;
}
mRcsNetworkRegType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
- mLastSuccessfulCapabilities.clear();
- mPendingPublishCapabilities = null;
return changed;
}
@@ -442,52 +430,6 @@ public class DeviceCapabilityInfo {
return mPresenceCapable;
}
- // Get the device's capabilities with the PRESENCE mechanism.
- public RcsContactUceCapability getChangedPresenceCapability(Context context) {
- if (context == null) {
- return null;
- }
- Set<ServiceDescription> capableFromReg =
- mServiceCapRegTracker.copyRegistrationCapabilities();
- if (isPresenceCapabilityChanged(capableFromReg)) {
- RcsContactUceCapability rcsContactUceCapability = getPresenceCapabilities(context);
- if (rcsContactUceCapability != null) {
- mPendingPublishCapabilities = mServiceCapRegTracker.copyRegistrationCapabilities();
- }
- return rcsContactUceCapability;
- }
- return null;
- }
-
- public void setPresencePublishResult(boolean isSuccess) {
- if (isSuccess) {
- mLastSuccessfulCapabilities = mPendingPublishCapabilities;
- }
- mPendingPublishCapabilities = null;
- }
-
- public void resetPresenceCapability() {
- mLastSuccessfulCapabilities.clear();
- mPendingPublishCapabilities = null;
- }
-
- @VisibleForTesting
- public void addLastSuccessfulServiceDescription(ServiceDescription capability) {
- mLastSuccessfulCapabilities.add(capability);
- }
-
- @VisibleForTesting
- public boolean isPresenceCapabilityChanged(Set<ServiceDescription> capableFromReg) {
- if (mLastSuccessfulCapabilities.isEmpty()) {
- return true;
- }
-
- if (capableFromReg.equals(mLastSuccessfulCapabilities)) {
- return false;
- }
- return true;
- }
-
private boolean isVolteAvailable(int networkRegType, MmTelCapabilities capabilities) {
return (networkRegType == AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
&& capabilities.isCapable(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VOICE);
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/PublishProcessor.java b/src/java/com/android/ims/rcs/uce/presence/publish/PublishProcessor.java
index 0df3b17e..d8531a70 100644
--- a/src/java/com/android/ims/rcs/uce/presence/publish/PublishProcessor.java
+++ b/src/java/com/android/ims/rcs/uce/presence/publish/PublishProcessor.java
@@ -112,8 +112,6 @@ public class PublishProcessor {
logi("onRcsDisconnected");
mRcsFeatureManager = null;
mProcessorState.onRcsDisconnected();
- // reset the publish capabilities.
- mDeviceCapabilities.resetPresenceCapability();
}
/**
@@ -154,15 +152,10 @@ public class PublishProcessor {
}
// Get the latest device's capabilities.
- RcsContactUceCapability deviceCapability;
- if (triggerType == PublishController.PUBLISH_TRIGGER_SERVICE) {
- deviceCapability = mDeviceCapabilities.getDeviceCapabilities(
- CAPABILITY_MECHANISM_PRESENCE, mContext);
- } else {
- deviceCapability = mDeviceCapabilities.getChangedPresenceCapability(mContext);
- }
+ RcsContactUceCapability deviceCapability =
+ mDeviceCapabilities.getDeviceCapabilities(CAPABILITY_MECHANISM_PRESENCE, mContext);
if (deviceCapability == null) {
- logi("doPublishInternal: device capability hasn't changed or is null");
+ logw("doPublishInternal: device capability is null");
return false;
}
@@ -356,8 +349,6 @@ public class PublishProcessor {
// Increase the retry count
mProcessorState.increaseRetryCount();
- // reset the last capabilities because of the request is failed
- mDeviceCapabilities.setPresencePublishResult(false);
// Reset the pending flag because it is going to resend a request.
clearPendingRequest();
@@ -382,14 +373,10 @@ public class PublishProcessor {
Instant responseTime = response.getResponseTimestamp();
// Record the time when the request is successful and reset the retry count.
- boolean publishSuccess = false;
if (response.isRequestSuccess()) {
mProcessorState.setLastPublishedTime(responseTime);
mProcessorState.resetRetryCount();
- publishSuccess = true;
}
- // set the last capabilities according to the result of request.
- mDeviceCapabilities.setPresencePublishResult(publishSuccess);
// Update the publish state after the request has finished.
int publishState = response.getPublishState();
@@ -505,8 +492,6 @@ public class PublishProcessor {
*/
public void resetState() {
mProcessorState.resetState();
- // reset the publish capabilities.
- mDeviceCapabilities.resetPresenceCapability();
}
/**
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfoTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfoTest.java
deleted file mode 100644
index 135cf6d9..00000000
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfoTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.ims.rcs.uce.presence.publish;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import android.telephony.ims.RcsContactPresenceTuple;
-import android.util.ArraySet;
-
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.filters.SmallTest;
-
-import com.android.ims.ImsTestBase;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-
-import java.util.Collections;
-import java.util.Set;
-
-@RunWith(AndroidJUnit4.class)
-public class DeviceCapabilityInfoTest extends ImsTestBase {
-
- int mSubId = 1;
- @Mock PublishServiceDescTracker mPublishServiceDescTracker;
-
- @Before
- public void setUp() throws Exception {
- super.setUp();
- }
-
- @After
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- @Test
- @SmallTest
- public void testGetPresenceCapabilityForSameDescription() throws Exception {
- DeviceCapabilityInfo deviceCapInfo = createDeviceCapabilityInfo();
-
- Set<ServiceDescription> mTestCapability = new ArraySet<>();
- mTestCapability.add(getChatDescription());
- mTestCapability.add(getMmtelDescription());
- mTestCapability.add(getUndefinedDescription());
-
- deviceCapInfo.addLastSuccessfulServiceDescription(getMmtelDescription());
- deviceCapInfo.addLastSuccessfulServiceDescription(getChatDescription());
- deviceCapInfo.addLastSuccessfulServiceDescription(getUndefinedDescription());
- assertFalse(deviceCapInfo.isPresenceCapabilityChanged(mTestCapability));
- }
-
- @Test
- @SmallTest
- public void testGetPresenceCapabilityForSameSizeOfDescription() throws Exception {
- DeviceCapabilityInfo deviceCapInfo = createDeviceCapabilityInfo();
-
- Set<ServiceDescription> mTestCapability = new ArraySet<>();
- mTestCapability.add(getChatDescription());
- mTestCapability.add(getMmtelDescription());
- mTestCapability.add(getUndefinedDescription());
-
- deviceCapInfo.addLastSuccessfulServiceDescription(getMmtelDescription());
- deviceCapInfo.addLastSuccessfulServiceDescription(getChatDescription());
- deviceCapInfo.addLastSuccessfulServiceDescription(getUndefined2Description());
-
- assertTrue(deviceCapInfo.isPresenceCapabilityChanged(mTestCapability));
- }
- private DeviceCapabilityInfo createDeviceCapabilityInfo() {
- DeviceCapabilityInfo deviceCapInfo = new DeviceCapabilityInfo(mSubId, null);
- return deviceCapInfo;
- }
-
- private ServiceDescription getChatDescription() {
- ServiceDescription SERVICE_DESCRIPTION_CHAT_SESSION =
- new ServiceDescription(
- RcsContactPresenceTuple.SERVICE_ID_CHAT_V2,
- "2.0" /*version*/,
- null /*description*/
- );
- return SERVICE_DESCRIPTION_CHAT_SESSION;
- }
-
- private ServiceDescription getMmtelDescription() {
- ServiceDescription SERVICE_DESCRIPTION_MMTEL_VOICE = new ServiceDescription(
- RcsContactPresenceTuple.SERVICE_ID_MMTEL,
- "1.0" /*version*/,
- "Voice Service" /*description*/
- );
- return SERVICE_DESCRIPTION_MMTEL_VOICE;
- }
-
- private ServiceDescription getUndefinedDescription() {
- ServiceDescription SERVICE_DESCRIPTION_TEST = new ServiceDescription(
- "test",
- "1.0" /*version*/,
- "Test_Service" /*description*/
- );
- return SERVICE_DESCRIPTION_TEST;
- }
-
- private ServiceDescription getUndefined2Description() {
- ServiceDescription SERVICE_DESCRIPTION_TEST2 = new ServiceDescription(
- "test1",
- "1.0" /*version*/,
- "Test_Service" /*description*/
- );
- return SERVICE_DESCRIPTION_TEST2;
- }
-}
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java
index 0c3d3ceb..f632ca5b 100644
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java
+++ b/tests/src/com/android/ims/rcs/uce/presence/publish/PublishProcessorTest.java
@@ -66,8 +66,8 @@ public class PublishProcessorTest extends ImsTestBase {
doReturn(true).when(mDeviceCapabilities).isImsRegistered();
RcsContactUceCapability capability = getRcsContactUceCapability();
- doReturn(capability).when(mDeviceCapabilities).getChangedPresenceCapability(any());
doReturn(capability).when(mDeviceCapabilities).getDeviceCapabilities(anyInt(), any());
+
doReturn(mTaskId).when(mResponseCallback).getTaskId();
}
@@ -97,7 +97,6 @@ public class PublishProcessorTest extends ImsTestBase {
publishProcessor.doPublish(PublishController.PUBLISH_TRIGGER_RETRY);
- verify(mDeviceCapabilities).getChangedPresenceCapability(any());
verify(mProcessorState, never()).resetRetryCount();
}
@@ -156,7 +155,6 @@ public class PublishProcessorTest extends ImsTestBase {
publishProcessor.onCommandError(mResponseCallback);
- verify(mDeviceCapabilities).setPresencePublishResult(false);
verify(mProcessorState).increaseRetryCount();
verify(mPublishCtrlCallback).requestPublishFromInternal(
eq(PublishController.PUBLISH_TRIGGER_RETRY));
@@ -174,12 +172,10 @@ public class PublishProcessorTest extends ImsTestBase {
doReturn(mTaskId).when(mProcessorState).getCurrentTaskId();
doReturn(mTaskId).when(mResponseCallback).getTaskId();
doReturn(false).when(mResponseCallback).needRetry();
- doReturn(true).when(mResponseCallback).isRequestSuccess();
PublishProcessor publishProcessor = getPublishProcessor();
publishProcessor.onCommandError(mResponseCallback);
- verify(mDeviceCapabilities).setPresencePublishResult(true);
verify(mPublishCtrlCallback).updatePublishRequestResult(anyInt(), any(), any());
verify(mResponseCallback).onDestroy();
verify(mProcessorState).setPublishingFlag(false);
@@ -197,7 +193,6 @@ public class PublishProcessorTest extends ImsTestBase {
publishProcessor.onNetworkResponse(mResponseCallback);
- verify(mDeviceCapabilities).setPresencePublishResult(false);
verify(mProcessorState).increaseRetryCount();
verify(mPublishCtrlCallback).requestPublishFromInternal(
eq(PublishController.PUBLISH_TRIGGER_RETRY));
@@ -219,7 +214,6 @@ public class PublishProcessorTest extends ImsTestBase {
publishProcessor.onNetworkResponse(mResponseCallback);
- verify(mDeviceCapabilities).setPresencePublishResult(true);
verify(mPublishCtrlCallback).updatePublishRequestResult(anyInt(), any(), any());
verify(mResponseCallback).onDestroy();
verify(mProcessorState).setPublishingFlag(false);
@@ -254,7 +248,6 @@ public class PublishProcessorTest extends ImsTestBase {
publishProcessor.publishUpdated(mResponseCallback);
- verify(mDeviceCapabilities).setPresencePublishResult(true);
verify(mProcessorState).setLastPublishedTime(any());
verify(mProcessorState).resetRetryCount();
verify(mPublishCtrlCallback).updatePublishRequestResult(anyInt(), any(), any());