blob: 5d9abb068bd8897b12a7187f1e1d6e7c13837ef6 [file] [log] [blame]
Kenny Root15a4d2f2010-03-11 18:20:12 -08001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Fred Quintana97889762009-06-15 12:29:24 -070017package android.accounts;
18
19import android.os.Parcelable;
20import android.os.Parcel;
21
Fred Quintana756b7352009-10-21 13:43:10 -070022/**
23 * A {@link Parcelable} value type that contains information about an account authenticator.
24 */
Fred Quintana97889762009-06-15 12:29:24 -070025public class AuthenticatorDescription implements Parcelable {
Fred Quintana756b7352009-10-21 13:43:10 -070026 /** The string that uniquely identifies an authenticator */
Fred Quintana97889762009-06-15 12:29:24 -070027 final public String type;
Fred Quintana756b7352009-10-21 13:43:10 -070028
29 /** A resource id of a label for the authenticator that is suitable for displaying */
Fred Quintana97889762009-06-15 12:29:24 -070030 final public int labelId;
Fred Quintana756b7352009-10-21 13:43:10 -070031
32 /** A resource id of a icon for the authenticator */
33 final public int iconId;
34
35 /** A resource id of a smaller icon for the authenticator */
36 final public int smallIconId;
37
38 /**
39 * A resource id for a hierarchy of PreferenceScreen to be added to the settings page for the
40 * account. See {@link AbstractAccountAuthenticator} for an example.
41 */
Jim Miller70e1ad72009-09-09 22:45:47 -070042 final public int accountPreferencesId;
Fred Quintana756b7352009-10-21 13:43:10 -070043
44 /** The package name that can be used to lookup the resources from above. */
Fred Quintana97889762009-06-15 12:29:24 -070045 final public String packageName;
46
Costin Manolachea40c6302010-12-13 14:50:45 -080047 /** Authenticator handles its own token caching and permission screen */
48 final public boolean customTokens;
49
Fred Quintana756b7352009-10-21 13:43:10 -070050 /** A constructor for a full AuthenticatorDescription */
51 public AuthenticatorDescription(String type, String packageName, int labelId, int iconId,
Costin Manolachea40c6302010-12-13 14:50:45 -080052 int smallIconId, int prefId, boolean customTokens) {
Fred Quintanac298a852009-08-27 18:28:17 -070053 if (type == null) throw new IllegalArgumentException("type cannot be null");
54 if (packageName == null) throw new IllegalArgumentException("packageName cannot be null");
Fred Quintana97889762009-06-15 12:29:24 -070055 this.type = type;
56 this.packageName = packageName;
57 this.labelId = labelId;
58 this.iconId = iconId;
Jim Miller70e1ad72009-09-09 22:45:47 -070059 this.smallIconId = smallIconId;
60 this.accountPreferencesId = prefId;
Costin Manolachea40c6302010-12-13 14:50:45 -080061 this.customTokens = customTokens;
62 }
63
64 public AuthenticatorDescription(String type, String packageName, int labelId, int iconId,
65 int smallIconId, int prefId) {
66 this(type, packageName, labelId, iconId, smallIconId, prefId, false);
Fred Quintana97889762009-06-15 12:29:24 -070067 }
68
Fred Quintana756b7352009-10-21 13:43:10 -070069 /**
70 * A factory method for creating an AuthenticatorDescription that can be used as a key
71 * to identify the authenticator by its type.
72 */
73
Fred Quintana97889762009-06-15 12:29:24 -070074 public static AuthenticatorDescription newKey(String type) {
Fred Quintanac298a852009-08-27 18:28:17 -070075 if (type == null) throw new IllegalArgumentException("type cannot be null");
Fred Quintana97889762009-06-15 12:29:24 -070076 return new AuthenticatorDescription(type);
77 }
78
79 private AuthenticatorDescription(String type) {
80 this.type = type;
81 this.packageName = null;
82 this.labelId = 0;
83 this.iconId = 0;
Jim Miller70e1ad72009-09-09 22:45:47 -070084 this.smallIconId = 0;
85 this.accountPreferencesId = 0;
Costin Manolachea40c6302010-12-13 14:50:45 -080086 this.customTokens = false;
Fred Quintana97889762009-06-15 12:29:24 -070087 }
88
89 private AuthenticatorDescription(Parcel source) {
90 this.type = source.readString();
91 this.packageName = source.readString();
92 this.labelId = source.readInt();
93 this.iconId = source.readInt();
Jim Miller70e1ad72009-09-09 22:45:47 -070094 this.smallIconId = source.readInt();
95 this.accountPreferencesId = source.readInt();
Costin Manolachea40c6302010-12-13 14:50:45 -080096 this.customTokens = source.readByte() == 1;
Fred Quintana97889762009-06-15 12:29:24 -070097 }
98
Fred Quintana756b7352009-10-21 13:43:10 -070099 /** @inheritDoc */
Fred Quintana97889762009-06-15 12:29:24 -0700100 public int describeContents() {
101 return 0;
102 }
103
Fred Quintana756b7352009-10-21 13:43:10 -0700104 /** Returns the hashcode of the type only. */
Fred Quintana97889762009-06-15 12:29:24 -0700105 public int hashCode() {
106 return type.hashCode();
107 }
108
Fred Quintana756b7352009-10-21 13:43:10 -0700109 /** Compares the type only, suitable for key comparisons. */
Fred Quintana97889762009-06-15 12:29:24 -0700110 public boolean equals(Object o) {
111 if (o == this) return true;
112 if (!(o instanceof AuthenticatorDescription)) return false;
113 final AuthenticatorDescription other = (AuthenticatorDescription) o;
114 return type.equals(other.type);
115 }
116
Fred Quintana5ebbb4a2009-11-09 15:42:20 -0800117 public String toString() {
118 return "AuthenticatorDescription {type=" + type + "}";
119 }
120
Kenny Rootec8f9b62010-03-01 15:01:51 -0800121 /** @inheritDoc */
Fred Quintana97889762009-06-15 12:29:24 -0700122 public void writeToParcel(Parcel dest, int flags) {
123 dest.writeString(type);
124 dest.writeString(packageName);
125 dest.writeInt(labelId);
126 dest.writeInt(iconId);
Jim Miller70e1ad72009-09-09 22:45:47 -0700127 dest.writeInt(smallIconId);
128 dest.writeInt(accountPreferencesId);
Costin Manolachea40c6302010-12-13 14:50:45 -0800129 dest.writeByte((byte) (customTokens ? 1 : 0));
Fred Quintana97889762009-06-15 12:29:24 -0700130 }
131
Fred Quintana756b7352009-10-21 13:43:10 -0700132 /** Used to create the object from a parcel. */
Fred Quintana97889762009-06-15 12:29:24 -0700133 public static final Creator<AuthenticatorDescription> CREATOR =
134 new Creator<AuthenticatorDescription>() {
Fred Quintana756b7352009-10-21 13:43:10 -0700135 /** @inheritDoc */
Fred Quintana97889762009-06-15 12:29:24 -0700136 public AuthenticatorDescription createFromParcel(Parcel source) {
137 return new AuthenticatorDescription(source);
138 }
139
Fred Quintana756b7352009-10-21 13:43:10 -0700140 /** @inheritDoc */
Fred Quintana97889762009-06-15 12:29:24 -0700141 public AuthenticatorDescription[] newArray(int size) {
142 return new AuthenticatorDescription[size];
143 }
144 };
145}