Merge "Discard dead MmTelFeature Binder Instances" am: 9e1009dd55

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1575999

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ia3a57c891b4be0d45d7b7686cc85bd8a01512ddb
This commit is contained in:
Brad Ebinger
2021-02-05 03:41:35 +00:00
committed by Automerger Merge Worker
3 changed files with 17 additions and 2 deletions

View File

@@ -44,8 +44,12 @@ public class ImsEcbmImplBase {
@Override @Override
public void setListener(IImsEcbmListener listener) { public void setListener(IImsEcbmListener listener) {
synchronized (mLock) { synchronized (mLock) {
if (mImsEcbm != null && listener != null && Objects.equals( if (mListener != null && !mListener.asBinder().isBinderAlive()) {
mImsEcbm.asBinder(), listener.asBinder())) { Log.w(TAG, "setListener: discarding dead Binder");
mListener = null;
}
if (mListener != null && listener != null && Objects.equals(
mListener.asBinder(), listener.asBinder())) {
return; return;
} }
if (listener == null) { if (listener == null) {

View File

@@ -48,6 +48,10 @@ public class ImsMultiEndpointImplBase {
@Override @Override
public void setListener(IImsExternalCallStateListener listener) throws RemoteException { public void setListener(IImsExternalCallStateListener listener) throws RemoteException {
synchronized (mLock) { synchronized (mLock) {
if (mListener != null && !mListener.asBinder().isBinderAlive()) {
Log.w(TAG, "setListener: discarding dead Binder");
mListener = null;
}
if (mListener != null && listener != null && Objects.equals( if (mListener != null && listener != null && Objects.equals(
mListener.asBinder(), listener.asBinder())) { mListener.asBinder(), listener.asBinder())) {
return; return;

View File

@@ -23,6 +23,7 @@ import android.annotation.SystemApi;
import android.os.Bundle; import android.os.Bundle;
import android.os.RemoteException; import android.os.RemoteException;
import android.telephony.ims.ImsUtListener; import android.telephony.ims.ImsUtListener;
import android.util.Log;
import com.android.ims.internal.IImsUt; import com.android.ims.internal.IImsUt;
import com.android.ims.internal.IImsUtListener; import com.android.ims.internal.IImsUtListener;
@@ -41,6 +42,7 @@ import java.util.Objects;
// will break other implementations of ImsUt maintained by other ImsServices. // will break other implementations of ImsUt maintained by other ImsServices.
@SystemApi @SystemApi
public class ImsUtImplBase { public class ImsUtImplBase {
private static final String TAG = "ImsUtImplBase";
/** /**
* Bar all incoming calls. (See 3GPP TS 24.611) * Bar all incoming calls. (See 3GPP TS 24.611)
* @hide * @hide
@@ -207,6 +209,11 @@ public class ImsUtImplBase {
@Override @Override
public void setListener(IImsUtListener listener) throws RemoteException { public void setListener(IImsUtListener listener) throws RemoteException {
synchronized (mLock) { synchronized (mLock) {
if (mUtListener != null
&& !mUtListener.getListenerInterface().asBinder().isBinderAlive()) {
Log.w(TAG, "setListener: discarding dead Binder");
mUtListener = null;
}
if (mUtListener != null && listener != null && Objects.equals( if (mUtListener != null && listener != null && Objects.equals(
mUtListener.getListenerInterface().asBinder(), listener.asBinder())) { mUtListener.getListenerInterface().asBinder(), listener.asBinder())) {
return; return;