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

Commit f0bfdf1c authored by chen xu's avatar chen xu
Browse files

new API to notify ImsDisconnectCause

Bug: 119890559
Test: atest CtsTelephonyTestCases:PhoneStateListenerTest
Change-Id: I378abf8bf976f7dd5c4b43904c707bd441cc850a
parent a992cd0d
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -16,6 +16,7 @@


package com.android.internal.telephony;
package com.android.internal.telephony;


import android.annotation.NonNull;
import android.net.LinkProperties;
import android.net.LinkProperties;
import android.net.NetworkCapabilities;
import android.net.NetworkCapabilities;
import android.os.Bundle;
import android.os.Bundle;
@@ -33,6 +34,7 @@ import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.data.ApnSetting;
import android.telephony.ims.ImsReasonInfo;


import java.util.List;
import java.util.List;


@@ -288,6 +290,15 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
        }
        }
    }
    }


    @Override
    public void notifyImsDisconnectCause(@NonNull Phone sender, ImsReasonInfo imsReasonInfo) {
        try {
            mRegistry.notifyImsDisconnectCause(sender.getSubId(), imsReasonInfo);
        } catch (RemoteException ex) {
            // system process is dead
        }
    }

    public void notifyPreciseDataConnectionFailed(Phone sender, String apnType,
    public void notifyPreciseDataConnectionFailed(Phone sender, String apnType,
            String apn, @DataFailCause.FailCause int failCause) {
            String apn, @DataFailCause.FailCause int failCause) {
        // FIXME: subId?
        // FIXME: subId?
+3 −0
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@ import android.telephony.DataFailCause;
import android.telephony.PhoneCapability;
import android.telephony.PhoneCapability;
import android.telephony.PhysicalChannelConfig;
import android.telephony.PhysicalChannelConfig;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.ims.ImsReasonInfo;


import java.util.List;
import java.util.List;


@@ -61,6 +62,8 @@ public interface PhoneNotifier {


    void notifyDisconnectCause(int cause, int preciseCause);
    void notifyDisconnectCause(int cause, int preciseCause);


    void notifyImsDisconnectCause(Phone sender, ImsReasonInfo imsReasonInfo);

    public void notifyPreciseDataConnectionFailed(Phone sender, String apnType, String apn,
    public void notifyPreciseDataConnectionFailed(Phone sender, String apnType, String apn,
                                                  @DataFailCause.FailCause int failCause);
                                                  @DataFailCause.FailCause int failCause);


+6 −0
Original line number Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import android.telephony.NetworkScanRequest;
import android.telephony.Rlog;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SignalStrength;
import android.telephony.ims.ImsReasonInfo;
import android.util.Pair;
import android.util.Pair;


import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.annotations.VisibleForTesting;
@@ -212,6 +213,11 @@ abstract class ImsPhoneBase extends Phone {


    public void notifyDisconnect(Connection cn) {
    public void notifyDisconnect(Connection cn) {
        mDisconnectRegistrants.notifyResult(cn);
        mDisconnectRegistrants.notifyResult(cn);

    }

    public void notifyImsReason(ImsReasonInfo imsReasonInfo) {
        mNotifier.notifyImsDisconnectCause(this, imsReasonInfo);
    }
    }


    void notifyUnknownConnection() {
    void notifyUnknownConnection() {
+2 −0
Original line number Original line Diff line number Diff line
@@ -2182,6 +2182,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {


            mMetrics.writeOnImsCallTerminated(mPhone.getPhoneId(), imsCall.getCallSession(),
            mMetrics.writeOnImsCallTerminated(mPhone.getPhoneId(), imsCall.getCallSession(),
                    reasonInfo);
                    reasonInfo);
            mPhone.notifyImsReason(reasonInfo);


            if (reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL
            if (reasonInfo.getCode() == ImsReasonInfo.CODE_SIP_ALTERNATE_EMERGENCY_CALL
                    && mAutoRetryFailedWifiEmergencyCall) {
                    && mAutoRetryFailedWifiEmergencyCall) {
@@ -2942,6 +2943,7 @@ public class ImsPhoneCallTracker extends CallTracker implements ImsPullCall {
        int cause = getDisconnectCauseFromReasonInfo(reasonInfo, callState);
        int cause = getDisconnectCauseFromReasonInfo(reasonInfo, callState);


        processCallStateChange(imsCall, ImsPhoneCall.State.DISCONNECTED, cause);
        processCallStateChange(imsCall, ImsPhoneCall.State.DISCONNECTED, cause);
        mPhone.notifyImsReason(reasonInfo);
    }
    }


    public ImsUtInterface getUtInterface() throws ImsException {
    public ImsUtInterface getUtInterface() throws ImsException {
+6 −0
Original line number Original line Diff line number Diff line
@@ -30,6 +30,7 @@ import android.telephony.PhysicalChannelConfig;
import android.telephony.ServiceState;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionManager;
import android.telephony.ims.ImsReasonInfo;


import com.android.internal.telephony.IOnSubscriptionsChangedListener;
import com.android.internal.telephony.IOnSubscriptionsChangedListener;
import com.android.internal.telephony.IPhoneStateListener;
import com.android.internal.telephony.IPhoneStateListener;
@@ -433,4 +434,9 @@ public class TelephonyRegistryMock extends ITelephonyRegistry.Stub {
    public void notifyRadioPowerStateChanged(int subId) {
    public void notifyRadioPowerStateChanged(int subId) {
        throw new RuntimeException("Not implemented");
        throw new RuntimeException("Not implemented");
    }
    }

    @Override
    public void notifyImsDisconnectCause(int subId, ImsReasonInfo imsReasonInfo)  {
        throw new RuntimeException("Not implemented");
    }
}
}