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

Commit 1fb848cf authored by Parvathy Shanmugam's avatar Parvathy Shanmugam Committed by Automerger Merge Worker
Browse files

Merge "(IMS Threading refactoring) Telephony IMS classes to schedule IMS...

Merge "(IMS Threading refactoring) Telephony IMS classes to schedule IMS callback on the main thread" am: 5953d078 am: 304aec02

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1965461

Change-Id: Ibfe5bc64948a7f058e55aeaa7845f075c7325e14
parents 2af96fbc 304aec02
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -384,7 +384,7 @@ public class TelephonyComponentFactory {

    public ImsExternalCallTracker makeImsExternalCallTracker(ImsPhone imsPhone) {

        return new ImsExternalCallTracker(imsPhone);
        return new ImsExternalCallTracker(imsPhone, imsPhone.getContext().getMainExecutor());
    }

    /**
+14 −6
Original line number Diff line number Diff line
@@ -33,10 +33,12 @@ import com.android.internal.telephony.Call;
import com.android.internal.telephony.Connection;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.util.TelephonyUtils;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Executor;

/**
 * Responsible for tracking external calls known to the system.
@@ -70,9 +72,15 @@ public class ImsExternalCallTracker implements ImsPhoneCallTracker.PhoneStateLis
     * external call state updates from the IMS framework.
     */
    public class ExternalCallStateListener extends ImsExternalCallStateListener {
        public ExternalCallStateListener(Executor executor) {
            super(executor);
        }

        @Override
        public void onImsExternalCallStateUpdate(List<ImsExternalCallState> externalCallState) {
            refreshExternalCallState(externalCallState);
        public void onImsExternalCallStateUpdate(List<ImsExternalCallState> externalCallState,
                    Executor executor) {
            TelephonyUtils.runWithCleanCallingIdentity(()->
                        refreshExternalCallState(externalCallState), executor);
        }
    }

@@ -149,15 +157,15 @@ public class ImsExternalCallTracker implements ImsPhoneCallTracker.PhoneStateLis

    @VisibleForTesting
    public ImsExternalCallTracker(ImsPhone phone, ImsPullCall callPuller,
            ImsCallNotify callNotifier) {
            ImsCallNotify callNotifier, Executor executor) {

        mPhone = phone;
        mCallStateNotifier = callNotifier;
        mExternalCallStateListener = new ExternalCallStateListener();
        mExternalCallStateListener = new ExternalCallStateListener(executor);
        mCallPuller = callPuller;
    }

    public ImsExternalCallTracker(ImsPhone phone) {
    public ImsExternalCallTracker(ImsPhone phone, Executor executor) {
        mPhone = phone;
        mCallStateNotifier = new ImsCallNotify() {
            @Override
@@ -170,7 +178,7 @@ public class ImsExternalCallTracker implements ImsPhoneCallTracker.PhoneStateLis
                mPhone.notifyPreciseCallStateChanged();
            }
        };
        mExternalCallStateListener = new ExternalCallStateListener();
        mExternalCallStateListener = new ExternalCallStateListener(executor);
        registerForNotifications();
    }

+12 −5
Original line number Diff line number Diff line
@@ -119,6 +119,7 @@ import com.android.internal.telephony.metrics.VoiceCallSessionStats;
import com.android.internal.telephony.nano.TelephonyProto.ImsConnectionState;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.util.NotificationChannelController;
import com.android.internal.telephony.util.TelephonyUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.telephony.Rlog;

@@ -127,6 +128,7 @@ import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.function.Consumer;

/**
@@ -1969,17 +1971,22 @@ public class ImsPhone extends ImsPhoneBase {
     * Listen to the IMS ECBM state change
     */
    private ImsEcbmStateListener mImsEcbmStateListener =
            new ImsEcbmStateListener() {
            new ImsEcbmStateListener(mContext.getMainExecutor()) {
                @Override
                public void onECBMEntered() {
                public void onECBMEntered(Executor executor) {
                    if (DBG) logd("onECBMEntered");
                    handleEnterEmergencyCallbackMode();

                    TelephonyUtils.runWithCleanCallingIdentity(()->
                            handleEnterEmergencyCallbackMode(), executor);
                }



                @Override
                public void onECBMExited() {
                public void onECBMExited(Executor executor) {
                    if (DBG) logd("onECBMExited");
                    handleExitEmergencyCallbackMode();
                    TelephonyUtils.runWithCleanCallingIdentity(()->
                            handleExitEmergencyCallbackMode(), executor);
                }
            };

+2 −1
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ public class ImsExternalCallTrackerTest {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);

        mTracker = new ImsExternalCallTracker(mImsPhone, mImsPullCall, mCallNotifier);
        mTracker = new ImsExternalCallTracker(mImsPhone, mImsPullCall, mCallNotifier,
            Runnable::run);
    }

    @FlakyTest