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