191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson/*
291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * Copyright (C) 2017 The Android Open Source Project
391c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson *
491c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * Licensed under the Apache License, Version 2.0 (the "License");
591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * you may not use this file except in compliance with the License.
691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * You may obtain a copy of the License at
791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson *
891c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson *      http://www.apache.org/licenses/LICENSE-2.0
991c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson *
1091c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * Unless required by applicable law or agreed to in writing, software
1191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * distributed under the License is distributed on an "AS IS" BASIS,
1291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1391c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * See the License for the specific language governing permissions and
1491c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * limitations under the License.
1591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson */
1691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidsonpackage android.service.euicc;
1791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
1891c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidsonimport android.annotation.Nullable;
194f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sunimport android.annotation.SystemApi;
2091c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidsonimport android.os.Parcel;
2191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidsonimport android.os.Parcelable;
2291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidsonimport android.telephony.euicc.DownloadableSubscription;
2391c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
244f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sunimport java.util.Arrays;
254f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sunimport java.util.List;
264f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun
2791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson/**
2891c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * Result of a {@link EuiccService#onGetDefaultDownloadableSubscriptionList} operation.
2991c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * @hide
3091c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson */
314f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun@SystemApi
3291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidsonpublic final class GetDefaultDownloadableSubscriptionListResult implements Parcelable {
3391c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
3491c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    public static final Creator<GetDefaultDownloadableSubscriptionListResult> CREATOR =
3591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson            new Creator<GetDefaultDownloadableSubscriptionListResult>() {
3691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        @Override
3791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        public GetDefaultDownloadableSubscriptionListResult createFromParcel(Parcel in) {
3891c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson            return new GetDefaultDownloadableSubscriptionListResult(in);
3991c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        }
4091c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
4191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        @Override
4291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        public GetDefaultDownloadableSubscriptionListResult[] newArray(int size) {
4391c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson            return new GetDefaultDownloadableSubscriptionListResult[size];
4491c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        }
4591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    };
4691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
4783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson    /**
484f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * @hide
494f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * @deprecated - Do no use. Use getResult() instead.
504f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     */
514f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    @Deprecated
524f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    public final int result;
534f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun
544f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    @Nullable
554f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    private final DownloadableSubscription[] mSubscriptions;
564f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun
574f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    /**
584f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * Gets the result of the operation.
5983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *
6083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * <p>May be one of the predefined {@code RESULT_} constants in EuiccService or any
6183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * implementation-specific code starting with {@link EuiccService#RESULT_FIRST_USER}.
6283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     */
634f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    public int getResult() {
644f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        return result;
654f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    }
6691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
6791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    /**
684f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * Gets the available {@link DownloadableSubscription}s (with filled-in metadata).
6991c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson     *
7083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * <p>Only non-null if {@link #result} is {@link EuiccService#RESULT_OK}.
7191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson     */
7291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    @Nullable
734f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    public List<DownloadableSubscription> getDownloadableSubscriptions() {
744f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        if (mSubscriptions == null) return null;
754f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        return Arrays.asList(mSubscriptions);
764f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    }
7791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
7883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson    /**
7983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * Construct a new {@link GetDefaultDownloadableSubscriptionListResult}.
8083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *
8183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * @param result Result of the operation. May be one of the predefined {@code RESULT_} constants
8283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *     in EuiccService or any implementation-specific code starting with
8383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *     {@link EuiccService#RESULT_FIRST_USER}.
8483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * @param subscriptions The available subscriptions. Should only be provided if the result is
8583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *     {@link EuiccService#RESULT_OK}.
8683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     */
8783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson    public GetDefaultDownloadableSubscriptionListResult(int result,
8883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson            @Nullable DownloadableSubscription[] subscriptions) {
8991c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        this.result = result;
9083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson        if (this.result == EuiccService.RESULT_OK) {
914f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun            this.mSubscriptions = subscriptions;
9283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson        } else {
9383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson            if (subscriptions != null) {
9483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson                throw new IllegalArgumentException(
9583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson                        "Error result with non-null subscriptions: " + result);
9683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson            }
974f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun            this.mSubscriptions = null;
9883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson        }
9991c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    }
10091c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
10191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    private GetDefaultDownloadableSubscriptionListResult(Parcel in) {
10291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        this.result = in.readInt();
1034f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        this.mSubscriptions = in.createTypedArray(DownloadableSubscription.CREATOR);
10491c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    }
10591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
10691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    @Override
10791c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    public void writeToParcel(Parcel dest, int flags) {
10891c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        dest.writeInt(result);
1094f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        dest.writeTypedArray(mSubscriptions, flags);
11091c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    }
11191c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson
11291c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    @Override
11391c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    public int describeContents() {
11491c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson        return 0;
11591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson    }
11691c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson}
117