diff options
author | Brad Ebinger <breadley@google.com> | 2022-02-19 02:27:45 +0000 |
---|---|---|
committer | Brad Ebinger <breadley@google.com> | 2022-02-22 21:40:44 +0000 |
commit | 82c255f4b81defa06889ee1ba54063dd583dae31 (patch) | |
tree | 0f1ee437cbc1e2f1bb9a50b99df995d9b18c61ea | |
parent | f88c4378fa753df749ac04dc69ae7a1eb3e6f2dd (diff) | |
download | ims-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
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()); |