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

Commit 3418c136 authored by Brad Ebinger's avatar Brad Ebinger
Browse files

Include Context in ImsServiceProxy Compat Layer

Context was not being set correctly in
ImsServiceProxyCompat, causing a phone process
crash.

Bug: 72124004
Test: Boot, make sure phone process doesn't crash
Change-Id: Ib8fe268c8b5d6d05fe62bf4c87c574e5c6e55bd8
parent 0e170c7f
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.ims.internal.IImsCallSession;
import com.android.ims.internal.IImsConfig;
import com.android.ims.internal.IImsEcbm;
import com.android.ims.internal.IImsMultiEndpoint;
import com.android.ims.internal.IImsRegistration;
import com.android.ims.internal.IImsRegistrationCallback;
import com.android.ims.internal.IImsRegistrationListener;
import com.android.ims.internal.IImsUt;
@@ -1520,8 +1521,10 @@ public class ImsManager {
                    checkAndThrowExceptionIfServiceUnavailable();
                    // TODO: Remove once new MmTelFeature is merged in
                    mImsServiceProxy.addRegistrationListener(mImsRegistrationListenerProxy);
                    mImsServiceProxy.getRegistration().addRegistrationCallback(
                            mRegistrationCallback);
                    IImsRegistration regBinder = mImsServiceProxy.getRegistration();
                    if (regBinder != null) {
                        regBinder.addRegistrationCallback(mRegistrationCallback);
                    }
                    log("Registration Callback/Listener registered.");
                    // Only record if there isn't a RemoteException.
                    mHasRegisteredForProxy = true;
@@ -1964,7 +1967,7 @@ public class ImsManager {
        if (!mConfigDynamicBind) {
            // Deprecated method of binding
            Rlog.i(TAG, "Creating ImsService using ServiceManager");
            mImsServiceProxy = ImsServiceProxyCompat.create(mPhoneId, mDeathRecipient);
            mImsServiceProxy = ImsServiceProxyCompat.create(mContext, mPhoneId, mDeathRecipient);
        } else {
            Rlog.i(TAG, "Creating ImsService using ImsResolver");
            mImsServiceProxy = ImsServiceProxy.create(mContext, mPhoneId);
+3 −3
Original line number Diff line number Diff line
@@ -144,15 +144,15 @@ public class ImsServiceProxy {
        }
    };

    public ImsServiceProxy(int slotId, IBinder binder, int featureType) {
    public ImsServiceProxy(Context context, int slotId, IBinder binder, int featureType) {
        mSlotId = slotId;
        mBinder = binder;
        mSupportedFeature = featureType;
        mContext = context;
    }

    public ImsServiceProxy(Context context, int slotId, int featureType) {
        this(slotId, null, featureType);
        mContext = context;
        this(context, slotId, null, featureType);
    }

    public @Nullable IImsRegistration getRegistration() {
+5 −4
Original line number Diff line number Diff line
@@ -54,7 +54,8 @@ public class ImsServiceProxyCompat extends ImsServiceProxy {
     */
    private static final String IMS_SERVICE = "ims";

    public static ImsServiceProxyCompat create(int slotId, IBinder.DeathRecipient recipient) {
    public static ImsServiceProxyCompat create(Context context, int slotId,
            IBinder.DeathRecipient recipient) {
        IBinder binder = ServiceManager.checkService(IMS_SERVICE);

        if (binder != null) {
@@ -66,11 +67,11 @@ public class ImsServiceProxyCompat extends ImsServiceProxy {

        // If the proxy is created with a null binder, subsequent calls that depend on a live
        // binder will fail, causing this structure to be torn down and created again.
        return new ImsServiceProxyCompat(slotId, binder);
        return new ImsServiceProxyCompat(context, slotId, binder);
    }

    public ImsServiceProxyCompat(int slotId, IBinder binder) {
        super(slotId, binder, SERVICE_ID);
    public ImsServiceProxyCompat(Context context, int slotId, IBinder binder) {
        super(context, slotId, binder, SERVICE_ID);
    }

    @Override