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}