115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/* 215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2009 The Android Open Source Project 315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License. 615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at 715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * http://www.apache.org/licenses/LICENSE-2.0 915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * 1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software 1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and 1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License. 1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */ 1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root 179788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanapackage android.accounts; 189788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 199788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanaimport android.os.Parcelable; 209788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanaimport android.os.Parcel; 219788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 22756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana/** 23756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * A {@link Parcelable} value type that contains information about an account authenticator. 24756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana */ 259788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintanapublic class AuthenticatorDescription implements Parcelable { 26756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** The string that uniquely identifies an authenticator */ 279788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final public String type; 28756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 29756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A resource id of a label for the authenticator that is suitable for displaying */ 309788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final public int labelId; 31756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 32756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A resource id of a icon for the authenticator */ 33756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana final public int iconId; 34756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 35756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A resource id of a smaller icon for the authenticator */ 36756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana final public int smallIconId; 37756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 38756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** 39756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * A resource id for a hierarchy of PreferenceScreen to be added to the settings page for the 40756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * account. See {@link AbstractAccountAuthenticator} for an example. 41756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana */ 4270e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller final public int accountPreferencesId; 43756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 44756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** The package name that can be used to lookup the resources from above. */ 459788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final public String packageName; 469788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 47a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache /** Authenticator handles its own token caching and permission screen */ 48a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache final public boolean customTokens; 49a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache 50756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** A constructor for a full AuthenticatorDescription */ 51756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana public AuthenticatorDescription(String type, String packageName, int labelId, int iconId, 52a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache int smallIconId, int prefId, boolean customTokens) { 53c298a8518a8fd73a303132c7db241f10eb46c5b6Fred Quintana if (type == null) throw new IllegalArgumentException("type cannot be null"); 54c298a8518a8fd73a303132c7db241f10eb46c5b6Fred Quintana if (packageName == null) throw new IllegalArgumentException("packageName cannot be null"); 559788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.type = type; 569788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.packageName = packageName; 579788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.labelId = labelId; 589788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.iconId = iconId; 5970e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.smallIconId = smallIconId; 6070e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.accountPreferencesId = prefId; 61a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache this.customTokens = customTokens; 62a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache } 63a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache 64a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache public AuthenticatorDescription(String type, String packageName, int labelId, int iconId, 65a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache int smallIconId, int prefId) { 66a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache this(type, packageName, labelId, iconId, smallIconId, prefId, false); 679788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 689788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 69756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** 70756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * A factory method for creating an AuthenticatorDescription that can be used as a key 71756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana * to identify the authenticator by its type. 72756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana */ 73756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana 749788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public static AuthenticatorDescription newKey(String type) { 75c298a8518a8fd73a303132c7db241f10eb46c5b6Fred Quintana if (type == null) throw new IllegalArgumentException("type cannot be null"); 769788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return new AuthenticatorDescription(type); 779788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 789788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 799788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana private AuthenticatorDescription(String type) { 809788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.type = type; 819788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.packageName = null; 829788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.labelId = 0; 839788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.iconId = 0; 8470e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.smallIconId = 0; 8570e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.accountPreferencesId = 0; 86a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache this.customTokens = false; 879788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 889788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 899788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana private AuthenticatorDescription(Parcel source) { 909788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.type = source.readString(); 919788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.packageName = source.readString(); 929788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.labelId = source.readInt(); 939788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana this.iconId = source.readInt(); 9470e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.smallIconId = source.readInt(); 9570e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller this.accountPreferencesId = source.readInt(); 96a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache this.customTokens = source.readByte() == 1; 979788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 989788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 99756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inheritDoc */ 1009788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public int describeContents() { 1019788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return 0; 1029788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1039788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 104756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** Returns the hashcode of the type only. */ 1059788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public int hashCode() { 1069788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return type.hashCode(); 1079788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1089788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 109756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** Compares the type only, suitable for key comparisons. */ 1109788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public boolean equals(Object o) { 1119788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana if (o == this) return true; 1129788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana if (!(o instanceof AuthenticatorDescription)) return false; 1139788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana final AuthenticatorDescription other = (AuthenticatorDescription) o; 1149788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return type.equals(other.type); 1159788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1169788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 1175ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana public String toString() { 1185ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana return "AuthenticatorDescription {type=" + type + "}"; 1195ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana } 1205ebbb4a6b3e16f711735ae0615b9a9ea64faad38Fred Quintana 121ec8f9b648182c90613f18dbfe43080c90397487dKenny Root /** @inheritDoc */ 1229788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public void writeToParcel(Parcel dest, int flags) { 1239788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeString(type); 1249788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeString(packageName); 1259788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeInt(labelId); 1269788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana dest.writeInt(iconId); 12770e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller dest.writeInt(smallIconId); 12870e1ad7d99c95967e3c0257bddc7b4ec6c403372Jim Miller dest.writeInt(accountPreferencesId); 129a40c6304deb860f10a51ce950ac1abc21a23d08bCostin Manolache dest.writeByte((byte) (customTokens ? 1 : 0)); 1309788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1319788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 132756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** Used to create the object from a parcel. */ 1339788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public static final Creator<AuthenticatorDescription> CREATOR = 1349788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana new Creator<AuthenticatorDescription>() { 135756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inheritDoc */ 1369788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public AuthenticatorDescription createFromParcel(Parcel source) { 1379788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return new AuthenticatorDescription(source); 1389788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1399788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana 140756b735e9312ee52618158270f0bdd0ec691a712Fred Quintana /** @inheritDoc */ 1419788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana public AuthenticatorDescription[] newArray(int size) { 1429788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana return new AuthenticatorDescription[size]; 1439788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana } 1449788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana }; 1459788976b1465ce982b5ae7c741345edd0ecd9322Fred Quintana} 146