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

Commit caff8431 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents 7fa5d35a 09c58000
Loading
Loading
Loading
Loading
+18 −15
Original line number Diff line number Diff line
@@ -42609,7 +42609,7 @@ package android.telephony {
    method public String getNetworkOperator();
    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("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 @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();
@@ -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 int isMultiSimSupported();
    method public boolean isNetworkRoaming();
    method public boolean isRadioInterfaceCapabilitySupported(@NonNull String);
    method public boolean isRttSupported();
    method public boolean isSmsCapable();
    method @Deprecated public boolean isTtyModeSupported();
@@ -42859,11 +42860,13 @@ package android.telephony {
    field public static final int ERROR_TIMEOUT = 1; // 0x1
  }
  public static class TelephonyManager.SlicingException extends java.lang.Exception {
    ctor public TelephonyManager.SlicingException(int);
    method public int getErrorCode();
    field public static final int ERROR_MODEM_ERROR = 2; // 0x2
    field public static final int ERROR_TIMEOUT = 1; // 0x1
  public class TelephonyManager.ModemErrorException extends android.telephony.TelephonyManager.NetworkSlicingException {
  }
  public static class TelephonyManager.NetworkSlicingException extends java.lang.Exception {
  }
  public class TelephonyManager.TimeoutException extends android.telephony.TelephonyManager.NetworkSlicingException {
  }
  public abstract static class TelephonyManager.UssdResponseCallback {
@@ -43073,6 +43076,15 @@ package android.telephony.data {
    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 {
    method public int describeContents();
    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
  }
  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 {
    method public int describeContents();
    method @Nullable public String getDataNetworkName();
+0 −1
Original line number Diff line number Diff line
@@ -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 @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 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 isRinging();
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isTetheringApnRequired();
+57 −22
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ import android.telephony.CallForwardingInfo.CallForwardingReason;
import android.telephony.VisualVoicemailService.VisualVoicemailTask;
import android.telephony.data.ApnSetting;
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.EmergencyServiceCategories;
import android.telephony.gba.UaSecurityProtocolIdentifier;
@@ -15065,13 +15065,20 @@ public class TelephonyManager {
    public static final String 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)
    @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,
    })
    public @interface RadioInterfaceCapability {}
@@ -15083,10 +15090,7 @@ public class TelephonyManager {
     *
     * @param capability the name of the capability to check for
     * @return the availability of the capability
     *
     * @hide
     */
    @SystemApi
    public boolean isRadioInterfaceCapabilitySupported(
            @NonNull @RadioInterfaceCapability String capability) {
        try {
@@ -15670,7 +15674,7 @@ public class TelephonyManager {
     * Exception that may be supplied to the callback in {@link #getNetworkSlicingConfiguration} if
     * something goes awry.
     */
    public static class SlicingException extends Exception {
    public static class NetworkSlicingException extends Exception {
        /**
         * Getting the current slicing configuration successfully. Used internally only.
         * @hide
@@ -15679,11 +15683,13 @@ public class TelephonyManager {
        /**
         * The system timed out waiting for a response from the Radio.
         * @hide
         */
        public static final int ERROR_TIMEOUT = 1;
        /**
         * The modem returned a failure.
         * @hide
         */
        public static final int ERROR_MODEM_ERROR = 2;
@@ -15693,20 +15699,44 @@ public class TelephonyManager {
                ERROR_MODEM_ERROR,
        })
        @Retention(RetentionPolicy.SOURCE)
        public @interface SlicingError {}
        public @interface NetworkSlicingError {}
        private final int mErrorCode;
        public SlicingException(@SlicingError int errorCode) {
        /** @hide */
        public NetworkSlicingException(@NetworkSlicingError int errorCode) {
            mErrorCode = errorCode;
        }
        @Override
        public String toString() {
            switch (mErrorCode) {
                case ERROR_TIMEOUT: return "ERROR_TIMEOUT";
                case ERROR_MODEM_ERROR: return "ERROR_MODEM_ERROR";
                default: return "UNDEFINED";
            }
        }
    }
    /**
         * Fetches the error code associated with this exception.
         * @return An error code.
     * Exception that is supplied to the callback in {@link #getNetworkSlicingConfiguration} if the
     * system timed out waiting for a response from the Radio.
     */
        public @SlicingError int getErrorCode() {
            return mErrorCode;
    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)
    public void getNetworkSlicingConfiguration(
            @NonNull @CallbackExecutor Executor executor,
            @NonNull OutcomeReceiver<SlicingConfig, SlicingException> callback) {
            @NonNull OutcomeReceiver<NetworkSlicingConfig, NetworkSlicingException> callback) {
        Objects.requireNonNull(executor);
        Objects.requireNonNull(callback);
@@ -15749,12 +15779,17 @@ public class TelephonyManager {
            telephony.getSlicingConfig(new ResultReceiver(null) {
                    @Override
                    protected void onReceiveResult(int resultCode, Bundle result) {
                        if (resultCode != SlicingException.SUCCESS) {
                        if (resultCode == NetworkSlicingException.ERROR_TIMEOUT) {
                            executor.execute(() -> callback.onError(
                                    new TimeoutException(resultCode)));
                            return;
                        } else if (resultCode == NetworkSlicingException.ERROR_MODEM_ERROR) {
                            executor.execute(() -> callback.onError(
                                    new SlicingException(resultCode)));
                                    new ModemErrorException(resultCode)));
                            return;
                        }
                        SlicingConfig slicingConfig =
                        NetworkSlicingConfig slicingConfig =
                                result.getParcelable(KEY_SLICING_CONFIG_HANDLE);
                        executor.execute(() -> callback.onResult(slicingConfig));
                    }
+1 −1
Original line number Diff line number Diff line
@@ -16,4 +16,4 @@

package android.telephony.data;

parcelable SlicingConfig;
parcelable NetworkSlicingConfig;
+12 −12
Original line number Diff line number Diff line
@@ -28,22 +28,22 @@ import java.util.Objects;
/**
 * Represents a slicing configuration
 */
public final class SlicingConfig implements Parcelable {
public final class NetworkSlicingConfig implements Parcelable {
    private final List<UrspRule> mUrspRules;
    private final List<NetworkSliceInfo> mSliceInfo;

    public SlicingConfig() {
    public NetworkSlicingConfig() {
        mUrspRules = new ArrayList<UrspRule>();
        mSliceInfo = new ArrayList<NetworkSliceInfo>();
    }

    /** @hide */
    public SlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
    public NetworkSlicingConfig(android.hardware.radio.V1_6.SlicingConfig sc) {
        this(sc.urspRules, sc.sliceInfo);
    }

    /** @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) {
        mUrspRules = new ArrayList<UrspRule>();
        for (android.hardware.radio.V1_6.UrspRule ur : urspRules) {
@@ -69,7 +69,7 @@ public final class SlicingConfig implements Parcelable {
    }

    /** @hide */
    public SlicingConfig(Parcel p) {
    public NetworkSlicingConfig(Parcel p) {
        mUrspRules = p.createTypedArrayList(UrspRule.CREATOR);
        mSliceInfo = p.createTypedArrayList(NetworkSliceInfo.CREATOR);
    }
@@ -96,16 +96,16 @@ public final class SlicingConfig implements Parcelable {
        dest.writeTypedList(mSliceInfo, flags);
    }

    public static final @NonNull Parcelable.Creator<SlicingConfig> CREATOR =
            new Parcelable.Creator<SlicingConfig>() {
    public static final @NonNull Parcelable.Creator<NetworkSlicingConfig> CREATOR =
            new Parcelable.Creator<NetworkSlicingConfig>() {
                @Override
                public SlicingConfig createFromParcel(Parcel source) {
                    return new SlicingConfig(source);
                public NetworkSlicingConfig createFromParcel(Parcel source) {
                    return new NetworkSlicingConfig(source);
                }

                @Override
                public SlicingConfig[] newArray(int size) {
                    return new SlicingConfig[size];
                public NetworkSlicingConfig[] newArray(int size) {
                    return new NetworkSlicingConfig[size];
                }
            };

@@ -118,7 +118,7 @@ public final class SlicingConfig implements Parcelable {
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        SlicingConfig that = (SlicingConfig) o;
        NetworkSlicingConfig that = (NetworkSlicingConfig) o;
        return mUrspRules.size() == that.mUrspRules.size()
                && mUrspRules.containsAll(that.mUrspRules)
                && mSliceInfo.size() == that.mSliceInfo.size()