aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHyunho <hhshin@google.com>2022-12-06 11:29:01 +0000
committerHyunho <hhshin@google.com>2023-01-09 05:08:39 +0000
commit56127f65b0df21518a6d2ba836a53e1c6c402271 (patch)
tree4148f14d17638fb813a2095f887c71a4f813a4ca /src
parent53f510189d223e0f14cb88b3165134e731faf742 (diff)
downloadims-56127f65b0df21518a6d2ba836a53e1c6c402271.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 even if the associated URI has not changed. When RCS or MMTEL change from Unregistered to Unregistered, the registration status does not change. In this case, the modify PUBLISH request is sent depending on whether the associated URI has been changed. Bug: b/235973951 Test: atest DeviceCapabilityListenerTest Test: TMO Live network. The RCS and MMTEL are registered but the associated URI of RCS is not set. After that, RCS will be unregistered. Verified that the modify PUBLISH request has been sent to the netowrk. Change-Id: I96b565c15f11ee1083b56db29971ddee930d7e64 Merged-In: I96b565c15f11ee1083b56db29971ddee930d7e64
Diffstat (limited to 'src')
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityInfo.java6
-rw-r--r--src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java20
2 files changed, 16 insertions, 10 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 dc794331..f97ccf0a 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
@@ -168,13 +168,17 @@ public class DeviceCapabilityInfo {
/**
* Update the status that IMS MMTEL is unregistered.
+ * @return Mmtel registered status before change
*/
- public synchronized void updateImsMmtelUnregistered() {
+ public synchronized boolean updateImsMmtelUnregistered() {
logi("IMS MMTEL unregistered: original state=" + mMmtelRegistered);
+ boolean changed = false;
if (mMmtelRegistered) {
mMmtelRegistered = false;
+ changed = true;
}
mMmtelNetworkRegType = AccessNetworkConstants.TRANSPORT_TYPE_INVALID;
+ return changed;
}
/**
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 0ec30403..8e940073 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
@@ -495,7 +495,7 @@ public class DeviceCapabilityListener {
public void onSubscriberAssociatedUriChanged(Uri[] uris) {
synchronized (mLock) {
logi("onRcsSubscriberAssociatedUriChanged");
- handleRcsSubscriberAssociatedUriChanged(uris);
+ handleRcsSubscriberAssociatedUriChanged(uris, false);
}
}
};
@@ -526,7 +526,7 @@ public class DeviceCapabilityListener {
public void onSubscriberAssociatedUriChanged(Uri[] uris) {
synchronized (mLock) {
logi("onMmTelSubscriberAssociatedUriChanged");
- handleMmTelSubscriberAssociatedUriChanged(uris);
+ handleMmTelSubscriberAssociatedUriChanged(uris, false);
}
}
};
@@ -614,9 +614,9 @@ public class DeviceCapabilityListener {
* This method is called when the MMTEL is unregistered.
*/
private void handleImsMmtelUnregistered() {
- mCapabilityInfo.updateImsMmtelUnregistered();
+ boolean hasChanged = mCapabilityInfo.updateImsMmtelUnregistered();
// When the MMTEL is unregistered, the mmtel associated uri should be cleared.
- handleMmTelSubscriberAssociatedUriChanged(null);
+ handleMmTelSubscriberAssociatedUriChanged(null, hasChanged);
// If the RCS is already unregistered, it informs that the IMS is unregistered.
if (mCapabilityInfo.isImsRegistered() == false) {
@@ -627,12 +627,13 @@ public class DeviceCapabilityListener {
/*
* This method is called when the MMTEL associated uri has changed.
*/
- private void handleMmTelSubscriberAssociatedUriChanged(Uri[] uris) {
+ private void handleMmTelSubscriberAssociatedUriChanged(Uri[] uris, boolean regiChanged) {
Uri originalUri = mCapabilityInfo.getMmtelAssociatedUri();
mCapabilityInfo.updateMmTelAssociatedUri(uris);
Uri currentUri = mCapabilityInfo.getMmtelAssociatedUri();
- boolean hasChanged = !(Objects.equals(originalUri, currentUri));
+ boolean hasChanged = regiChanged || !(Objects.equals(originalUri, currentUri));
+
logi("handleMmTelSubscriberAssociatedUriChanged: hasChanged=" + hasChanged);
// Send internal request to send a modification PUBLISH if the MMTEL or RCS is registered.
@@ -666,7 +667,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);
+ handleRcsSubscriberAssociatedUriChanged(null, hasChanged);
// If the MMTEL is already unregistered, it informs that the IMS is unregistered.
if (mCapabilityInfo.isImsRegistered() == false) {
mHandler.sendImsUnregisteredMessage();
@@ -676,12 +677,13 @@ public class DeviceCapabilityListener {
/*
* This method is called when the RCS associated uri has changed.
*/
- private void handleRcsSubscriberAssociatedUriChanged(Uri[] uris) {
+ private void handleRcsSubscriberAssociatedUriChanged(Uri[] uris, boolean regiChanged) {
Uri originalUri = mCapabilityInfo.getRcsAssociatedUri();
mCapabilityInfo.updateRcsAssociatedUri(uris);
Uri currentUri = mCapabilityInfo.getRcsAssociatedUri();
- boolean hasChanged = !(Objects.equals(originalUri, currentUri));
+ boolean hasChanged = regiChanged || !(Objects.equals(originalUri, currentUri));
+
logi("handleRcsSubscriberAssociatedUriChanged: hasChanged=" + hasChanged);
// Send internal request to send a modification PUBLISH if the MMTEL or RCS is registered.