Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bebb841 authored by Brad Ebinger's avatar Brad Ebinger Committed by Gerrit Code Review
Browse files

Merge "Fix Possible Deadlock with getFeatureState"

parents 3580a6a9 8f074959
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -341,15 +341,15 @@ public abstract class ImsFeature {
        }
    }

    /** @hide */
    protected Context mContext;
    /** @hide */
    protected final Object mLock = new Object();

    private final Set<IImsFeatureStatusCallback> mStatusCallbacks = Collections.newSetFromMap(
            new WeakHashMap<IImsFeatureStatusCallback, Boolean>());
    private @ImsState int mState = STATE_UNAVAILABLE;
    private int mSlotId = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
    /**
     * @hide
     */
    protected Context mContext;
    private final Object mLock = new Object();
    private final RemoteCallbackList<IImsCapabilityCallback> mCapabilityCallbacks
            = new RemoteCallbackList<>();
    private Capabilities mCapabilityStatus = new Capabilities();
+20 −31
Original line number Diff line number Diff line
@@ -22,25 +22,25 @@ import android.os.Bundle;
import android.os.Message;
import android.os.RemoteException;
import android.telecom.TelecomManager;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.telephony.ims.stub.ImsCallSessionImplBase;
import android.telephony.ims.stub.ImsSmsImplBase;
import android.telephony.ims.ImsCallProfile;
import android.telephony.ims.ImsCallSession;
import android.telephony.ims.ImsReasonInfo;
import android.telephony.ims.aidl.IImsCapabilityCallback;
import android.telephony.ims.aidl.IImsMmTelFeature;
import android.telephony.ims.aidl.IImsMmTelListener;
import android.telephony.ims.aidl.IImsSmsListener;
import android.telephony.ims.stub.ImsCallSessionImplBase;
import android.telephony.ims.stub.ImsEcbmImplBase;
import android.telephony.ims.stub.ImsMultiEndpointImplBase;
import android.telephony.ims.stub.ImsRegistrationImplBase;
import android.telephony.ims.stub.ImsSmsImplBase;
import android.telephony.ims.stub.ImsUtImplBase;
import android.util.Log;

import android.telephony.ims.ImsCallProfile;
import android.telephony.ims.ImsReasonInfo;
import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsEcbm;
import com.android.ims.internal.IImsMultiEndpoint;
import com.android.ims.internal.IImsUt;
import android.telephony.ims.ImsCallSession;
import com.android.internal.annotations.VisibleForTesting;

import java.lang.annotation.Retention;
@@ -61,22 +61,18 @@ public class MmTelFeature extends ImsFeature {
    private final IImsMmTelFeature mImsMMTelBinder = new IImsMmTelFeature.Stub() {

        @Override
        public void setListener(IImsMmTelListener l) throws RemoteException {
            synchronized (mLock) {
        public void setListener(IImsMmTelListener l) {
            MmTelFeature.this.setListener(l);
        }
        }

        @Override
        public int getFeatureState() throws RemoteException {
            synchronized (mLock) {
            try {
                return MmTelFeature.this.getFeatureState();
            } catch (Exception e) {
                throw new RemoteException(e.getMessage());
            }
        }
        }


        @Override
@@ -138,11 +134,9 @@ public class MmTelFeature extends ImsFeature {
        }

        @Override
        public int queryCapabilityStatus() throws RemoteException {
            synchronized (mLock) {
        public int queryCapabilityStatus() {
            return MmTelFeature.this.queryCapabilityStatus().mCapabilities;
        }
        }

        @Override
        public void addCapabilityCallback(IImsCapabilityCallback c) {
@@ -158,7 +152,7 @@ public class MmTelFeature extends ImsFeature {

        @Override
        public void changeCapabilitiesConfiguration(CapabilityChangeRequest request,
                IImsCapabilityCallback c) throws RemoteException {
                IImsCapabilityCallback c) {
            synchronized (mLock) {
                MmTelFeature.this.requestChangeEnabledCapabilities(request, c);
            }
@@ -173,11 +167,9 @@ public class MmTelFeature extends ImsFeature {
        }

        @Override
        public void setSmsListener(IImsSmsListener l) throws RemoteException {
            synchronized (mLock) {
        public void setSmsListener(IImsSmsListener l) {
            MmTelFeature.this.setSmsListener(l);
        }
        }

        @Override
        public void sendSms(int token, int messageRef, String format, String smsc, boolean retry,
@@ -364,9 +356,6 @@ public class MmTelFeature extends ImsFeature {
    @Retention(RetentionPolicy.SOURCE)
    public @interface ProcessCallResult {}


    // Lock for feature synchronization
    private final Object mLock = new Object();
    private IImsMmTelListener mListener;

    /**
@@ -376,11 +365,11 @@ public class MmTelFeature extends ImsFeature {
    private void setListener(IImsMmTelListener listener) {
        synchronized (mLock) {
            mListener = listener;
        }
            if (mListener != null) {
                onFeatureReady();
            }
        }
    }

    private void queryCapabilityConfigurationInternal(int capability, int radioTech,
            IImsCapabilityCallback c) {