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

Commit e1bbf792 authored by Jongduck You's avatar Jongduck You Committed by Android (Google) Code Review
Browse files

Merge "Adjust disconnect cause for cross SIM redialing" into main

parents f7cb4623 afa30517
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import com.android.internal.telephony.IWwanSelectorCallback;
import com.android.internal.telephony.IWwanSelectorResultCallback;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.data.AccessNetworksManager.QualifiedNetworks;
import com.android.internal.telephony.flags.Flags;
import com.android.internal.telephony.util.TelephonyUtils;

import java.io.PrintWriter;
@@ -185,10 +186,13 @@ public class DomainSelectionConnection {
                    return;
                }
                DomainSelectionConnection.this.onSelectionTerminated(cause);
                if (!Flags.hangupEmergencyCallForCrossSimRedialing()
                        || !mIsEmergency || !checkState(STATUS_DOMAIN_SELECTED)) {
                    dispose();
                }
            }
        }
    }

    /**
     * A wrapper class for {@link IWwanSelectorCallback} interface.
+27 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.internal.telephony.Phone;
import com.android.internal.telephony.data.AccessNetworksManager;
import com.android.internal.telephony.data.AccessNetworksManager.QualifiedNetworks;
import com.android.internal.telephony.emergency.EmergencyStateTracker;
import com.android.internal.telephony.flags.Flags;

import java.util.List;
import java.util.concurrent.CompletableFuture;
@@ -198,6 +199,32 @@ public class EmergencyCallDomainSelectionConnection extends DomainSelectionConne
        super.cancelSelection();
    }

    @Override
    public @NonNull CompletableFuture<Integer> reselectDomain(
        @NonNull DomainSelectionService.SelectionAttributes attr) {
        if (Flags.hangupEmergencyCallForCrossSimRedialing()) {
            int disconnectCause = getDisconnectCause();
            int preciseDisconnectCause = attr.getCsDisconnectCause();
            if (disconnectCause == android.telephony.DisconnectCause.EMERGENCY_TEMP_FAILURE) {
                preciseDisconnectCause = PreciseDisconnectCause.EMERGENCY_TEMP_FAILURE;
            } else if (disconnectCause
                    == android.telephony.DisconnectCause.EMERGENCY_PERM_FAILURE) {
                preciseDisconnectCause = PreciseDisconnectCause.EMERGENCY_PERM_FAILURE;
            }
            if (preciseDisconnectCause != attr.getCsDisconnectCause()) {
                attr = EmergencyCallDomainSelectionConnection.getSelectionAttributes(
                        attr.getSlotIndex(), attr.getSubscriptionId(),
                        attr.isExitedFromAirplaneMode(), attr.getCallId(),
                        (attr.getAddress() != null)
                        ? attr.getAddress().getSchemeSpecificPart() : "",
                        attr.isTestEmergencyNumber(), preciseDisconnectCause,
                        attr.getPsDisconnectCause(),
                        attr.getEmergencyRegistrationResult());
            }
        }
        return super.reselectDomain(attr);
    }

    /**
     * Returns the attributes required to determine the domain for a telephony service.
     *