Add Emergency Number Test Mode
Add EMERGENCY_NUMBER_SOURCE_TEST_MODE
This also does not allow to send the service categories from database when
dialing.
Bug: 122840137
Test: Manual; Treehugger
Merged-in: I4ea3539e3b814b71e03e956d4a857ec20141fa8c
Change-Id: I4ea3539e3b814b71e03e956d4a857ec20141fa8c
(cherry picked from commit cb4bd3a30f)
This commit is contained in:
@@ -6711,6 +6711,7 @@ package android.telephony.ims {
|
||||
method public int getServiceType();
|
||||
method public static int getVideoStateFromCallType(int);
|
||||
method public static int getVideoStateFromImsCallProfile(android.telephony.ims.ImsCallProfile);
|
||||
method public boolean isEmergencyCallTesting();
|
||||
method public boolean isVideoCall();
|
||||
method public boolean isVideoPaused();
|
||||
method public static int presentationToOir(int);
|
||||
@@ -6719,6 +6720,7 @@ package android.telephony.ims {
|
||||
method public void setCallExtraInt(String, int);
|
||||
method public void setCallRestrictCause(int);
|
||||
method public void setEmergencyCallRouting(int);
|
||||
method public void setEmergencyCallTesting(boolean);
|
||||
method public void setEmergencyServiceCategories(int);
|
||||
method public void setEmergencyUrns(java.util.List<java.lang.String>);
|
||||
method public void updateCallExtras(android.telephony.ims.ImsCallProfile);
|
||||
|
||||
@@ -27,6 +27,7 @@ import android.telephony.Rlog;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -176,6 +177,12 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
||||
* Bit-field which indicates the number is from the platform-maintained database.
|
||||
*/
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_DATABASE = 1 << 4;
|
||||
/**
|
||||
* Bit-field which indicates the number is from test mode.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_TEST = 1 << 5;
|
||||
/** Bit-field which indicates the number is from the modem config. */
|
||||
public static final int EMERGENCY_NUMBER_SOURCE_MODEM_CONFIG =
|
||||
EmergencyNumberSource.MODEM_CONFIG;
|
||||
@@ -326,6 +333,21 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
||||
return mEmergencyServiceCategoryBitmask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the bitmask of emergency service categories of the emergency number for
|
||||
* internal dialing.
|
||||
*
|
||||
* @return bitmask of the emergency service categories
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public @EmergencyServiceCategories int getEmergencyServiceCategoryBitmaskInternalDial() {
|
||||
if (mEmergencyNumberSourceBitmask == EMERGENCY_NUMBER_SOURCE_DATABASE) {
|
||||
return EMERGENCY_SERVICE_CATEGORY_UNSPECIFIED;
|
||||
}
|
||||
return mEmergencyServiceCategoryBitmask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the emergency service categories of the emergency number.
|
||||
*
|
||||
@@ -577,6 +599,7 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
||||
emergencyNumberList.remove(i--);
|
||||
}
|
||||
}
|
||||
Collections.sort(emergencyNumberList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -613,6 +636,12 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
||||
if (first.getEmergencyCallRouting() != second.getEmergencyCallRouting()) {
|
||||
return false;
|
||||
}
|
||||
// Never merge two numbers if one of them is from test mode but the other one is not;
|
||||
// This supports to remove a number from the test mode.
|
||||
if (first.isFromSources(EMERGENCY_NUMBER_SOURCE_TEST)
|
||||
^ second.isFromSources(EMERGENCY_NUMBER_SOURCE_TEST)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -638,4 +667,13 @@ public final class EmergencyNumber implements Parcelable, Comparable<EmergencyNu
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate Emergency Number address that only allows '0'-'9', '*', or '#'
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static boolean validateEmergencyNumberAddress(String address) {
|
||||
return address.matches("[0-9*#]+");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,6 +347,9 @@ public final class ImsCallProfile implements Parcelable {
|
||||
private @EmergencyCallRouting int mEmergencyCallRouting =
|
||||
EmergencyNumber.EMERGENCY_CALL_ROUTING_UNKNOWN;
|
||||
|
||||
/** Indicates if the call is for testing purpose */
|
||||
private boolean mEmergencyCallTesting = false;
|
||||
|
||||
/**
|
||||
* Extras associated with this {@link ImsCallProfile}.
|
||||
* <p>
|
||||
@@ -534,9 +537,10 @@ public final class ImsCallProfile implements Parcelable {
|
||||
+ ", callType=" + mCallType
|
||||
+ ", restrictCause=" + mRestrictCause
|
||||
+ ", mediaProfile=" + mMediaProfile.toString()
|
||||
+ ", emergencyServiceCategories=" + mEmergencyCallRouting
|
||||
+ ", emergencyServiceCategories=" + mEmergencyServiceCategories
|
||||
+ ", emergencyUrns=" + mEmergencyUrns
|
||||
+ ", emergencyCallRouting=" + mEmergencyCallRouting + " }";
|
||||
+ ", emergencyCallRouting=" + mEmergencyCallRouting
|
||||
+ ", emergencyCallTesting=" + mEmergencyCallTesting + " }";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -554,6 +558,7 @@ public final class ImsCallProfile implements Parcelable {
|
||||
out.writeInt(mEmergencyServiceCategories);
|
||||
out.writeStringList(mEmergencyUrns);
|
||||
out.writeInt(mEmergencyCallRouting);
|
||||
out.writeBoolean(mEmergencyCallTesting);
|
||||
}
|
||||
|
||||
private void readFromParcel(Parcel in) {
|
||||
@@ -564,6 +569,7 @@ public final class ImsCallProfile implements Parcelable {
|
||||
mEmergencyServiceCategories = in.readInt();
|
||||
mEmergencyUrns = in.createStringArrayList();
|
||||
mEmergencyCallRouting = in.readInt();
|
||||
mEmergencyCallTesting = in.readBoolean();
|
||||
}
|
||||
|
||||
public static final Creator<ImsCallProfile> CREATOR = new Creator<ImsCallProfile>() {
|
||||
@@ -784,9 +790,11 @@ public final class ImsCallProfile implements Parcelable {
|
||||
* @hide
|
||||
*/
|
||||
public void setEmergencyCallInfo(EmergencyNumber num) {
|
||||
setEmergencyServiceCategories(num.getEmergencyServiceCategoryBitmask());
|
||||
setEmergencyServiceCategories(num.getEmergencyServiceCategoryBitmaskInternalDial());
|
||||
setEmergencyUrns(num.getEmergencyUrns());
|
||||
setEmergencyCallRouting(num.getEmergencyCallRouting());
|
||||
setEmergencyCallTesting(num.getEmergencyNumberSourceBitmask()
|
||||
== EmergencyNumber.EMERGENCY_NUMBER_SOURCE_TEST);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -842,6 +850,15 @@ public final class ImsCallProfile implements Parcelable {
|
||||
mEmergencyCallRouting = emergencyCallRouting;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set if this is for testing emergency call, only valid if {@link #getServiceType} returns
|
||||
* {@link #SERVICE_TYPE_EMERGENCY}.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public void setEmergencyCallTesting(boolean isTesting) {
|
||||
mEmergencyCallTesting = isTesting;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the emergency service categories, only valid if {@link #getServiceType} returns
|
||||
* {@link #SERVICE_TYPE_EMERGENCY}
|
||||
@@ -892,4 +909,11 @@ public final class ImsCallProfile implements Parcelable {
|
||||
public @EmergencyCallRouting int getEmergencyCallRouting() {
|
||||
return mEmergencyCallRouting;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get if the emergency call is for testing purpose.
|
||||
*/
|
||||
public boolean isEmergencyCallTesting() {
|
||||
return mEmergencyCallTesting;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ import android.telephony.ServiceState;
|
||||
import android.telephony.SignalStrength;
|
||||
import android.telephony.TelephonyHistogram;
|
||||
import android.telephony.VisualVoicemailSmsFilterSettings;
|
||||
import android.telephony.emergency.EmergencyNumber;
|
||||
import android.telephony.ims.aidl.IImsCapabilityCallback;
|
||||
import android.telephony.ims.aidl.IImsConfig;
|
||||
import android.telephony.ims.aidl.IImsConfigCallback;
|
||||
@@ -1793,6 +1794,16 @@ interface ITelephony {
|
||||
*/
|
||||
int setImsProvisioningString(int subId, int key, String value);
|
||||
|
||||
/**
|
||||
* Update Emergency Number List for Test Mode.
|
||||
*/
|
||||
void updateEmergencyNumberListTestMode(int action, in EmergencyNumber num);
|
||||
|
||||
/**
|
||||
* Get the full emergency number list for Test Mode.
|
||||
*/
|
||||
List<String> getEmergencyNumberListTestMode();
|
||||
|
||||
/**
|
||||
* Enable or disable a logical modem stack associated with the slotIndex.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user