Merge "Fix API review issues for 5G Slicing feature" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-04-17 00:16:14 +00:00
committed by Android (Google) Code Review
5 changed files with 88 additions and 51 deletions

View File

@@ -42609,7 +42609,7 @@ package android.telephony {
method public String getNetworkOperator(); method public String getNetworkOperator();
method public String getNetworkOperatorName(); method public String getNetworkOperatorName();
method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode(); method @RequiresPermission(anyOf={"android.permission.READ_PRIVILEGED_PHONE_STATE", android.Manifest.permission.READ_PRECISE_PHONE_STATE}) public int getNetworkSelectionMode();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getNetworkSlicingConfiguration(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.telephony.data.SlicingConfig,android.telephony.TelephonyManager.SlicingException>); method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getNetworkSlicingConfiguration(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver<android.telephony.data.NetworkSlicingConfig,android.telephony.TelephonyManager.NetworkSlicingException>);
method public String getNetworkSpecifier(); method public String getNetworkSpecifier();
method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType(); method @Deprecated @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int getNetworkType();
method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public android.telecom.PhoneAccountHandle getPhoneAccountHandle(); method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
@@ -42660,6 +42660,7 @@ package android.telephony {
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isModemEnabledForSlot(int); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isModemEnabledForSlot(int);
method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int isMultiSimSupported(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int isMultiSimSupported();
method public boolean isNetworkRoaming(); method public boolean isNetworkRoaming();
method public boolean isRadioInterfaceCapabilitySupported(@NonNull String);
method public boolean isRttSupported(); method public boolean isRttSupported();
method public boolean isSmsCapable(); method public boolean isSmsCapable();
method @Deprecated public boolean isTtyModeSupported(); method @Deprecated public boolean isTtyModeSupported();
@@ -42859,11 +42860,13 @@ package android.telephony {
field public static final int ERROR_TIMEOUT = 1; // 0x1 field public static final int ERROR_TIMEOUT = 1; // 0x1
} }
public static class TelephonyManager.SlicingException extends java.lang.Exception { public class TelephonyManager.ModemErrorException extends android.telephony.TelephonyManager.NetworkSlicingException {
ctor public TelephonyManager.SlicingException(int); }
method public int getErrorCode();
field public static final int ERROR_MODEM_ERROR = 2; // 0x2 public static class TelephonyManager.NetworkSlicingException extends java.lang.Exception {
field public static final int ERROR_TIMEOUT = 1; // 0x1 }
public class TelephonyManager.TimeoutException extends android.telephony.TelephonyManager.NetworkSlicingException {
} }
public abstract static class TelephonyManager.UssdResponseCallback { public abstract static class TelephonyManager.UssdResponseCallback {
@@ -43073,6 +43076,15 @@ package android.telephony.data {
method @NonNull public android.telephony.data.NetworkSliceInfo.Builder setStatus(int); method @NonNull public android.telephony.data.NetworkSliceInfo.Builder setStatus(int);
} }
public final class NetworkSlicingConfig implements android.os.Parcelable {
ctor public NetworkSlicingConfig();
method public int describeContents();
method @NonNull public java.util.List<android.telephony.data.NetworkSliceInfo> getSliceInfo();
method @NonNull public java.util.List<android.telephony.data.UrspRule> getUrspRules();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.NetworkSlicingConfig> CREATOR;
}
public final class RouteSelectionDescriptor implements android.os.Parcelable { public final class RouteSelectionDescriptor implements android.os.Parcelable {
method public int describeContents(); method public int describeContents();
method @NonNull public java.util.List<java.lang.String> getDataNetworkName(); method @NonNull public java.util.List<java.lang.String> getDataNetworkName();
@@ -43090,15 +43102,6 @@ package android.telephony.data {
field public static final int SESSION_TYPE_IPV6 = 1; // 0x1 field public static final int SESSION_TYPE_IPV6 = 1; // 0x1
} }
public final class SlicingConfig implements android.os.Parcelable {
ctor public SlicingConfig();
method public int describeContents();
method @NonNull public java.util.List<android.telephony.data.NetworkSliceInfo> getSliceInfo();
method @NonNull public java.util.List<android.telephony.data.UrspRule> getUrspRules();
method public void writeToParcel(@NonNull android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.SlicingConfig> CREATOR;
}
public final class TrafficDescriptor implements android.os.Parcelable { public final class TrafficDescriptor implements android.os.Parcelable {
method public int describeContents(); method public int describeContents();
method @Nullable public String getDataNetworkName(); method @Nullable public String getDataNetworkName();

View File

@@ -11934,7 +11934,6 @@ package android.telephony {
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isOffhook();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled(); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isOpportunisticNetworkEnabled();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isPotentialEmergencyNumber(@NonNull String);
method public boolean isRadioInterfaceCapabilitySupported(@NonNull String);
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRadioOn();
method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging(); method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging();
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();

View File

@@ -90,7 +90,7 @@ import android.telephony.CallForwardingInfo.CallForwardingReason;
import android.telephony.VisualVoicemailService.VisualVoicemailTask; import android.telephony.VisualVoicemailService.VisualVoicemailTask;
import android.telephony.data.ApnSetting; import android.telephony.data.ApnSetting;
import android.telephony.data.ApnSetting.MvnoType; import android.telephony.data.ApnSetting.MvnoType;
import android.telephony.data.SlicingConfig; import android.telephony.data.NetworkSlicingConfig;
import android.telephony.emergency.EmergencyNumber; import android.telephony.emergency.EmergencyNumber;
import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories; import android.telephony.emergency.EmergencyNumber.EmergencyServiceCategories;
import android.telephony.gba.UaSecurityProtocolIdentifier; import android.telephony.gba.UaSecurityProtocolIdentifier;
@@ -15065,13 +15065,20 @@ public class TelephonyManager {
public static final String CAPABILITY_SLICING_CONFIG_SUPPORTED = public static final String CAPABILITY_SLICING_CONFIG_SUPPORTED =
"CAPABILITY_SLICING_CONFIG_SUPPORTED"; "CAPABILITY_SLICING_CONFIG_SUPPORTED";
/** @hide */ /**
* A list of the radio interface capability values with public valid constants.
*
* Here is a related list for the systemapi-only valid constants:
* CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE
* CAPABILITY_ALLOWED_NETWORK_TYPES_USED
* CAPABILITY_NR_DUAL_CONNECTIVITY_CONFIGURATION_AVAILABLE
* CAPABILITY_THERMAL_MITIGATION_DATA_THROTTLING
*
* @hide
* TODO(b/185508047): Doc generation for mixed public/systemapi StringDefs formats badly.
*/
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
@StringDef(prefix = "CAPABILITY_", value = { @StringDef(prefix = "CAPABILITY_", value = {
CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE,
CAPABILITY_ALLOWED_NETWORK_TYPES_USED,
CAPABILITY_NR_DUAL_CONNECTIVITY_CONFIGURATION_AVAILABLE,
CAPABILITY_THERMAL_MITIGATION_DATA_THROTTLING,
CAPABILITY_SLICING_CONFIG_SUPPORTED, CAPABILITY_SLICING_CONFIG_SUPPORTED,
}) })
public @interface RadioInterfaceCapability {} public @interface RadioInterfaceCapability {}
@@ -15083,10 +15090,7 @@ public class TelephonyManager {
* *
* @param capability the name of the capability to check for * @param capability the name of the capability to check for
* @return the availability of the capability * @return the availability of the capability
*
* @hide
*/ */
@SystemApi
public boolean isRadioInterfaceCapabilitySupported( public boolean isRadioInterfaceCapabilitySupported(
@NonNull @RadioInterfaceCapability String capability) { @NonNull @RadioInterfaceCapability String capability) {
try { try {
@@ -15670,7 +15674,7 @@ public class TelephonyManager {
* Exception that may be supplied to the callback in {@link #getNetworkSlicingConfiguration} if * Exception that may be supplied to the callback in {@link #getNetworkSlicingConfiguration} if
* something goes awry. * something goes awry.
*/ */
public static class SlicingException extends Exception { public static class NetworkSlicingException extends Exception {
/** /**
* Getting the current slicing configuration successfully. Used internally only. * Getting the current slicing configuration successfully. Used internally only.
* @hide * @hide
@@ -15679,11 +15683,13 @@ public class TelephonyManager {
/** /**
* The system timed out waiting for a response from the Radio. * The system timed out waiting for a response from the Radio.
* @hide
*/ */
public static final int ERROR_TIMEOUT = 1; public static final int ERROR_TIMEOUT = 1;
/** /**
* The modem returned a failure. * The modem returned a failure.
* @hide
*/ */
public static final int ERROR_MODEM_ERROR = 2; public static final int ERROR_MODEM_ERROR = 2;
@@ -15693,20 +15699,44 @@ public class TelephonyManager {
ERROR_MODEM_ERROR, ERROR_MODEM_ERROR,
}) })
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface SlicingError {} public @interface NetworkSlicingError {}
private final int mErrorCode; private final int mErrorCode;
public SlicingException(@SlicingError int errorCode) { /** @hide */
public NetworkSlicingException(@NetworkSlicingError int errorCode) {
mErrorCode = errorCode; mErrorCode = errorCode;
} }
/** @Override
* Fetches the error code associated with this exception. public String toString() {
* @return An error code. switch (mErrorCode) {
*/ case ERROR_TIMEOUT: return "ERROR_TIMEOUT";
public @SlicingError int getErrorCode() { case ERROR_MODEM_ERROR: return "ERROR_MODEM_ERROR";
return mErrorCode; default: return "UNDEFINED";
}
}
}
/**
* Exception that is supplied to the callback in {@link #getNetworkSlicingConfiguration} if the
* system timed out waiting for a response from the Radio.
*/
public class TimeoutException extends NetworkSlicingException {
/** @hide */
public TimeoutException(int errorCode) {
super(errorCode);
}
}
/**
* Exception that is supplied to the callback in {@link #getNetworkSlicingConfiguration} if the
* modem returned a failure.
*/
public class ModemErrorException extends NetworkSlicingException {
/** @hide */
public ModemErrorException(int errorCode) {
super(errorCode);
} }
} }
@@ -15737,7 +15767,7 @@ public class TelephonyManager {
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public void getNetworkSlicingConfiguration( public void getNetworkSlicingConfiguration(
@NonNull @CallbackExecutor Executor executor, @NonNull @CallbackExecutor Executor executor,
@NonNull OutcomeReceiver<SlicingConfig, SlicingException> callback) { @NonNull OutcomeReceiver<NetworkSlicingConfig, NetworkSlicingException> callback) {
Objects.requireNonNull(executor); Objects.requireNonNull(executor);
Objects.requireNonNull(callback); Objects.requireNonNull(callback);
@@ -15749,12 +15779,17 @@ public class TelephonyManager {
telephony.getSlicingConfig(new ResultReceiver(null) { telephony.getSlicingConfig(new ResultReceiver(null) {
@Override @Override
protected void onReceiveResult(int resultCode, Bundle result) { protected void onReceiveResult(int resultCode, Bundle result) {
if (resultCode != SlicingException.SUCCESS) { if (resultCode == NetworkSlicingException.ERROR_TIMEOUT) {
executor.execute(() -> callback.onError( executor.execute(() -> callback.onError(
new SlicingException(resultCode))); new TimeoutException(resultCode)));
return;
} else if (resultCode == NetworkSlicingException.ERROR_MODEM_ERROR) {
executor.execute(() -> callback.onError(
new ModemErrorException(resultCode)));
return; return;
} }
SlicingConfig slicingConfig =
NetworkSlicingConfig slicingConfig =
result.getParcelable(KEY_SLICING_CONFIG_HANDLE); result.getParcelable(KEY_SLICING_CONFIG_HANDLE);
executor.execute(() -> callback.onResult(slicingConfig)); executor.execute(() -> callback.onResult(slicingConfig));
} }

View File

@@ -16,4 +16,4 @@
package android.telephony.data; package android.telephony.data;
parcelable SlicingConfig; parcelable NetworkSlicingConfig;

View File

@@ -28,22 +28,22 @@ import java.util.Objects;
/** /**
* Represents a slicing configuration * Represents a slicing configuration
*/ */
public final class SlicingConfig implements Parcelable { public final class NetworkSlicingConfig implements Parcelable {
private final List<UrspRule> mUrspRules; private final List<UrspRule> mUrspRules;
private final List<NetworkSliceInfo> mSliceInfo; private final List<NetworkSliceInfo> mSliceInfo;
public SlicingConfig() { public NetworkSlicingConfig() {
mUrspRules = new ArrayList<UrspRule>(); mUrspRules = new ArrayList<UrspRule>();
mSliceInfo = new ArrayList<NetworkSliceInfo>(); mSliceInfo = new ArrayList<NetworkSliceInfo>();
} }
/** @hide */ /** @hide */
public SlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) { public NetworkSlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
this(sc.urspRules, sc.sliceInfo); this(sc.urspRules, sc.sliceInfo);
} }
/** @hide */ /** @hide */
public SlicingConfig(List<android.hardware.radio.V1_6.UrspRule> urspRules, public NetworkSlicingConfig(List<android.hardware.radio.V1_6.UrspRule> urspRules,
List<android.hardware.radio.V1_6.SliceInfo> sliceInfo) { List<android.hardware.radio.V1_6.SliceInfo> sliceInfo) {
mUrspRules = new ArrayList<UrspRule>(); mUrspRules = new ArrayList<UrspRule>();
for (android.hardware.radio.V1_6.UrspRule ur : urspRules) { for (android.hardware.radio.V1_6.UrspRule ur : urspRules) {
@@ -69,7 +69,7 @@ public final class SlicingConfig implements Parcelable {
} }
/** @hide */ /** @hide */
public SlicingConfig(Parcel p) { public NetworkSlicingConfig(Parcel p) {
mUrspRules = p.createTypedArrayList(UrspRule.CREATOR); mUrspRules = p.createTypedArrayList(UrspRule.CREATOR);
mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR); mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR);
} }
@@ -96,16 +96,16 @@ public final class SlicingConfig implements Parcelable {
dest.writeTypedList(mSliceInfo, flags); dest.writeTypedList(mSliceInfo, flags);
} }
public static final @NonNull Parcelable.Creator<SlicingConfig> CREATOR = public static final @NonNull Parcelable.Creator<NetworkSlicingConfig> CREATOR =
new Parcelable.Creator<SlicingConfig>() { new Parcelable.Creator<NetworkSlicingConfig>() {
@Override @Override
public SlicingConfig createFromParcel(Parcel source) { public NetworkSlicingConfig createFromParcel(Parcel source) {
return new SlicingConfig(source); return new NetworkSlicingConfig(source);
} }
@Override @Override
public SlicingConfig[] newArray(int size) { public NetworkSlicingConfig[] newArray(int size) {
return new SlicingConfig[size]; return new NetworkSlicingConfig[size];
} }
}; };
@@ -118,7 +118,7 @@ public final class SlicingConfig implements Parcelable {
public boolean equals(@Nullable Object o) { public boolean equals(@Nullable Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
SlicingConfig that = (SlicingConfig) o; NetworkSlicingConfig that = (NetworkSlicingConfig) o;
return mUrspRules.size() == that.mUrspRules.size() return mUrspRules.size() == that.mUrspRules.size()
&& mUrspRules.containsAll(that.mUrspRules) && mUrspRules.containsAll(that.mUrspRules)
&& mSliceInfo.size() == that.mSliceInfo.size() && mSliceInfo.size() == that.mSliceInfo.size()