1d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson/* 2d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * Copyright (C) 2017 The Android Open Source Project 3d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * 4d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * Licensed under the Apache License, Version 2.0 (the "License"); 5d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * you may not use this file except in compliance with the License. 6d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * You may obtain a copy of the License at 7d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * 8d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * http://www.apache.org/licenses/LICENSE-2.0 9d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * 10d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * Unless required by applicable law or agreed to in writing, software 11d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * distributed under the License is distributed on an "AS IS" BASIS, 12d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * See the License for the specific language governing permissions and 14d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * limitations under the License. 15d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson */ 16d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidsonpackage android.service.euicc; 17d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 18d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidsonimport android.annotation.Nullable; 19d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidsonimport android.os.Parcel; 20d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidsonimport android.os.Parcelable; 21d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 22d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson/** 23d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * Result of a {@link EuiccService#onGetEuiccProfileInfoList} operation. 24d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * @hide 25d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * 26d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson * TODO(b/35851809): Make this a SystemApi. 27d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson */ 28d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidsonpublic final class GetEuiccProfileInfoListResult implements Parcelable { 29d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 30d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson public static final Creator<GetEuiccProfileInfoListResult> CREATOR = 31d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson new Creator<GetEuiccProfileInfoListResult>() { 3283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson @Override 3383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson public GetEuiccProfileInfoListResult createFromParcel(Parcel in) { 3483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson return new GetEuiccProfileInfoListResult(in); 3583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson } 36d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 3783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson @Override 3883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson public GetEuiccProfileInfoListResult[] newArray(int size) { 3983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson return new GetEuiccProfileInfoListResult[size]; 4083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson } 4183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson }; 42d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 4383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson /** 4483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * Result of the operation. 4583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * 4683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * <p>May be one of the predefined {@code RESULT_} constants in EuiccService or any 4783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * implementation-specific code starting with {@link EuiccService#RESULT_FIRST_USER}. 4883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson */ 4983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson public final int result; 50d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 51d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson /** The profile list (only upon success). */ 52d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson @Nullable 53d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson public final EuiccProfileInfo[] profiles; 54d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 55d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson /** Whether the eUICC is removable. */ 56d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson public final boolean isRemovable; 57d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 5883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson /** 5983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * Construct a new {@link GetEuiccProfileInfoListResult}. 6083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * 6183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * @param result Result of the operation. May be one of the predefined {@code RESULT_} constants 6283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * in EuiccService or any implementation-specific code starting with 6383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * {@link EuiccService#RESULT_FIRST_USER}. 6483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * @param profiles the list of profiles. Should only be provided if the result is 6583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * {@link EuiccService#RESULT_OK}. 6683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * @param isRemovable whether the eUICC in this slot is removable. If true, the profiles 6783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * returned here will only be considered accessible as long as this eUICC is present. 6883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * Otherwise, they will remain accessible until the next time a response with isRemovable 6983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson * set to false is returned. 7083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson */ 7183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson public GetEuiccProfileInfoListResult( 7283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson int result, @Nullable EuiccProfileInfo[] profiles, boolean isRemovable) { 73d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson this.result = result; 74d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson this.isRemovable = isRemovable; 7583f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson if (this.result == EuiccService.RESULT_OK) { 7683f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson this.profiles = profiles; 7783f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson } else { 7883f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson if (profiles != null) { 7983f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson throw new IllegalArgumentException( 8083f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson "Error result with non-null profiles: " + result); 8183f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson } 8283f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson this.profiles = null; 8383f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson } 8483f8bc81be65cb09720c6d8dac7717d4652cd931Jeff Davidson 85d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson } 86d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 87d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson private GetEuiccProfileInfoListResult(Parcel in) { 88d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson this.result = in.readInt(); 89d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson this.profiles = in.createTypedArray(EuiccProfileInfo.CREATOR); 90d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson this.isRemovable = in.readBoolean(); 91d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson } 92d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 93d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson @Override 94d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson public void writeToParcel(Parcel dest, int flags) { 95d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson dest.writeInt(result); 96d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson dest.writeTypedArray(profiles, flags); 97d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson dest.writeBoolean(isRemovable); 98d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson } 99d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson 100d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson @Override 101d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson public int describeContents() { 102d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson return 0; 103d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson } 104d02731ffff9b8eb9b604377f50b2c43a9c753c2eJeff Davidson} 105