Merge "Support handover retry" am: 0c47ab0656 am: 5f6c9d224f

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1436232

Change-Id: I406f72bfbb3fc3058f5d03541dedd06b4ff326ea
This commit is contained in:
Jack Yu
2020-09-25 17:23:13 +00:00
committed by Automerger Merge Worker
4 changed files with 90 additions and 3 deletions

View File

@@ -11401,6 +11401,7 @@ package android.telephony.data {
method public int getCause(); method public int getCause();
method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses(); method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses(); method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
method public int getHandoverFailureMode();
method public int getId(); method public int getId();
method @NonNull public String getInterfaceName(); method @NonNull public String getInterfaceName();
method public int getLinkStatus(); method public int getLinkStatus();
@@ -11412,6 +11413,11 @@ package android.telephony.data {
method public int getSuggestedRetryTime(); method public int getSuggestedRetryTime();
method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR; field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2; // 0x2
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 1; // 0x1
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3; // 0x3
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4; // 0x4
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0; // 0x0
field public static final int LINK_STATUS_ACTIVE = 2; // 0x2 field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
field public static final int LINK_STATUS_DORMANT = 1; // 0x1 field public static final int LINK_STATUS_DORMANT = 1; // 0x1
field public static final int LINK_STATUS_INACTIVE = 0; // 0x0 field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
@@ -11425,6 +11431,7 @@ package android.telephony.data {
method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>); method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>); method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String); method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);

View File

@@ -10283,6 +10283,7 @@ package android.telephony.data {
method public int getCause(); method public int getCause();
method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses(); method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses(); method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
method public int getHandoverFailureMode();
method public int getId(); method public int getId();
method @NonNull public String getInterfaceName(); method @NonNull public String getInterfaceName();
method public int getLinkStatus(); method public int getLinkStatus();
@@ -10294,6 +10295,11 @@ package android.telephony.data {
method public int getSuggestedRetryTime(); method public int getSuggestedRetryTime();
method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR; field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2; // 0x2
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 1; // 0x1
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3; // 0x3
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4; // 0x4
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0; // 0x0
field public static final int LINK_STATUS_ACTIVE = 2; // 0x2 field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
field public static final int LINK_STATUS_DORMANT = 1; // 0x1 field public static final int LINK_STATUS_DORMANT = 1; // 0x1
field public static final int LINK_STATUS_INACTIVE = 0; // 0x0 field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
@@ -10307,6 +10313,7 @@ package android.telephony.data {
method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>); method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>); method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String); method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);

View File

