135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson/*
235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * Copyright (C) 2017 The Android Open Source Project
335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson *
435cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * Licensed under the Apache License, Version 2.0 (the "License");
535cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * you may not use this file except in compliance with the License.
635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * You may obtain a copy of the License at
735cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson *
835cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson *      http://www.apache.org/licenses/LICENSE-2.0
935cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson *
1035cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * Unless required by applicable law or agreed to in writing, software
1135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * distributed under the License is distributed on an "AS IS" BASIS,
1235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * See the License for the specific language governing permissions and
1435cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * limitations under the License.
1535cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson */
1635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidsonpackage android.service.euicc;
1735cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
1835cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidsonimport android.annotation.Nullable;
194f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sunimport android.annotation.SystemApi;
2035cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidsonimport android.os.Parcel;
2135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidsonimport android.os.Parcelable;
2235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidsonimport android.telephony.euicc.DownloadableSubscription;
2335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
2435cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson/**
2591c3d07fd9c75258a47fb25c59bc0cd5d2b638a4Jeff Davidson * Result of a {@link EuiccService#onGetDownloadableSubscriptionMetadata} operation.
2635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson * @hide
2735cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson */
284f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun@SystemApi
2935cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidsonpublic final class GetDownloadableSubscriptionMetadataResult implements Parcelable {
3035cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
3135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    public static final Creator<GetDownloadableSubscriptionMetadataResult> CREATOR =
3235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson            new Creator<GetDownloadableSubscriptionMetadataResult>() {
3335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        @Override
3435cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        public GetDownloadableSubscriptionMetadataResult createFromParcel(Parcel in) {
3535cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson            return new GetDownloadableSubscriptionMetadataResult(in);
3635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        }
3735cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
3835cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        @Override
3935cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        public GetDownloadableSubscriptionMetadataResult[] newArray(int size) {
4035cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson            return new GetDownloadableSubscriptionMetadataResult[size];
4135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        }
4235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    };
4335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
4483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson    /**
454f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * @hide
464f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * @deprecated - Do no use. Use getResult() instead.
474f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     */
484f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    @Deprecated
494f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    public final int result;
504f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun
514f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    @Nullable
524f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    private final DownloadableSubscription mSubscription;
534f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun
544f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    /**
554f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * Gets the result of the operation.
5683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *
5783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * <p>May be one of the predefined {@code RESULT_} constants in EuiccService or any
5883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * implementation-specific code starting with {@link EuiccService#RESULT_FIRST_USER}.
5983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     */
604f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    public int getResult() {
614f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        return result;
624f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    }
6335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
6435cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    /**
654f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun     * Gets the {@link DownloadableSubscription} with filled-in metadata.
6635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson     *
6783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * <p>Only non-null if {@link #result} is {@link EuiccService#RESULT_OK}.
6835cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson     */
6935cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    @Nullable
704f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    public DownloadableSubscription getDownloadableSubscription() {
714f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        return mSubscription;
724f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun    }
7335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
7483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson    /**
7583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * Construct a new {@link GetDownloadableSubscriptionMetadataResult}.
7683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *
7783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * @param result Result of the operation. May be one of the predefined {@code RESULT_} constants
7883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *     in EuiccService or any implementation-specific code starting with
7983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *     {@link EuiccService#RESULT_FIRST_USER}.
8083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     * @param subscription The subscription with filled-in metadata. Should only be provided if the
8183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     *     result is {@link EuiccService#RESULT_OK}.
8283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson     */
8383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson    public GetDownloadableSubscriptionMetadataResult(int result,
8483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson            @Nullable DownloadableSubscription subscription) {
8535cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        this.result = result;
8683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson        if (this.result == EuiccService.RESULT_OK) {
874f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun            this.mSubscription = subscription;
8883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson        } else {
8983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson            if (subscription != null) {
9083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson                throw new IllegalArgumentException(
9183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson                        "Error result with non-null subscription: " + result);
9283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson            }
934f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun            this.mSubscription = null;
9483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson        }
9535cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    }
9635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
9735cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    private GetDownloadableSubscriptionMetadataResult(Parcel in) {
9835cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        this.result = in.readInt();
994f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        this.mSubscription = in.readTypedObject(DownloadableSubscription.CREATOR);
10035cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    }
10135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
10235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    @Override
10335cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    public void writeToParcel(Parcel dest, int flags) {
10435cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        dest.writeInt(result);
1054f73b9c09ac6ae73c22ad02872e362c817ab2d4cHolly Jiuyu Sun        dest.writeTypedObject(this.mSubscription, flags);
10635cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    }
10735cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson
10835cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    @Override
10935cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    public int describeContents() {
11035cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson        return 0;
11135cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson    }
11235cda39422acdeb3fa47ca60f131678e52dbfcb3Jeff Davidson}