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