@@ -873,6 +873,7 @@ package android.telephony.data {
method public int getCause(); method public int getCause();
method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses(); method @NonNull public java.util.List<java.net.InetAddress> getDnsAddresses();
method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses(); method @NonNull public java.util.List<java.net.InetAddress> getGatewayAddresses();
method public int getHandoverFailureMode();
method public int getId(); method public int getId();
method @NonNull public String getInterfaceName(); method @NonNull public String getInterfaceName();
method public int getLinkStatus(); method public int getLinkStatus();
@@ -884,6 +885,11 @@ package android.telephony.data {
method public int getSuggestedRetryTime(); method public int getSuggestedRetryTime();
method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR; field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.DataCallResponse> CREATOR;
field public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2; // 0x2
field public static final int HANDOVER_FAILURE_MODE_LEGACY = 1; // 0x1
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3; // 0x3
field public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4; // 0x4
field public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0; // 0x0
field public static final int LINK_STATUS_ACTIVE = 2; // 0x2 field public static final int LINK_STATUS_ACTIVE = 2; // 0x2
field public static final int LINK_STATUS_DORMANT = 1; // 0x1 field public static final int LINK_STATUS_DORMANT = 1; // 0x1
field public static final int LINK_STATUS_INACTIVE = 0; // 0x0 field public static final int LINK_STATUS_INACTIVE = 0; // 0x0
@@ -897,6 +903,7 @@ package android.telephony.data {
method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setCause(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>); method @NonNull public android.telephony.data.DataCallResponse.Builder setDnsAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>); method @NonNull public android.telephony.data.DataCallResponse.Builder setGatewayAddresses(@NonNull java.util.List<java.net.InetAddress>);
method @NonNull public android.telephony.data.DataCallResponse.Builder setHandoverFailureMode(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setId(int);
method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String); method @NonNull public android.telephony.data.DataCallResponse.Builder setInterfaceName(@NonNull String);
method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int); method @NonNull public android.telephony.data.DataCallResponse.Builder setLinkStatus(int);

View File

@@ -67,6 +67,47 @@ public final class DataCallResponse implements Parcelable {
/** Indicates the data connection is active with physical link up. */ /** Indicates the data connection is active with physical link up. */
public static final int LINK_STATUS_ACTIVE = 2; public static final int LINK_STATUS_ACTIVE = 2;
/** {@hide} */
@IntDef(prefix = "HANDOVER_FAILURE_MODE_", value = {
HANDOVER_FAILURE_MODE_LEGACY,
HANDOVER_FAILURE_MODE_DO_FALLBACK,
HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER,
HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL
})
@Retention(RetentionPolicy.SOURCE)
public @interface HandoverFailureMode {}
/**
* Data handover failure mode is unknown.
*/
public static final int HANDOVER_FAILURE_MODE_UNKNOWN = 0;
/**
* Perform fallback to the source data transport on data handover failure using
* the legacy logic, which is fallback if the fail cause is
* {@link DataFailCause#HANDOFF_PREFERENCE_CHANGED}.
*/
public static final int HANDOVER_FAILURE_MODE_LEGACY = 1;
/**
* Perform fallback to the source data transport on data handover failure.
*/
public static final int HANDOVER_FAILURE_MODE_DO_FALLBACK = 2;
/**
* Do not perform fallback to the source data transport on data handover failure.
* Frameworks should keep retrying handover by sending
* {@link DataService#REQUEST_REASON_HANDOVER} request to the underlying {@link DataService}.
*/
public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_HANDOVER = 3;
/**
* Do not perform fallback to the source transport on data handover failure.
* Frameworks should retry setup a new data connection by sending
* {@link DataService#REQUEST_REASON_NORMAL} request to the underlying {@link DataService}.
*/
public static final int HANDOVER_FAILURE_MODE_NO_FALLBACK_RETRY_SETUP_NORMAL = 4;
private final @DataFailureCause int mCause; private final @DataFailureCause int mCause;
private final int mSuggestedRetryTime; private final int mSuggestedRetryTime;
private final int mId; private final int mId;
@@ -80,6 +121,7 @@ public final class DataCallResponse implements Parcelable {
private final int mMtu; private final int mMtu;
private final int mMtuV4; private final int mMtuV4;
private final int mMtuV6; private final int mMtuV6;
private final @HandoverFailureMode int mHandoverFailureMode;
/** /**
* @param cause Data call fail cause. {@link DataFailCause#NONE} indicates no error. * @param cause Data call fail cause. {@link DataFailCause#NONE} indicates no error.
@@ -126,14 +168,15 @@ public final class DataCallResponse implements Parcelable {
mPcscfAddresses = (pcscfAddresses == null) mPcscfAddresses = (pcscfAddresses == null)
? new ArrayList<>() : new ArrayList<>(pcscfAddresses); ? new ArrayList<>() : new ArrayList<>(pcscfAddresses);
mMtu = mMtuV4 = mMtuV6 = mtu; mMtu = mMtuV4 = mMtuV6 = mtu;
mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
} }
/** @hide */
private DataCallResponse(@DataFailureCause int cause, int suggestedRetryTime, int id, private DataCallResponse(@DataFailureCause int cause, int suggestedRetryTime, int id,
@LinkStatus int linkStatus, @ProtocolType int protocolType, @LinkStatus int linkStatus, @ProtocolType int protocolType,
@Nullable String interfaceName, @Nullable List<LinkAddress> addresses, @Nullable String interfaceName, @Nullable List<LinkAddress> addresses,
@Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses, @Nullable List<InetAddress> dnsAddresses, @Nullable List<InetAddress> gatewayAddresses,
@Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6) { @Nullable List<InetAddress> pcscfAddresses, int mtu, int mtuV4, int mtuV6,
@HandoverFailureMode int handoverFailureMode) {
mCause = cause; mCause = cause;
mSuggestedRetryTime = suggestedRetryTime; mSuggestedRetryTime = suggestedRetryTime;
mId = id; mId = id;
@@ -151,6 +194,7 @@ public final class DataCallResponse implements Parcelable {
mMtu = mtu; mMtu = mtu;
mMtuV4 = mtuV4; mMtuV4 = mtuV4;
mMtuV6 = mtuV6; mMtuV6 = mtuV6;
mHandoverFailureMode = handoverFailureMode;
} }
/** @hide */ /** @hide */
@@ -173,6 +217,7 @@ public final class DataCallResponse implements Parcelable {
mMtu = source.readInt(); mMtu = source.readInt();
mMtuV4 = source.readInt(); mMtuV4 = source.readInt();
mMtuV6 = source.readInt(); mMtuV6 = source.readInt();
mHandoverFailureMode = source.readInt();
} }
/** /**
@@ -262,6 +307,13 @@ public final class DataCallResponse implements Parcelable {
return mMtuV6; return mMtuV6;
} }
/**
* @return The data handover failure mode.
*/
public @HandoverFailureMode int getHandoverFailureMode() {
return mHandoverFailureMode;
}
@NonNull @NonNull
@Override @Override
public String toString() { public String toString() {
@@ -339,6 +391,7 @@ public final class DataCallResponse implements Parcelable {
dest.writeInt(mMtu); dest.writeInt(mMtu);
dest.writeInt(mMtuV4); dest.writeInt(mMtuV4);
dest.writeInt(mMtuV6); dest.writeInt(mMtuV6);
dest.writeInt(mHandoverFailureMode);
} }
public static final @android.annotation.NonNull Parcelable.Creator<DataCallResponse> CREATOR = public static final @android.annotation.NonNull Parcelable.Creator<DataCallResponse> CREATOR =
@@ -395,6 +448,8 @@ public final class DataCallResponse implements Parcelable {
private int mMtuV6; private int mMtuV6;
private @HandoverFailureMode int mHandoverFailureMode = HANDOVER_FAILURE_MODE_LEGACY;
/** /**
* Default constructor for Builder. * Default constructor for Builder.
*/ */
@@ -552,6 +607,17 @@ public final class DataCallResponse implements Parcelable {
return this; return this;
} }
/**
* Set data handover failure mode for the data call response.
*
* @param failureMode Handover failure mode.
* @return The same instance of the builder.
*/
public @NonNull Builder setHandoverFailureMode(@HandoverFailureMode int failureMode) {
mHandoverFailureMode = failureMode;
return this;
}
/** /**
* Build the DataCallResponse. * Build the DataCallResponse.
* *
@@ -560,7 +626,7 @@ public final class DataCallResponse implements Parcelable {
public @NonNull DataCallResponse build() { public @NonNull DataCallResponse build() {
return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus, return new DataCallResponse(mCause, mSuggestedRetryTime, mId, mLinkStatus,
mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses, mProtocolType, mInterfaceName, mAddresses, mDnsAddresses, mGatewayAddresses,
mPcscfAddresses, mMtu, mMtuV4, mMtuV6); mPcscfAddresses, mMtu, mMtuV4, mMtuV6, mHandoverFailureMode);
} }
} }
} }