1fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka/*
2fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * Copyright (C) 2016 The Android Open Source Project
3fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka *
4fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * Licensed under the Apache License, Version 2.0 (the "License");
5fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * you may not use this file except in compliance with the License.
6fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * You may obtain a copy of the License at
7fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka *
8fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka *      http://www.apache.org/licenses/LICENSE-2.0
9fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka *
10fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * Unless required by applicable law or agreed to in writing, software
11fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * distributed under the License is distributed on an "AS IS" BASIS,
12fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * See the License for the specific language governing permissions and
14fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * limitations under the License.
15fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka */
16fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
17fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankapackage android.app;
18fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
19fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankaimport android.content.ContentProviderNative;
20fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankaimport android.content.IContentProvider;
21fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankaimport android.content.pm.ProviderInfo;
22fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankaimport android.os.IBinder;
23fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankaimport android.os.Parcel;
24fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankaimport android.os.Parcelable;
25fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
26fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka/**
27fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * Information you can retrieve about a particular application.
28fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka *
29fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka * @hide
30fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka */
31fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shankapublic class ContentProviderHolder implements Parcelable {
32fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public final ProviderInfo info;
33fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public IContentProvider provider;
34fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public IBinder connection;
35fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public boolean noReleaseNeeded;
36fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
37fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public ContentProviderHolder(ProviderInfo _info) {
38fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        info = _info;
39fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    }
40fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
41fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    @Override
42fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public int describeContents() {
43fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        return 0;
44fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    }
45fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
46fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    @Override
47fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public void writeToParcel(Parcel dest, int flags) {
48fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        info.writeToParcel(dest, 0);
49fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        if (provider != null) {
50fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka            dest.writeStrongBinder(provider.asBinder());
51fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        } else {
52fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka            dest.writeStrongBinder(null);
53fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        }
54fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        dest.writeStrongBinder(connection);
55fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        dest.writeInt(noReleaseNeeded ? 1 : 0);
56fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    }
57fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
58fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    public static final Parcelable.Creator<ContentProviderHolder> CREATOR
59fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka            = new Parcelable.Creator<ContentProviderHolder>() {
60fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        @Override
61fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        public ContentProviderHolder createFromParcel(Parcel source) {
62fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka            return new ContentProviderHolder(source);
63fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        }
64fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
65fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        @Override
66fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        public ContentProviderHolder[] newArray(int size) {
67fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka            return new ContentProviderHolder[size];
68fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        }
69fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    };
70fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka
71fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    private ContentProviderHolder(Parcel source) {
72fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        info = ProviderInfo.CREATOR.createFromParcel(source);
73fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        provider = ContentProviderNative.asInterface(
74fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka                source.readStrongBinder());
75fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        connection = source.readStrongBinder();
76fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka        noReleaseNeeded = source.readInt() != 0;
77fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka    }
78fc46e9b643881b7b2ab76854f3a0ac077e9def8dSudheer Shanka}