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

Commit 79ecf659 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 am: 1fb848cf

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

Change-Id: Ic6c5e29556dd5d38b649844ef8ea4669441194f3
parents c9a0d216 1fb848cf
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