1abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee/* 2abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * Copyright (C) 2017 The Android Open Source Project 3abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * 4abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * Licensed under the Apache License, Version 2.0 (the "License"); 5abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * you may not use this file except in compliance with the License. 6abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * You may obtain a copy of the License at 7abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * 8abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * http://www.apache.org/licenses/LICENSE-2.0 9abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * 10abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * Unless required by applicable law or agreed to in writing, software 11abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * distributed under the License is distributed on an "AS IS" BASIS, 12abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * See the License for the specific language governing permissions and 14abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * limitations under the License. 15abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee */ 16abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 17abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Leepackage android.content.pm; 18abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 19abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Leeimport android.os.Parcel; 20abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Leeimport android.os.Parcelable; 21abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 22abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Leeimport java.util.Collections; 23abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Leeimport java.util.List; 24abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 25abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee/** 26abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * Transfer a large list of Parcelable objects across an IPC. Splits into 27abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * multiple transactions if needed. 28abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * 29abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * @see BaseParceledListSlice 30abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * 31abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee * @hide 32abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee */ 33abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Leepublic class StringParceledListSlice extends BaseParceledListSlice<String> { 34abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public StringParceledListSlice(List<String> list) { 35abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee super(list); 36abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 37abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 38abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee private StringParceledListSlice(Parcel in, ClassLoader loader) { 39abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee super(in, loader); 40abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 41abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 42abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public static StringParceledListSlice emptyList() { 43abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return new StringParceledListSlice(Collections.<String> emptyList()); 44abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 45abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 46abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @Override 47abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public int describeContents() { 48abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return 0; 49abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 50abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 51abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @Override 52abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee protected void writeElement(String parcelable, Parcel reply, int callFlags) { 53abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee reply.writeString(parcelable); 54abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 55abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 56abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @Override 57abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee protected void writeParcelableCreator(String parcelable, Parcel dest) { 58abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return; 59abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 60abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 61abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @Override 62abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee protected Parcelable.Creator<?> readParcelableCreator(Parcel from, ClassLoader loader) { 63abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return Parcel.STRING_CREATOR; 64abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 65abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 66abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @SuppressWarnings("unchecked") 67abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public static final Parcelable.ClassLoaderCreator<StringParceledListSlice> CREATOR = 68abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee new Parcelable.ClassLoaderCreator<StringParceledListSlice>() { 69abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public StringParceledListSlice createFromParcel(Parcel in) { 70abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return new StringParceledListSlice(in, null); 71abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 72abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 73abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @Override 74abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public StringParceledListSlice createFromParcel(Parcel in, ClassLoader loader) { 75abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return new StringParceledListSlice(in, loader); 76abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 77abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee 78abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee @Override 79abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee public StringParceledListSlice[] newArray(int size) { 80abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee return new StringParceledListSlice[size]; 81abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee } 82abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee }; 83abaa0695c5361b36a7a2cdbe87c77bf60be20af7Robin Lee} 84