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}