Loading src/java/com/android/internal/telephony/domainselection/DomainSelectionConnection.java +5 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading src/java/com/android/internal/telephony/domainselection/EmergencyCallDomainSelectionConnection.java +27 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. * Loading Loading
src/java/com/android/internal/telephony/domainselection/DomainSelectionConnection.java +5 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading
src/java/com/android/internal/telephony/domainselection/EmergencyCallDomainSelectionConnection.java +27 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. * Loading