1f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra/* 2f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * Copyright (C) 2012 The Android Open Source Project 3f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * 4f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * Licensed under the Apache License, Version 2.0 (the "License"); 5f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * you may not use this file except in compliance with the License. 6f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * You may obtain a copy of the License at 7f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * 8f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * http://www.apache.org/licenses/LICENSE-2.0 9f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * 10f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * Unless required by applicable law or agreed to in writing, software 11f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * distributed under the License is distributed on an "AS IS" BASIS, 12f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * See the License for the specific language governing permissions and 14f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra * limitations under the License. 15f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra */ 16f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra 17f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condrapackage android.content.pm; 18f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra 199d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashmanimport android.os.IBinder; 20c6f22499f3046684d7175e10ca42cce1492cd36fdcashmanimport android.os.Parcel; 21c6f22499f3046684d7175e10ca42cce1492cd36fdcashmanimport android.os.Parcelable; 22f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra 239d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman/** 249d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman * Represents a {@code KeySet} that has been declared in the AndroidManifest.xml 259d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman * file for the application. A {@code KeySet} can be used explicitly to 269d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman * represent a trust relationship with other applications on the device. 27c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * @hide 289d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman */ 29c6f22499f3046684d7175e10ca42cce1492cd36fdcashmanpublic class KeySet implements Parcelable { 30f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra 319d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman private IBinder token; 32f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra 33f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra /** @hide */ 349d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman public KeySet(IBinder token) { 359d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman if (token == null) { 369d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman throw new NullPointerException("null value for KeySet IBinder token"); 379d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman } 38f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra this.token = token; 39f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra } 40f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra 419d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman /** @hide */ 429d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman public IBinder getToken() { 43f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra return token; 44f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra } 459d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman 46c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** @hide */ 479d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman @Override 489d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman public boolean equals(Object o) { 499d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman if (o instanceof KeySet) { 509d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman KeySet ks = (KeySet) o; 519d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman return token == ks.token; 529d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman } 539d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman return false; 549d2f441f9bb2c8dcac1150e2cba1d15a86a4efb1dcashman } 55c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 56c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** @hide */ 57c6f22499f3046684d7175e10ca42cce1492cd36fdcashman @Override 58c6f22499f3046684d7175e10ca42cce1492cd36fdcashman public int hashCode() { 59c6f22499f3046684d7175e10ca42cce1492cd36fdcashman return token.hashCode(); 60c6f22499f3046684d7175e10ca42cce1492cd36fdcashman } 61c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 62c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** 63c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * Implement Parcelable 64c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * @hide 65c6f22499f3046684d7175e10ca42cce1492cd36fdcashman */ 66c6f22499f3046684d7175e10ca42cce1492cd36fdcashman public static final Parcelable.Creator<KeySet> CREATOR 67c6f22499f3046684d7175e10ca42cce1492cd36fdcashman = new Parcelable.Creator<KeySet>() { 68c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 69c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** 70c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * Create a KeySet from a Parcel 71c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * 72c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * @param in The parcel containing the KeySet 73c6f22499f3046684d7175e10ca42cce1492cd36fdcashman */ 74c6f22499f3046684d7175e10ca42cce1492cd36fdcashman public KeySet createFromParcel(Parcel source) { 75c6f22499f3046684d7175e10ca42cce1492cd36fdcashman return readFromParcel(source); 76c6f22499f3046684d7175e10ca42cce1492cd36fdcashman } 77c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 78c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** 79c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * Create an array of null KeySets 80c6f22499f3046684d7175e10ca42cce1492cd36fdcashman */ 81c6f22499f3046684d7175e10ca42cce1492cd36fdcashman public KeySet[] newArray(int size) { 82c6f22499f3046684d7175e10ca42cce1492cd36fdcashman return new KeySet[size]; 83c6f22499f3046684d7175e10ca42cce1492cd36fdcashman } 84c6f22499f3046684d7175e10ca42cce1492cd36fdcashman }; 85c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 86c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** 87c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * @hide 88c6f22499f3046684d7175e10ca42cce1492cd36fdcashman */ 89c6f22499f3046684d7175e10ca42cce1492cd36fdcashman private static KeySet readFromParcel(Parcel in) { 90c6f22499f3046684d7175e10ca42cce1492cd36fdcashman IBinder token = in.readStrongBinder(); 91c6f22499f3046684d7175e10ca42cce1492cd36fdcashman return new KeySet(token); 92c6f22499f3046684d7175e10ca42cce1492cd36fdcashman } 93c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 94c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** 95c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * @hide 96c6f22499f3046684d7175e10ca42cce1492cd36fdcashman */ 97c6f22499f3046684d7175e10ca42cce1492cd36fdcashman @Override 98c6f22499f3046684d7175e10ca42cce1492cd36fdcashman public void writeToParcel(Parcel out, int flags) { 99c6f22499f3046684d7175e10ca42cce1492cd36fdcashman out.writeStrongBinder(token); 100c6f22499f3046684d7175e10ca42cce1492cd36fdcashman } 101c6f22499f3046684d7175e10ca42cce1492cd36fdcashman 102c6f22499f3046684d7175e10ca42cce1492cd36fdcashman /** 103c6f22499f3046684d7175e10ca42cce1492cd36fdcashman * @hide 104c6f22499f3046684d7175e10ca42cce1492cd36fdcashman */ 105c6f22499f3046684d7175e10ca42cce1492cd36fdcashman @Override 106c6f22499f3046684d7175e10ca42cce1492cd36fdcashman public int describeContents() { 107c6f22499f3046684d7175e10ca42cce1492cd36fdcashman return 0; 108c6f22499f3046684d7175e10ca42cce1492cd36fdcashman } 109f1bcca82158c39da3c3696f9af954be2c0be1809Geremy Condra}