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

Commit 2d816850 authored by James Mattis's avatar James Mattis Committed by Automerger Merge Worker
Browse files

Merge "Adding status and end date to SubscriptionPlan" into main am: fe3feeb1

parents 5da7c77c fe3feeb1
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -46076,6 +46076,8 @@ package android.telephony {
    method public long getDataUsageBytes();
    method public long getDataUsageTime();
    method @NonNull public int[] getNetworkTypes();
    method @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") @Nullable public java.time.ZonedDateTime getPlanEndDate();
    method @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") public int getSubscriptionStatus();
    method @Nullable public CharSequence getSummary();
    method @Nullable public CharSequence getTitle();
    method public void writeToParcel(android.os.Parcel, int);
@@ -46086,6 +46088,11 @@ package android.telephony {
    field public static final int LIMIT_BEHAVIOR_DISABLED = 0; // 0x0
    field public static final int LIMIT_BEHAVIOR_THROTTLED = 2; // 0x2
    field public static final int LIMIT_BEHAVIOR_UNKNOWN = -1; // 0xffffffff
    field @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") public static final int SUBSCRIPTION_STATUS_ACTIVE = 1; // 0x1
    field @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") public static final int SUBSCRIPTION_STATUS_INACTIVE = 2; // 0x2
    field @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") public static final int SUBSCRIPTION_STATUS_SUSPENDED = 4; // 0x4
    field @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") public static final int SUBSCRIPTION_STATUS_TRIAL = 3; // 0x3
    field @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") public static final int SUBSCRIPTION_STATUS_UNKNOWN = 0; // 0x0
    field public static final long TIME_UNKNOWN = -1L; // 0xffffffffffffffffL
  }
@@ -46097,6 +46104,7 @@ package android.telephony {
    method public android.telephony.SubscriptionPlan.Builder setDataLimit(long, int);
    method public android.telephony.SubscriptionPlan.Builder setDataUsage(long, long);
    method @NonNull public android.telephony.SubscriptionPlan.Builder setNetworkTypes(@NonNull int[]);
    method @FlaggedApi("com.android.internal.telephony.flags.subscription_plan_allow_status_and_end_date") @NonNull public android.telephony.SubscriptionPlan.Builder setSubscriptionStatus(int);
    method public android.telephony.SubscriptionPlan.Builder setSummary(@Nullable CharSequence);
    method public android.telephony.SubscriptionPlan.Builder setTitle(@Nullable CharSequence);
  }
+69 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.telephony;

import android.annotation.BytesLong;
import android.annotation.CurrentTimeMillisLong;
import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -28,6 +29,7 @@ import android.telephony.Annotation.NetworkType;
import android.util.Range;
import android.util.RecurrenceRule;

import com.android.internal.telephony.flags.Flags;
import com.android.internal.util.Preconditions;

import java.lang.annotation.Retention;
@@ -83,6 +85,33 @@ public final class SubscriptionPlan implements Parcelable {
    /** Value indicating a timestamp is unknown. */
    public static final long TIME_UNKNOWN = -1;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = { "SUBSCRIPTION_STATUS_" }, value = {
            SUBSCRIPTION_STATUS_UNKNOWN,
            SUBSCRIPTION_STATUS_ACTIVE,
            SUBSCRIPTION_STATUS_INACTIVE,
            SUBSCRIPTION_STATUS_TRIAL,
            SUBSCRIPTION_STATUS_SUSPENDED
    })
    public @interface SubscriptionStatus {}

    /** Subscription status is unknown. */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public static final int SUBSCRIPTION_STATUS_UNKNOWN = 0;
    /** Subscription is active. */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public static final int SUBSCRIPTION_STATUS_ACTIVE = 1;
    /** Subscription is inactive. */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public static final int SUBSCRIPTION_STATUS_INACTIVE = 2;
    /** Subscription is in a trial period. */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public static final int SUBSCRIPTION_STATUS_TRIAL = 3;
    /** Subscription is suspended. */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public static final int SUBSCRIPTION_STATUS_SUSPENDED = 4;

    private final RecurrenceRule cycleRule;
    private CharSequence title;
    private CharSequence summary;
@@ -91,6 +120,7 @@ public final class SubscriptionPlan implements Parcelable {
    private long dataUsageBytes = BYTES_UNKNOWN;
    private long dataUsageTime = TIME_UNKNOWN;
    private @NetworkType int[] networkTypes;
    private int mSubscriptionStatus = SUBSCRIPTION_STATUS_UNKNOWN;

    private SubscriptionPlan(RecurrenceRule cycleRule) {
        this.cycleRule = Preconditions.checkNotNull(cycleRule);
@@ -107,6 +137,7 @@ public final class SubscriptionPlan implements Parcelable {
        dataUsageBytes = source.readLong();
        dataUsageTime = source.readLong();
        networkTypes = source.createIntArray();
        mSubscriptionStatus = source.readInt();
    }

    @Override
@@ -124,6 +155,7 @@ public final class SubscriptionPlan implements Parcelable {
        dest.writeLong(dataUsageBytes);
        dest.writeLong(dataUsageTime);
        dest.writeIntArray(networkTypes);
        dest.writeInt(mSubscriptionStatus);
    }

    @Override
@@ -137,13 +169,14 @@ public final class SubscriptionPlan implements Parcelable {
                .append(" dataUsageBytes=").append(dataUsageBytes)
                .append(" dataUsageTime=").append(dataUsageTime)
                .append(" networkTypes=").append(Arrays.toString(networkTypes))
                .append(" subscriptionStatus=").append(mSubscriptionStatus)
                .append("}").toString();
    }

    @Override
    public int hashCode() {
        return Objects.hash(cycleRule, title, summary, dataLimitBytes, dataLimitBehavior,
                dataUsageBytes, dataUsageTime, Arrays.hashCode(networkTypes));
                dataUsageBytes, dataUsageTime, Arrays.hashCode(networkTypes), mSubscriptionStatus);
    }

    @Override
@@ -157,7 +190,8 @@ public final class SubscriptionPlan implements Parcelable {
                    && dataLimitBehavior == other.dataLimitBehavior
                    && dataUsageBytes == other.dataUsageBytes
                    && dataUsageTime == other.dataUsageTime
                    && Arrays.equals(networkTypes, other.networkTypes);
                    && Arrays.equals(networkTypes, other.networkTypes)
                    && mSubscriptionStatus == other.mSubscriptionStatus;
        }
        return false;
    }
@@ -179,6 +213,13 @@ public final class SubscriptionPlan implements Parcelable {
        return cycleRule;
    }

    /** Return the end date of this plan, or null if no end date exists. */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public @Nullable ZonedDateTime getPlanEndDate() {
        // ZonedDateTime is immutable, so no need to create a defensive copy.
        return cycleRule.end;
    }

    /** Return the short title of this plan. */
    public @Nullable CharSequence getTitle() {
        return title;
@@ -237,6 +278,16 @@ public final class SubscriptionPlan implements Parcelable {
        return cycleRule.cycleIterator();
    }

    /**
     * Returns the status of the subscription plan.
     *
     * @return The subscription status, or {@link #SUBSCRIPTION_STATUS_UNKNOWN} if not available.
     */
    @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
    public @SubscriptionStatus int getSubscriptionStatus() {
        return mSubscriptionStatus;
    }

    /**
     * Builder for a {@link SubscriptionPlan}.
     */
@@ -382,5 +433,21 @@ public final class SubscriptionPlan implements Parcelable {
                    TelephonyManager.getAllNetworkTypes().length);
            return this;
        }

        /**
         * Set the subscription status.
         *
         * @param subscriptionStatus the current subscription status
         */
        @FlaggedApi(Flags.FLAG_SUBSCRIPTION_PLAN_ALLOW_STATUS_AND_END_DATE)
        public @NonNull Builder setSubscriptionStatus(@SubscriptionStatus int subscriptionStatus) {
            if (subscriptionStatus < SUBSCRIPTION_STATUS_UNKNOWN
                    || subscriptionStatus > SUBSCRIPTION_STATUS_SUSPENDED) {
                throw new IllegalArgumentException(
                        "Subscription status must be defined with a valid value");
            }
            plan.mSubscriptionStatus = subscriptionStatus;
            return this;
        }
    }
}