aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHyunho <hhshin@google.com>2022-09-02 04:10:45 +0000
committerHyunho <hhshin@google.com>2022-09-13 21:57:03 +0000
commite60edd7244b4c193ecbabaad1c222b603ed19e0a (patch)
treeb3d91f1270c633e9dc314e462971a5aff1831bb2 /src
parent2d4a8eb4c1354e9998e67bd9ebfe88d750c68792 (diff)
downloadims-e60edd7244b4c193ecbabaad1c222b603ed19e0a.tar.gz
If only RCS or MMTEL is unregistered, send a modify PUBLISH request
When RCS or MMTEL is unregistered, send a modify PUBLISH request message with delay. And after that, other service will be unregistered. In this case, it sends a unregistered message and removes the existing unprocessed message. Bug: b/235973951 Test: atest DeviceCapabilityListenerTest Change-Id: Ie61f2488a0bad23807f84cb55fcdcb2aae407191 Merged-In: Ie61f2488a0bad23807f84cb55fcdcb2aae407191
Diffstat (limited to 'src')
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java
index 442cf7da..54e227d4 100644
--- a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java
+++ b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java
@@ -162,6 +162,8 @@ public class DeviceCapabilityListener {
public void sendImsUnregisteredMessage() {
logd("sendImsUnregisteredMessage");
+ // The IMS has been unregistered. Remove the existing message not processed.
+ removeMessages(EVENT_REQUEST_PUBLISH);
// Remove the existing message and resend a new message.
removeMessages(EVENT_IMS_UNREGISTERED);
Message msg = obtainMessage(EVENT_IMS_UNREGISTERED);
@@ -492,7 +494,7 @@ public class DeviceCapabilityListener {
public void onSubscriberAssociatedUriChanged(Uri[] uris) {
synchronized (mLock) {
logi("onRcsSubscriberAssociatedUriChanged");
- handleRcsSubscriberAssociatedUriChanged(uris, true);
+ handleRcsSubscriberAssociatedUriChanged(uris);
}
}
};
@@ -523,7 +525,7 @@ public class DeviceCapabilityListener {
public void onSubscriberAssociatedUriChanged(Uri[] uris) {
synchronized (mLock) {
logi("onMmTelSubscriberAssociatedUriChanged");
- handleMmTelSubscriberAssociatedUriChanged(uris, true);
+ handleMmTelSubscriberAssociatedUriChanged(uris);
}
}
};
@@ -613,7 +615,7 @@ public class DeviceCapabilityListener {
private void handleImsMmtelUnregistered() {
mCapabilityInfo.updateImsMmtelUnregistered();
// When the MMTEL is unregistered, the mmtel associated uri should be cleared.
- handleMmTelSubscriberAssociatedUriChanged(null, false);
+ handleMmTelSubscriberAssociatedUriChanged(null);
// If the RCS is already unregistered, it informs that the IMS is unregistered.
if (mCapabilityInfo.isImsRegistered() == false) {
@@ -624,16 +626,16 @@ public class DeviceCapabilityListener {
/*
* This method is called when the MMTEL associated uri has changed.
*/
- private void handleMmTelSubscriberAssociatedUriChanged(Uri[] uris, boolean triggerPublish) {
+ private void handleMmTelSubscriberAssociatedUriChanged(Uri[] uris) {
Uri originalUri = mCapabilityInfo.getMmtelAssociatedUri();
mCapabilityInfo.updateMmTelAssociatedUri(uris);
Uri currentUri = mCapabilityInfo.getMmtelAssociatedUri();
boolean hasChanged = !(Objects.equals(originalUri, currentUri));
- logi("handleMmTelSubscriberAssociatedUriChanged: triggerPublish=" + triggerPublish +
- ", hasChanged=" + hasChanged);
+ logi("handleMmTelSubscriberAssociatedUriChanged: hasChanged=" + hasChanged);
- if (triggerPublish && hasChanged) {
+ // Send internal request to send a modification PUBLISH if the MMTEL or RCS is registered.
+ if (mCapabilityInfo.isImsRegistered() && hasChanged) {
mHandler.sendTriggeringPublishMessage(
PublishController.PUBLISH_TRIGGER_MMTEL_URI_CHANGE);
}
@@ -663,7 +665,7 @@ public class DeviceCapabilityListener {
private void handleImsRcsUnregistered() {
boolean hasChanged = mCapabilityInfo.updateImsRcsUnregistered();
// When the RCS is unregistered, the rcs associated uri should be cleared.
- handleRcsSubscriberAssociatedUriChanged(null, false);
+ handleRcsSubscriberAssociatedUriChanged(null);
// If the MMTEL is already unregistered, it informs that the IMS is unregistered.
if (mCapabilityInfo.isImsRegistered() == false) {
mHandler.sendImsUnregisteredMessage();
@@ -673,16 +675,16 @@ public class DeviceCapabilityListener {
/*
* This method is called when the RCS associated uri has changed.
*/
- private void handleRcsSubscriberAssociatedUriChanged(Uri[] uris, boolean triggerPublish) {
+ private void handleRcsSubscriberAssociatedUriChanged(Uri[] uris) {
Uri originalUri = mCapabilityInfo.getRcsAssociatedUri();
mCapabilityInfo.updateRcsAssociatedUri(uris);
Uri currentUri = mCapabilityInfo.getRcsAssociatedUri();
boolean hasChanged = !(Objects.equals(originalUri, currentUri));
- logi("handleRcsSubscriberAssociatedUriChanged: triggerPublish=" + triggerPublish +
- ", hasChanged=" + hasChanged);
+ logi("handleRcsSubscriberAssociatedUriChanged: hasChanged=" + hasChanged);
- if (triggerPublish && hasChanged) {
+ // Send internal request to send a modification PUBLISH if the MMTEL or RCS is registered.
+ if (mCapabilityInfo.isImsRegistered() && hasChanged) {
mHandler.sendTriggeringPublishMessage(PublishController.PUBLISH_TRIGGER_RCS_URI_CHANGE);
}
}