diff options
author | Fred Quintana <fredq@google.com> | 2009-10-02 17:19:31 -0700 |
---|---|---|
committer | Fred Quintana <fredq@google.com> | 2009-10-05 11:19:49 -0700 |
commit | f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d (patch) | |
tree | b08af808ac180e30716166a7c41dbf052246b727 | |
parent | 48e6725c828a8d420d43925b0c9a9a915a8c4e2f (diff) | |
download | frameworks_base-f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d.zip frameworks_base-f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d.tar.gz frameworks_base-f7ae77cd67f1a3993b8e56c1af4720a7adf4e69d.tar.bz2 |
account manager api review changes
23 files changed, 524 insertions, 923 deletions
diff --git a/api/current.xml b/api/current.xml index bbd653a..e764fa5 100644 --- a/api/current.xml +++ b/api/current.xml @@ -122,11 +122,11 @@ visibility="public" > </field> -<field name="ACCOUNT_MANAGER_SERVICE" +<field name="ACCOUNT_MANAGER" type="java.lang.String" transient="false" volatile="false" - value=""android.permission.ACCOUNT_MANAGER_SERVICE"" + value=""android.permission.ACCOUNT_MANAGER"" static="true" final="true" deprecated="not deprecated" @@ -13802,25 +13802,8 @@ </parameter> <parameter name="account" type="android.accounts.Account"> </parameter> -</method> -<method name="confirmPassword" - return="boolean" - abstract="true" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="response" type="android.accounts.AccountAuthenticatorResponse"> -</parameter> -<parameter name="account" type="android.accounts.Account"> -</parameter> -<parameter name="password" type="java.lang.String"> +<parameter name="options" type="android.os.Bundle"> </parameter> -<exception name="NetworkErrorException" type="android.accounts.NetworkErrorException"> -</exception> </method> <method name="editProperties" return="android.os.Bundle" @@ -13888,8 +13871,8 @@ <parameter name="authTokenType" type="java.lang.String"> </parameter> </method> -<method name="getIAccountAuthenticator" - return="android.accounts.IAccountAuthenticator" +<method name="getIBinder" + return="android.os.IBinder" abstract="false" native="false" synchronized="false" @@ -14074,16 +14057,6 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -</constructor> -<constructor name="AccountAuthenticatorResponse" - type="android.accounts.AccountAuthenticatorResponse" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> <parameter name="parcel" type="android.os.Parcel"> </parameter> </constructor> @@ -14223,7 +14196,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="listener" type="android.accounts.OnAccountsUpdatedListener"> +<parameter name="listener" type="android.accounts.OnAccountsUpdateListener"> </parameter> <parameter name="handler" type="android.os.Handler"> </parameter> @@ -14278,6 +14251,8 @@ > <parameter name="account" type="android.accounts.Account"> </parameter> +<parameter name="options" type="android.os.Bundle"> +</parameter> <parameter name="activity" type="android.app.Activity"> </parameter> <parameter name="callback" type="android.accounts.AccountManagerCallback<android.os.Bundle>"> @@ -14285,25 +14260,6 @@ <parameter name="handler" type="android.os.Handler"> </parameter> </method> -<method name="confirmPassword" - return="android.accounts.AccountManagerFuture<java.lang.Boolean>" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="deprecated" - visibility="public" -> -<parameter name="account" type="android.accounts.Account"> -</parameter> -<parameter name="password" type="java.lang.String"> -</parameter> -<parameter name="callback" type="android.accounts.AccountManagerCallback<java.lang.Boolean>"> -</parameter> -<parameter name="handler" type="android.os.Handler"> -</parameter> -</method> <method name="editProperties" return="android.accounts.AccountManagerFuture<android.os.Bundle>" abstract="false" @@ -14424,7 +14380,7 @@ </parameter> </method> <method name="getAuthTokenByFeatures" - return="void" + return="android.accounts.AccountManagerFuture<android.os.Bundle>" abstract="false" native="false" synchronized="false" @@ -14546,7 +14502,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="listener" type="android.accounts.OnAccountsUpdatedListener"> +<parameter name="listener" type="android.accounts.OnAccountsUpdateListener"> </parameter> </method> <method name="setAuthToken" @@ -14621,428 +14577,172 @@ <parameter name="handler" type="android.os.Handler"> </parameter> </method> -</class> -<interface name="AccountManagerCallback" - abstract="true" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<method name="run" - return="void" - abstract="true" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="future" type="android.accounts.AccountManagerFuture<V>"> -</parameter> -</method> -</interface> -<interface name="AccountManagerFuture" - abstract="true" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<implements name="java.util.concurrent.Future"> -</implements> -<method name="get" - return="V" - abstract="true" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="deprecated" - visibility="public" -> -<exception name="ExecutionException" type="java.util.concurrent.ExecutionException"> -</exception> -<exception name="InterruptedException" type="java.lang.InterruptedException"> -</exception> -</method> -<method name="get" - return="V" - abstract="true" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="deprecated" - visibility="public" -> -<parameter name="timeout" type="long"> -</parameter> -<parameter name="unit" type="java.util.concurrent.TimeUnit"> -</parameter> -<exception name="ExecutionException" type="java.util.concurrent.ExecutionException"> -</exception> -<exception name="InterruptedException" type="java.lang.InterruptedException"> -</exception> -<exception name="TimeoutException" type="java.util.concurrent.TimeoutException"> -</exception> -</method> -<method name="getResult" - return="V" - abstract="true" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<exception name="AuthenticatorException" type="android.accounts.AuthenticatorException"> -</exception> -<exception name="IOException" type="java.io.IOException"> -</exception> -<exception name="OperationCanceledException" type="android.accounts.OperationCanceledException"> -</exception> -</method> -<method name="getResult" - return="V" - abstract="true" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="timeout" type="long"> -</parameter> -<parameter name="unit" type="java.util.concurrent.TimeUnit"> -</parameter> -<exception name="AuthenticatorException" type="android.accounts.AuthenticatorException"> -</exception> -<exception name="IOException" type="java.io.IOException"> -</exception> -<exception name="OperationCanceledException" type="android.accounts.OperationCanceledException"> -</exception> -</method> -</interface> -<class name="AuthenticatorDescription" - extends="java.lang.Object" - abstract="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<implements name="android.os.Parcelable"> -</implements> -<constructor name="AuthenticatorDescription" - type="android.accounts.AuthenticatorDescription" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="type" type="java.lang.String"> -</parameter> -<parameter name="packageName" type="java.lang.String"> -</parameter> -<parameter name="labelId" type="int"> -</parameter> -<parameter name="iconId" type="int"> -</parameter> -<parameter name="smallIconId" type="int"> -</parameter> -<parameter name="prefId" type="int"> -</parameter> -</constructor> -<method name="describeContents" - return="int" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -</method> -<method name="newKey" - return="android.accounts.AuthenticatorDescription" - abstract="false" - native="false" - synchronized="false" - static="true" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="type" type="java.lang.String"> -</parameter> -</method> -<method name="writeToParcel" - return="void" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="dest" type="android.os.Parcel"> -</parameter> -<parameter name="flags" type="int"> -</parameter> -</method> -<field name="CREATOR" - type="android.os.Parcelable.Creator" +<field name="ACTION_AUTHENTICATOR_INTENT" + type="java.lang.String" transient="false" volatile="false" + value=""android.accounts.AccountAuthenticator"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="accountPreferencesId" - type="int" +<field name="AUTHENTICATOR_ATTRIBUTES_NAME" + type="java.lang.String" transient="false" volatile="false" - static="false" + value=""account-authenticator"" + static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="iconId" - type="int" +<field name="AUTHENTICATOR_META_DATA_NAME" + type="java.lang.String" transient="false" volatile="false" - static="false" + value=""android.accounts.AccountAuthenticator"" + static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="labelId" +<field name="ERROR_CODE_BAD_ARGUMENTS" type="int" transient="false" volatile="false" - static="false" + value="7" + static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="packageName" - type="java.lang.String" +<field name="ERROR_CODE_BAD_REQUEST" + type="int" transient="false" volatile="false" - static="false" + value="8" + static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="smallIconId" +<field name="ERROR_CODE_CANCELED" type="int" transient="false" volatile="false" - static="false" + value="4" + static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="type" - type="java.lang.String" +<field name="ERROR_CODE_INVALID_RESPONSE" + type="int" transient="false" volatile="false" - static="false" + value="5" + static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -</class> -<class name="AuthenticatorException" - extends="java.lang.Exception" - abstract="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<constructor name="AuthenticatorException" - type="android.accounts.AuthenticatorException" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -</constructor> -<constructor name="AuthenticatorException" - type="android.accounts.AuthenticatorException" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="message" type="java.lang.String"> -</parameter> -</constructor> -<constructor name="AuthenticatorException" - type="android.accounts.AuthenticatorException" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="message" type="java.lang.String"> -</parameter> -<parameter name="cause" type="java.lang.Throwable"> -</parameter> -</constructor> -<constructor name="AuthenticatorException" - type="android.accounts.AuthenticatorException" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="cause" type="java.lang.Throwable"> -</parameter> -</constructor> -</class> -<class name="ChooseAccountActivity" - extends="android.app.ListActivity" - abstract="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<constructor name="ChooseAccountActivity" - type="android.accounts.ChooseAccountActivity" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -</constructor> -<method name="onCreate" - return="void" - abstract="false" - native="false" - synchronized="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<parameter name="savedInstanceState" type="android.os.Bundle"> -</parameter> -</method> -</class> -<class name="Constants" - extends="java.lang.Object" - abstract="false" - static="false" - final="false" - deprecated="not deprecated" - visibility="public" -> -<field name="ACCOUNTS_KEY" - type="java.lang.String" +<field name="ERROR_CODE_NETWORK_ERROR" + type="int" transient="false" volatile="false" - value=""accounts"" + value="3" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="ACCOUNT_AUTHENTICATOR_RESPONSE_KEY" - type="java.lang.String" +<field name="ERROR_CODE_REMOTE_EXCEPTION" + type="int" transient="false" volatile="false" - value=""accountAuthenticatorResponse"" + value="1" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="ACCOUNT_MANAGER_RESPONSE_KEY" - type="java.lang.String" +<field name="ERROR_CODE_UNSUPPORTED_OPERATION" + type="int" transient="false" volatile="false" - value=""accountManagerResponse"" + value="6" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="ACCOUNT_NAME_KEY" +<field name="KEY_ACCOUNTS" type="java.lang.String" transient="false" volatile="false" - value=""authAccount"" + value=""accounts"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="ACCOUNT_TYPE_KEY" +<field name="KEY_ACCOUNT_AUTHENTICATOR_RESPONSE" type="java.lang.String" transient="false" volatile="false" - value=""accountType"" + value=""accountAuthenticatorResponse"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="AUTHENTICATOR_ATTRIBUTES_NAME" +<field name="KEY_ACCOUNT_MANAGER_RESPONSE" type="java.lang.String" transient="false" volatile="false" - value=""account-authenticator"" + value=""accountManagerResponse"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="AUTHENTICATOR_INTENT_ACTION" +<field name="KEY_ACCOUNT_NAME" type="java.lang.String" transient="false" volatile="false" - value=""android.accounts.AccountAuthenticator"" + value=""authAccount"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="AUTHENTICATOR_META_DATA_NAME" +<field name="KEY_ACCOUNT_TYPE" type="java.lang.String" transient="false" volatile="false" - value=""android.accounts.AccountAuthenticator"" + value=""accountType"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="AUTHENTICATOR_TYPES_KEY" +<field name="KEY_AUTHENTICATOR_TYPES" type="java.lang.String" transient="false" volatile="false" @@ -15053,7 +14753,7 @@ visibility="public" > </field> -<field name="AUTHTOKEN_KEY" +<field name="KEY_AUTHTOKEN" type="java.lang.String" transient="false" volatile="false" @@ -15064,7 +14764,7 @@ visibility="public" > </field> -<field name="AUTH_FAILED_MESSAGE_KEY" +<field name="KEY_AUTH_FAILED_MESSAGE" type="java.lang.String" transient="false" volatile="false" @@ -15075,7 +14775,7 @@ visibility="public" > </field> -<field name="AUTH_TOKEN_LABEL_KEY" +<field name="KEY_AUTH_TOKEN_LABEL" type="java.lang.String" transient="false" volatile="false" @@ -15086,7 +14786,7 @@ visibility="public" > </field> -<field name="BOOLEAN_RESULT_KEY" +<field name="KEY_BOOLEAN_RESULT" type="java.lang.String" transient="false" volatile="false" @@ -15097,51 +14797,7 @@ visibility="public" > </field> -<field name="ERROR_CODE_BAD_ARGUMENTS" - type="int" - transient="false" - volatile="false" - value="7" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_CODE_BAD_REQUEST" - type="int" - transient="false" - volatile="false" - value="8" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_CODE_CANCELED" - type="int" - transient="false" - volatile="false" - value="4" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_CODE_INVALID_RESPONSE" - type="int" - transient="false" - volatile="false" - value="5" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_CODE_KEY" +<field name="KEY_ERROR_CODE" type="java.lang.String" transient="false" volatile="false" @@ -15152,40 +14808,7 @@ visibility="public" > </field> -<field name="ERROR_CODE_NETWORK_ERROR" - type="int" - transient="false" - volatile="false" - value="3" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_CODE_REMOTE_EXCEPTION" - type="int" - transient="false" - volatile="false" - value="1" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_CODE_UNSUPPORTED_OPERATION" - type="int" - transient="false" - volatile="false" - value="6" - static="true" - final="true" - deprecated="not deprecated" - visibility="public" -> -</field> -<field name="ERROR_MESSAGE_KEY" +<field name="KEY_ERROR_MESSAGE" type="java.lang.String" transient="false" volatile="false" @@ -15196,7 +14819,7 @@ visibility="public" > </field> -<field name="INTENT_KEY" +<field name="KEY_INTENT" type="java.lang.String" transient="false" volatile="false" @@ -15207,33 +14830,33 @@ visibility="public" > </field> -<field name="LOGIN_ACCOUNTS_CHANGED_ACTION" +<field name="KEY_PASSWORD" type="java.lang.String" transient="false" volatile="false" - value=""android.accounts.LOGIN_ACCOUNTS_CHANGED"" + value=""password"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="PASSWORD_KEY" +<field name="KEY_USERDATA" type="java.lang.String" transient="false" volatile="false" - value=""password"" + value=""userdata"" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> -<field name="USERDATA_KEY" +<field name="LOGIN_ACCOUNTS_CHANGED_ACTION" type="java.lang.String" transient="false" volatile="false" - value=""userdata"" + value=""android.accounts.LOGIN_ACCOUNTS_CHANGED"" static="true" final="true" deprecated="not deprecated" @@ -15241,16 +14864,14 @@ > </field> </class> -<interface name="IAccountAuthenticator" +<interface name="AccountManagerCallback" abstract="true" static="false" final="false" deprecated="not deprecated" visibility="public" > -<implements name="android.os.IInterface"> -</implements> -<method name="addAccount" +<method name="run" return="void" abstract="true" native="false" @@ -15260,38 +14881,19 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="accountType" type="java.lang.String"> -</parameter> -<parameter name="authTokenType" type="java.lang.String"> -</parameter> -<parameter name="requiredFeatures" type="java.lang.String[]"> -</parameter> -<parameter name="options" type="android.os.Bundle"> +<parameter name="future" type="android.accounts.AccountManagerFuture<V>"> </parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> </method> -<method name="confirmCredentials" - return="void" +</interface> +<interface name="AccountManagerFuture" abstract="true" - native="false" - synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="account" type="android.accounts.Account"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> -<method name="confirmPassword" - return="void" +<method name="cancel" + return="boolean" abstract="true" native="false" synchronized="false" @@ -15300,17 +14902,11 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="account" type="android.accounts.Account"> -</parameter> -<parameter name="password" type="java.lang.String"> +<parameter name="mayInterruptIfRunning" type="boolean"> </parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> </method> -<method name="editProperties" - return="void" +<method name="getResult" + return="V" abstract="true" native="false" synchronized="false" @@ -15319,15 +14915,15 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="accountType" type="java.lang.String"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> +<exception name="AuthenticatorException" type="android.accounts.AuthenticatorException"> +</exception> +<exception name="IOException" type="java.io.IOException"> +</exception> +<exception name="OperationCanceledException" type="android.accounts.OperationCanceledException"> </exception> </method> -<method name="getAccountRemovalAllowed" - return="void" +<method name="getResult" + return="V" abstract="true" native="false" synchronized="false" @@ -15336,15 +14932,19 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> +<parameter name="timeout" type="long"> </parameter> -<parameter name="account" type="android.accounts.Account"> +<parameter name="unit" type="java.util.concurrent.TimeUnit"> </parameter> -<exception name="RemoteException" type="android.os.RemoteException"> +<exception name="AuthenticatorException" type="android.accounts.AuthenticatorException"> +</exception> +<exception name="IOException" type="java.io.IOException"> +</exception> +<exception name="OperationCanceledException" type="android.accounts.OperationCanceledException"> </exception> </method> -<method name="getAuthToken" - return="void" +<method name="isCancelled" + return="boolean" abstract="true" native="false" synchronized="false" @@ -15353,19 +14953,9 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="account" type="android.accounts.Account"> -</parameter> -<parameter name="authTokenType" type="java.lang.String"> -</parameter> -<parameter name="options" type="android.os.Bundle"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> </method> -<method name="getAuthTokenLabel" - return="void" +<method name="isDone" + return="boolean" abstract="true" native="false" synchronized="false" @@ -15374,74 +14964,89 @@ deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="authTokenType" type="java.lang.String"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> </method> -<method name="hasFeatures" - return="void" - abstract="true" - native="false" - synchronized="false" +</interface> +<class name="AccountsException" + extends="java.lang.Exception" + abstract="false" static="false" final="false" deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> -</parameter> -<parameter name="account" type="android.accounts.Account"> -</parameter> -<parameter name="features" type="java.lang.String[]"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> -<method name="updateCredentials" - return="void" - abstract="true" - native="false" - synchronized="false" +<constructor name="AccountsException" + type="android.accounts.AccountsException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +</constructor> +<constructor name="AccountsException" + type="android.accounts.AccountsException" static="false" final="false" deprecated="not deprecated" visibility="public" > -<parameter name="response" type="android.accounts.IAccountAuthenticatorResponse"> +<parameter name="message" type="java.lang.String"> </parameter> -<parameter name="account" type="android.accounts.Account"> +</constructor> +<constructor name="AccountsException" + type="android.accounts.AccountsException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="message" type="java.lang.String"> </parameter> -<parameter name="authTokenType" type="java.lang.String"> +<parameter name="cause" type="java.lang.Throwable"> </parameter> -<parameter name="options" type="android.os.Bundle"> +</constructor> +<constructor name="AccountsException" + type="android.accounts.AccountsException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="cause" type="java.lang.Throwable"> </parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> -</interface> -<class name="IAccountAuthenticator.Stub" - extends="android.os.Binder" - abstract="true" - static="true" +</constructor> +</class> +<class name="AuthenticatorDescription" + extends="java.lang.Object" + abstract="false" + static="false" final="false" deprecated="not deprecated" visibility="public" > -<implements name="android.accounts.IAccountAuthenticator"> +<implements name="android.os.Parcelable"> </implements> -<constructor name="IAccountAuthenticator.Stub" - type="android.accounts.IAccountAuthenticator.Stub" +<constructor name="AuthenticatorDescription" + type="android.accounts.AuthenticatorDescription" static="false" final="false" deprecated="not deprecated" visibility="public" > +<parameter name="type" type="java.lang.String"> +</parameter> +<parameter name="packageName" type="java.lang.String"> +</parameter> +<parameter name="labelId" type="int"> +</parameter> +<parameter name="iconId" type="int"> +</parameter> +<parameter name="smallIconId" type="int"> +</parameter> +<parameter name="prefId" type="int"> +</parameter> </constructor> -<method name="asBinder" - return="android.os.IBinder" +<method name="describeContents" + return="int" abstract="false" native="false" synchronized="false" @@ -15451,8 +15056,8 @@ visibility="public" > </method> -<method name="asInterface" - return="android.accounts.IAccountAuthenticator" +<method name="newKey" + return="android.accounts.AuthenticatorDescription" abstract="false" native="false" synchronized="false" @@ -15461,11 +15066,11 @@ deprecated="not deprecated" visibility="public" > -<parameter name="obj" type="android.os.IBinder"> +<parameter name="type" type="java.lang.String"> </parameter> </method> -<method name="onTransact" - return="boolean" +<method name="writeToParcel" + return="void" abstract="false" native="false" synchronized="false" @@ -15474,139 +15079,133 @@ deprecated="not deprecated" visibility="public" > -<parameter name="code" type="int"> -</parameter> -<parameter name="data" type="android.os.Parcel"> -</parameter> -<parameter name="reply" type="android.os.Parcel"> +<parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> </method> -</class> -<interface name="IAccountAuthenticatorResponse" - abstract="true" +<field name="CREATOR" + type="android.os.Parcelable.Creator" + transient="false" + volatile="false" + static="true" + final="true" + deprecated="not deprecated" + visibility="public" +> +</field> +<field name="accountPreferencesId" + type="int" + transient="false" + volatile="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > -<implements name="android.os.IInterface"> -</implements> -<method name="onError" - return="void" - abstract="true" - native="false" - synchronized="false" +</field> +<field name="iconId" + type="int" + transient="false" + volatile="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > -<parameter name="errorCode" type="int"> -</parameter> -<parameter name="errorMessage" type="java.lang.String"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> -<method name="onRequestContinued" - return="void" - abstract="true" - native="false" - synchronized="false" +</field> +<field name="labelId" + type="int" + transient="false" + volatile="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> -<method name="onResult" - return="void" - abstract="true" - native="false" - synchronized="false" +</field> +<field name="packageName" + type="java.lang.String" + transient="false" + volatile="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > -<parameter name="value" type="android.os.Bundle"> -</parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> -</interface> -<class name="IAccountAuthenticatorResponse.Stub" - extends="android.os.Binder" - abstract="true" - static="true" - final="false" +</field> +<field name="smallIconId" + type="int" + transient="false" + volatile="false" + static="false" + final="true" deprecated="not deprecated" visibility="public" > -<implements name="android.accounts.IAccountAuthenticatorResponse"> -</implements> -<constructor name="IAccountAuthenticatorResponse.Stub" - type="android.accounts.IAccountAuthenticatorResponse.Stub" +</field> +<field name="type" + type="java.lang.String" + transient="false" + volatile="false" static="false" - final="false" + final="true" deprecated="not deprecated" visibility="public" > -</constructor> -<method name="asBinder" - return="android.os.IBinder" +</field> +</class> +<class name="AuthenticatorException" + extends="android.accounts.AccountsException" abstract="false" - native="false" - synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > -</method> -<method name="asInterface" - return="android.accounts.IAccountAuthenticatorResponse" - abstract="false" - native="false" - synchronized="false" - static="true" +<constructor name="AuthenticatorException" + type="android.accounts.AuthenticatorException" + static="false" final="false" deprecated="not deprecated" visibility="public" > -<parameter name="obj" type="android.os.IBinder"> -</parameter> -</method> -<method name="onTransact" - return="boolean" - abstract="false" - native="false" - synchronized="false" +</constructor> +<constructor name="AuthenticatorException" + type="android.accounts.AuthenticatorException" static="false" final="false" deprecated="not deprecated" visibility="public" > -<parameter name="code" type="int"> +<parameter name="message" type="java.lang.String"> </parameter> -<parameter name="data" type="android.os.Parcel"> +</constructor> +<constructor name="AuthenticatorException" + type="android.accounts.AuthenticatorException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="message" type="java.lang.String"> </parameter> -<parameter name="reply" type="android.os.Parcel"> +<parameter name="cause" type="java.lang.Throwable"> </parameter> -<parameter name="flags" type="int"> +</constructor> +<constructor name="AuthenticatorException" + type="android.accounts.AuthenticatorException" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="cause" type="java.lang.Throwable"> </parameter> -<exception name="RemoteException" type="android.os.RemoteException"> -</exception> -</method> +</constructor> </class> <class name="NetworkErrorException" - extends="java.lang.Exception" + extends="android.accounts.AccountsException" abstract="false" static="false" final="false" @@ -15654,7 +15253,7 @@ </parameter> </constructor> </class> -<interface name="OnAccountsUpdatedListener" +<interface name="OnAccountsUpdateListener" abstract="true" static="false" final="false" @@ -15676,7 +15275,7 @@ </method> </interface> <class name="OperationCanceledException" - extends="java.lang.Exception" + extends="android.accounts.AccountsException" abstract="false" static="false" final="false" diff --git a/core/java/android/accounts/AbstractAccountAuthenticator.java b/core/java/android/accounts/AbstractAccountAuthenticator.java index 38ae962..456cf98 100644 --- a/core/java/android/accounts/AbstractAccountAuthenticator.java +++ b/core/java/android/accounts/AbstractAccountAuthenticator.java @@ -19,9 +19,10 @@ package android.accounts; import android.os.Bundle; import android.os.RemoteException; import android.os.Binder; -import android.util.Log; +import android.os.IBinder; import android.content.pm.PackageManager; import android.content.Context; +import android.content.Intent; import android.Manifest; /** @@ -36,7 +37,7 @@ public abstract class AbstractAccountAuthenticator { mContext = context; } - class Transport extends IAccountAuthenticator.Stub { + private class Transport extends IAccountAuthenticator.Stub { public void addAccount(IAccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws RemoteException { @@ -47,53 +48,38 @@ public abstract class AbstractAccountAuthenticator { new AccountAuthenticatorResponse(response), accountType, authTokenType, requiredFeatures, options); } catch (NetworkErrorException e) { - response.onError(Constants.ERROR_CODE_NETWORK_ERROR, e.getMessage()); + response.onError(AccountManager.ERROR_CODE_NETWORK_ERROR, e.getMessage()); return; } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "addAccount not supported"); return; } if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } - public void confirmPassword(IAccountAuthenticatorResponse response, - Account account, String password) throws RemoteException { - checkBinderPermission(); - boolean result; - try { - result = AbstractAccountAuthenticator.this.confirmPassword( - new AccountAuthenticatorResponse(response), - account, password); - } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, - "confirmPassword not supported"); - return; - } catch (NetworkErrorException e) { - response.onError(Constants.ERROR_CODE_NETWORK_ERROR, e.getMessage()); - return; - } - Bundle bundle = new Bundle(); - bundle.putBoolean(Constants.BOOLEAN_RESULT_KEY, result); - response.onResult(bundle); - } - public void confirmCredentials(IAccountAuthenticatorResponse response, - Account account) throws RemoteException { + Account account, Bundle options) throws RemoteException { checkBinderPermission(); final Bundle result; try { result = AbstractAccountAuthenticator.this.confirmCredentials( - new AccountAuthenticatorResponse(response), account); + new AccountAuthenticatorResponse(response), account, options); } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "confirmCredentials not supported"); return; } if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } @@ -103,14 +89,14 @@ public abstract class AbstractAccountAuthenticator { checkBinderPermission(); try { Bundle result = new Bundle(); - result.putString(Constants.AUTH_TOKEN_LABEL_KEY, + result.putString(AccountManager.KEY_AUTH_TOKEN_LABEL, AbstractAccountAuthenticator.this.getAuthTokenLabel(authTokenType)); response.onResult(result); } catch (IllegalArgumentException e) { - response.onError(Constants.ERROR_CODE_BAD_ARGUMENTS, + response.onError(AccountManager.ERROR_CODE_BAD_ARGUMENTS, "unknown authTokenType"); } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "getAuthTokenTypeLabel not supported"); } } @@ -125,12 +111,15 @@ public abstract class AbstractAccountAuthenticator { authTokenType, loginOptions); if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "getAuthToken not supported"); } catch (NetworkErrorException e) { - response.onError(Constants.ERROR_CODE_NETWORK_ERROR, e.getMessage()); + response.onError(AccountManager.ERROR_CODE_NETWORK_ERROR, e.getMessage()); } } @@ -143,12 +132,15 @@ public abstract class AbstractAccountAuthenticator { new AccountAuthenticatorResponse(response), account, authTokenType, loginOptions); } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "updateCredentials not supported"); return; } if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } @@ -160,12 +152,15 @@ public abstract class AbstractAccountAuthenticator { result = AbstractAccountAuthenticator.this.editProperties( new AccountAuthenticatorResponse(response), accountType); } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "editProperties not supported"); return; } if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } @@ -177,15 +172,18 @@ public abstract class AbstractAccountAuthenticator { result = AbstractAccountAuthenticator.this.hasFeatures( new AccountAuthenticatorResponse(response), account, features); } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "hasFeatures not supported"); return; } catch (NetworkErrorException e) { - response.onError(Constants.ERROR_CODE_NETWORK_ERROR, e.getMessage()); + response.onError(AccountManager.ERROR_CODE_NETWORK_ERROR, e.getMessage()); return; } if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } @@ -197,34 +195,34 @@ public abstract class AbstractAccountAuthenticator { new AccountAuthenticatorResponse(response), account); if (result != null) { response.onResult(result); + } else { + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, + "no response from the authenticator"); } } catch (UnsupportedOperationException e) { - response.onError(Constants.ERROR_CODE_UNSUPPORTED_OPERATION, + response.onError(AccountManager.ERROR_CODE_UNSUPPORTED_OPERATION, "getAccountRemovalAllowed not supported"); - return; } catch (NetworkErrorException e) { - response.onError(Constants.ERROR_CODE_NETWORK_ERROR, e.getMessage()); - return; + response.onError(AccountManager.ERROR_CODE_NETWORK_ERROR, e.getMessage()); } } } private void checkBinderPermission() { final int uid = Binder.getCallingUid(); - final String perm = Manifest.permission.ACCOUNT_MANAGER_SERVICE; + final String perm = Manifest.permission.ACCOUNT_MANAGER; if (mContext.checkCallingOrSelfPermission(perm) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("caller uid " + uid + " lacks " + perm); } } - Transport mTransport = new Transport(); + private Transport mTransport = new Transport(); /** - * @return the IAccountAuthenticator binder transport object + * @return the IBinder for the AccountAuthenticator */ - public final IAccountAuthenticator getIAccountAuthenticator() - { - return mTransport; + public final IBinder getIBinder() { + return mTransport.asBinder(); } /** @@ -244,11 +242,8 @@ public abstract class AbstractAccountAuthenticator { public abstract Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException; - /* @deprecated */ - public abstract boolean confirmPassword(AccountAuthenticatorResponse response, - Account account, String password) throws NetworkErrorException; public abstract Bundle confirmCredentials(AccountAuthenticatorResponse response, - Account account); + Account account, Bundle options); public abstract Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle loginOptions) throws NetworkErrorException; @@ -260,7 +255,7 @@ public abstract class AbstractAccountAuthenticator { public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) throws NetworkErrorException { final Bundle result = new Bundle(); - result.putBoolean(Constants.BOOLEAN_RESULT_KEY, true); + result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); return result; } } diff --git a/core/java/android/accounts/AccountAuthenticatorActivity.java b/core/java/android/accounts/AccountAuthenticatorActivity.java index 0319ab9..6e1f304 100644 --- a/core/java/android/accounts/AccountAuthenticatorActivity.java +++ b/core/java/android/accounts/AccountAuthenticatorActivity.java @@ -63,10 +63,10 @@ public class AccountAuthenticatorActivity extends Activity { if (icicle == null) { Intent intent = getIntent(); mAccountAuthenticatorResponse = - intent.getParcelableExtra(Constants.ACCOUNT_AUTHENTICATOR_RESPONSE_KEY); + intent.getParcelableExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE); } else { mAccountAuthenticatorResponse = - icicle.getParcelable(Constants.ACCOUNT_AUTHENTICATOR_RESPONSE_KEY); + icicle.getParcelable(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE); } if (mAccountAuthenticatorResponse != null) { @@ -79,7 +79,7 @@ public class AccountAuthenticatorActivity extends Activity { * @param outState where to store any instance data */ protected void onSaveInstanceState(Bundle outState) { - outState.putParcelable(Constants.ACCOUNT_AUTHENTICATOR_RESPONSE_KEY, + outState.putParcelable(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, mAccountAuthenticatorResponse); super.onSaveInstanceState(outState); } @@ -93,7 +93,7 @@ public class AccountAuthenticatorActivity extends Activity { if (mResultBundle != null) { mAccountAuthenticatorResponse.onResult(mResultBundle); } else { - mAccountAuthenticatorResponse.onError(Constants.ERROR_CODE_CANCELED, "canceled"); + mAccountAuthenticatorResponse.onError(AccountManager.ERROR_CODE_CANCELED, "canceled"); } mAccountAuthenticatorResponse = null; } diff --git a/core/java/android/accounts/AccountAuthenticatorCache.java b/core/java/android/accounts/AccountAuthenticatorCache.java index fdc5fbf..ce063a7 100644 --- a/core/java/android/accounts/AccountAuthenticatorCache.java +++ b/core/java/android/accounts/AccountAuthenticatorCache.java @@ -35,8 +35,8 @@ import android.text.TextUtils; private static final String TAG = "Account"; public AccountAuthenticatorCache(Context context) { - super(context, Constants.AUTHENTICATOR_INTENT_ACTION, - Constants.AUTHENTICATOR_META_DATA_NAME, Constants.AUTHENTICATOR_ATTRIBUTES_NAME); + super(context, AccountManager.ACTION_AUTHENTICATOR_INTENT, + AccountManager.AUTHENTICATOR_META_DATA_NAME, AccountManager.AUTHENTICATOR_ATTRIBUTES_NAME); } public AuthenticatorDescription parseServiceAttributes(String packageName, AttributeSet attrs) { diff --git a/core/java/android/accounts/AccountAuthenticatorResponse.java b/core/java/android/accounts/AccountAuthenticatorResponse.java index 7198046..3488c5e 100644 --- a/core/java/android/accounts/AccountAuthenticatorResponse.java +++ b/core/java/android/accounts/AccountAuthenticatorResponse.java @@ -28,7 +28,10 @@ import android.os.RemoteException; public class AccountAuthenticatorResponse implements Parcelable { private IAccountAuthenticatorResponse mAccountAuthenticatorResponse; - public AccountAuthenticatorResponse(IAccountAuthenticatorResponse response) { + /** + * @hide + */ + /* package private */ AccountAuthenticatorResponse(IAccountAuthenticatorResponse response) { mAccountAuthenticatorResponse = response; } diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 2979072..ae6d914 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -54,9 +54,44 @@ import com.google.android.collect.Maps; public class AccountManager { private static final String TAG = "AccountManager"; + public static final int ERROR_CODE_REMOTE_EXCEPTION = 1; + public static final int ERROR_CODE_NETWORK_ERROR = 3; + public static final int ERROR_CODE_CANCELED = 4; + public static final int ERROR_CODE_INVALID_RESPONSE = 5; + public static final int ERROR_CODE_UNSUPPORTED_OPERATION = 6; + public static final int ERROR_CODE_BAD_ARGUMENTS = 7; + public static final int ERROR_CODE_BAD_REQUEST = 8; + public static final String KEY_ACCOUNTS = "accounts"; + public static final String KEY_AUTHENTICATOR_TYPES = "authenticator_types"; + public static final String KEY_USERDATA = "userdata"; + public static final String KEY_AUTHTOKEN = "authtoken"; + public static final String KEY_PASSWORD = "password"; + public static final String KEY_ACCOUNT_NAME = "authAccount"; + public static final String KEY_ACCOUNT_TYPE = "accountType"; + public static final String KEY_ERROR_CODE = "errorCode"; + public static final String KEY_ERROR_MESSAGE = "errorMessage"; + public static final String KEY_INTENT = "intent"; + public static final String KEY_BOOLEAN_RESULT = "booleanResult"; + public static final String KEY_ACCOUNT_AUTHENTICATOR_RESPONSE = "accountAuthenticatorResponse"; + public static final String KEY_ACCOUNT_MANAGER_RESPONSE = "accountManagerResponse"; + public static final String KEY_AUTH_FAILED_MESSAGE = "authFailedMessage"; + public static final String KEY_AUTH_TOKEN_LABEL = "authTokenLabelKey"; + public static final String ACTION_AUTHENTICATOR_INTENT = + "android.accounts.AccountAuthenticator"; + public static final String AUTHENTICATOR_META_DATA_NAME = + "android.accounts.AccountAuthenticator"; + public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator"; + private final Context mContext; private final IAccountManager mService; private final Handler mMainHandler; + /** + * Action sent as a broadcast Intent by the AccountsService + * when accounts are added to and/or removed from the device's + * database. + */ + public static final String LOGIN_ACCOUNTS_CHANGED_ACTION = + "android.accounts.LOGIN_ACCOUNTS_CHANGED"; /** * @hide @@ -141,10 +176,10 @@ public class AccountManager { mService.removeAccount(mResponse, account); } public Boolean bundleToResult(Bundle bundle) throws AuthenticatorException { - if (!bundle.containsKey(Constants.BOOLEAN_RESULT_KEY)) { + if (!bundle.containsKey(KEY_BOOLEAN_RESULT)) { throw new AuthenticatorException("no result in response"); } - return bundle.getBoolean(Constants.BOOLEAN_RESULT_KEY); + return bundle.getBoolean(KEY_BOOLEAN_RESULT); } }.start(); } @@ -208,7 +243,7 @@ public class AccountManager { throws OperationCanceledException, IOException, AuthenticatorException { Bundle bundle = getAuthToken(account, authTokenType, notifyAuthFailure, null /* callback */, null /* handler */).getResult(); - return bundle.getString(Constants.AUTHTOKEN_KEY); + return bundle.getString(KEY_AUTHTOKEN); } /** @@ -262,23 +297,6 @@ public class AccountManager { }.start(); } - /** @deprecated use {@link #confirmCredentials} instead */ - @Deprecated - public AccountManagerFuture<Boolean> confirmPassword(final Account account, final String password, - AccountManagerCallback<Boolean> callback, Handler handler) { - return new Future2Task<Boolean>(handler, callback) { - public void doWork() throws RemoteException { - mService.confirmPassword(mResponse, account, password); - } - public Boolean bundleToResult(Bundle bundle) throws AuthenticatorException { - if (!bundle.containsKey(Constants.BOOLEAN_RESULT_KEY)) { - throw new AuthenticatorException("no result in response"); - } - return bundle.getBoolean(Constants.BOOLEAN_RESULT_KEY); - } - }.start(); - } - public AccountManagerFuture<Account[]> getAccountsByTypeAndFeatures( final String type, final String[] features, AccountManagerCallback<Account[]> callback, Handler handler) { @@ -288,10 +306,10 @@ public class AccountManager { mService.getAccountsByFeatures(mResponse, type, features); } public Account[] bundleToResult(Bundle bundle) throws AuthenticatorException { - if (!bundle.containsKey(Constants.ACCOUNTS_KEY)) { + if (!bundle.containsKey(KEY_ACCOUNTS)) { throw new AuthenticatorException("no result in response"); } - final Parcelable[] parcelables = bundle.getParcelableArray(Constants.ACCOUNTS_KEY); + final Parcelable[] parcelables = bundle.getParcelableArray(KEY_ACCOUNTS); Account[] descs = new Account[parcelables.length]; for (int i = 0; i < parcelables.length; i++) { descs[i] = (Account) parcelables[i]; @@ -301,12 +319,14 @@ public class AccountManager { }.start(); } - public AccountManagerFuture<Bundle> confirmCredentials(final Account account, final Activity activity, + public AccountManagerFuture<Bundle> confirmCredentials(final Account account, + final Bundle options, + final Activity activity, final AccountManagerCallback<Bundle> callback, final Handler handler) { return new AmsTask(activity, handler, callback) { public void doWork() throws RemoteException { - mService.confirmCredentials(mResponse, account, activity != null); + mService.confirmCredentials(mResponse, account, options, activity != null); } }.start(); } @@ -357,7 +377,7 @@ public class AccountManager { }); } - private void postToHandler(Handler handler, final OnAccountsUpdatedListener listener, + private void postToHandler(Handler handler, final OnAccountsUpdateListener listener, final Account[] accounts) { final Account[] accountsCopy = new Account[accounts.length]; // send a copy to make sure that one doesn't @@ -480,7 +500,7 @@ public class AccountManager { } public void onError(int code, String message) { - if (code == Constants.ERROR_CODE_CANCELED) { + if (code == ERROR_CODE_CANCELED) { // the authenticator indicated that this request was canceled, do so now cancel(true /* mayInterruptIfRunning */); return; @@ -536,11 +556,11 @@ public class AccountManager { } catch (AuthenticatorException e) { // we will set the exception below } - onError(Constants.ERROR_CODE_INVALID_RESPONSE, "no result in response"); + onError(ERROR_CODE_INVALID_RESPONSE, "no result in response"); } public void onError(int code, String message) { - if (code == Constants.ERROR_CODE_CANCELED) { + if (code == ERROR_CODE_CANCELED) { cancel(true /* mayInterruptIfRunning */); return; } @@ -621,19 +641,19 @@ public class AccountManager { } private Exception convertErrorToException(int code, String message) { - if (code == Constants.ERROR_CODE_NETWORK_ERROR) { + if (code == ERROR_CODE_NETWORK_ERROR) { return new IOException(message); } - if (code == Constants.ERROR_CODE_UNSUPPORTED_OPERATION) { + if (code == ERROR_CODE_UNSUPPORTED_OPERATION) { return new UnsupportedOperationException(message); } - if (code == Constants.ERROR_CODE_INVALID_RESPONSE) { + if (code == ERROR_CODE_INVALID_RESPONSE) { return new AuthenticatorException(message); } - if (code == Constants.ERROR_CODE_BAD_ARGUMENTS) { + if (code == ERROR_CODE_BAD_ARGUMENTS) { return new IllegalArgumentException(message); } @@ -690,9 +710,9 @@ public class AccountManager { } else { // send result since we can't prompt to add an account Bundle result = new Bundle(); - result.putString(Constants.ACCOUNT_NAME_KEY, null); - result.putString(Constants.ACCOUNT_TYPE_KEY, null); - result.putString(Constants.AUTHTOKEN_KEY, null); + result.putString(KEY_ACCOUNT_NAME, null); + result.putString(KEY_ACCOUNT_TYPE, null); + result.putString(KEY_AUTHTOKEN, null); try { mResponse.onResult(result); } catch (RemoteException e) { @@ -716,8 +736,8 @@ public class AccountManager { new IAccountManagerResponse.Stub() { public void onResult(Bundle value) throws RemoteException { Account account = new Account( - value.getString(Constants.ACCOUNT_NAME_KEY), - value.getString(Constants.ACCOUNT_TYPE_KEY)); + value.getString(KEY_ACCOUNT_NAME), + value.getString(KEY_ACCOUNT_TYPE)); mFuture = getAuthToken(account, mAuthTokenType, mLoginOptions, mActivity, mMyCallback, mHandler); } @@ -731,15 +751,15 @@ public class AccountManager { Intent intent = new Intent(); intent.setClassName("android", "android.accounts.ChooseAccountActivity"); - intent.putExtra(Constants.ACCOUNTS_KEY, accounts); - intent.putExtra(Constants.ACCOUNT_MANAGER_RESPONSE_KEY, + intent.putExtra(KEY_ACCOUNTS, accounts); + intent.putExtra(KEY_ACCOUNT_MANAGER_RESPONSE, new AccountManagerResponse(chooseResponse)); mActivity.startActivity(intent); // the result will arrive via the IAccountManagerResponse } else { // send result since we can't prompt to select an account Bundle result = new Bundle(); - result.putString(Constants.ACCOUNTS_KEY, null); + result.putString(KEY_ACCOUNTS, null); try { mResponse.onResult(result); } catch (RemoteException e) { @@ -751,38 +771,34 @@ public class AccountManager { }}, mHandler); } - - - // TODO(fredq) pass through the calls to our implemention of Future2 to the underlying - // future that we create. We need to do things like have cancel cancel the mFuture, if set - // or to cause this to be canceled if mFuture isn't set. - // Once this is done then getAuthTokenByFeatures can be changed to return a Future2. - public void run(AccountManagerFuture<Bundle> future) { try { - set(future.get()); - } catch (InterruptedException e) { - cancel(true); - } catch (CancellationException e) { - cancel(true); - } catch (ExecutionException e) { - setException(e.getCause()); + set(future.getResult()); + } catch (OperationCanceledException e) { + cancel(true /* mayInterruptIfRUnning */); + } catch (IOException e) { + setException(e); + } catch (AuthenticatorException e) { + setException(e); } } } - public void getAuthTokenByFeatures( + public AccountManagerFuture<Bundle> getAuthTokenByFeatures( final String accountType, final String authTokenType, final String[] features, final Activity activityForPrompting, final Bundle addAccountOptions, final Bundle loginOptions, final AccountManagerCallback<Bundle> callback, final Handler handler) { if (accountType == null) throw new IllegalArgumentException("account type is null"); if (authTokenType == null) throw new IllegalArgumentException("authTokenType is null"); - new GetAuthTokenByTypeAndFeaturesTask(accountType, authTokenType, features, - activityForPrompting, addAccountOptions, loginOptions, callback, handler).start(); + final GetAuthTokenByTypeAndFeaturesTask task = + new GetAuthTokenByTypeAndFeaturesTask(accountType, authTokenType, features, + activityForPrompting, addAccountOptions, loginOptions, callback, handler); + task.start(); + return task; } - private final HashMap<OnAccountsUpdatedListener, Handler> mAccountsUpdatedListeners = + private final HashMap<OnAccountsUpdateListener, Handler> mAccountsUpdatedListeners = Maps.newHashMap(); /** @@ -795,7 +811,7 @@ public class AccountManager { final Account[] accounts = getAccounts(); // send the result to the listeners synchronized (mAccountsUpdatedListeners) { - for (Map.Entry<OnAccountsUpdatedListener, Handler> entry : + for (Map.Entry<OnAccountsUpdateListener, Handler> entry : mAccountsUpdatedListeners.entrySet()) { postToHandler(entry.getValue(), entry.getKey(), accounts); } @@ -804,7 +820,7 @@ public class AccountManager { }; /** - * Add a {@link OnAccountsUpdatedListener} to this instance of the {@link AccountManager}. + * Add a {@link OnAccountsUpdateListener} to this instance of the {@link AccountManager}. * The listener is guaranteed to be invoked on the thread of the Handler that is passed * in or the main thread's Handler if handler is null. * <p> @@ -819,7 +835,7 @@ public class AccountManager { * @throws IllegalArgumentException if listener is null * @throws IllegalStateException if listener was already added */ - public void addOnAccountsUpdatedListener(final OnAccountsUpdatedListener listener, + public void addOnAccountsUpdatedListener(final OnAccountsUpdateListener listener, Handler handler, boolean updateImmediately) { if (listener == null) { throw new IllegalArgumentException("the listener is null"); @@ -835,7 +851,7 @@ public class AccountManager { if (wasEmpty) { // Register a broadcast receiver to monitor account changes IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Constants.LOGIN_ACCOUNTS_CHANGED_ACTION); + intentFilter.addAction(LOGIN_ACCOUNTS_CHANGED_ACTION); // To recover from disk-full. intentFilter.addAction(Intent.ACTION_DEVICE_STORAGE_OK); mContext.registerReceiver(mAccountsChangedBroadcastReceiver, intentFilter); @@ -848,13 +864,13 @@ public class AccountManager { } /** - * Remove an {@link OnAccountsUpdatedListener} that was previously registered with + * Remove an {@link OnAccountsUpdateListener} that was previously registered with * {@link #addOnAccountsUpdatedListener}. * @param listener the listener to remove * @throws IllegalArgumentException if listener is null * @throws IllegalStateException if listener was not already added */ - public void removeOnAccountsUpdatedListener(OnAccountsUpdatedListener listener) { + public void removeOnAccountsUpdatedListener(OnAccountsUpdateListener listener) { if (listener == null) { throw new IllegalArgumentException("the listener is null"); } diff --git a/core/java/android/accounts/AccountManagerFuture.java b/core/java/android/accounts/AccountManagerFuture.java index 74d83eb..0a26bfa 100644 --- a/core/java/android/accounts/AccountManagerFuture.java +++ b/core/java/android/accounts/AccountManagerFuture.java @@ -22,12 +22,63 @@ import java.util.concurrent.TimeoutException; import java.io.IOException; /** - * An extension of {@link java.util.concurrent.Future} that provides wrappers for {@link #get()} - * that handle the various - * exceptions that {@link #get()} may return and rethrows them as exceptions specific to - * {@link android.accounts.AccountManager}. + * A <tt>AccountManagerFuture</tt> represents the result of an asynchronous + * {@link AccountManager} call. Methods are provided to check if the computation is + * complete, to wait for its completion, and to retrieve the result of + * the computation. The result can only be retrieved using method + * <tt>get</tt> when the computation has completed, blocking if + * necessary until it is ready. Cancellation is performed by the + * <tt>cancel</tt> method. Additional methods are provided to + * determine if the task completed normally or was cancelled. Once a + * computation has completed, the computation cannot be cancelled. + * If you would like to use a <tt>Future</tt> for the sake + * of cancellability but not provide a usable result, you can + * declare types of the form <tt>Future<?></tt> and + * return <tt>null</tt> as a result of the underlying task. */ -public interface AccountManagerFuture<V> extends Future<V> { +public interface AccountManagerFuture<V> { + /** + * Attempts to cancel execution of this task. This attempt will + * fail if the task has already completed, has already been cancelled, + * or could not be cancelled for some other reason. If successful, + * and this task has not started when <tt>cancel</tt> is called, + * this task should never run. If the task has already started, + * then the <tt>mayInterruptIfRunning</tt> parameter determines + * whether the thread executing this task should be interrupted in + * an attempt to stop the task. + * + * <p>After this method returns, subsequent calls to {@link #isDone} will + * always return <tt>true</tt>. Subsequent calls to {@link #isCancelled} + * will always return <tt>true</tt> if this method returned <tt>true</tt>. + * + * @param mayInterruptIfRunning <tt>true</tt> if the thread executing this + * task should be interrupted; otherwise, in-progress tasks are allowed + * to complete + * @return <tt>false</tt> if the task could not be cancelled, + * typically because it has already completed normally; + * <tt>true</tt> otherwise + */ + boolean cancel(boolean mayInterruptIfRunning); + + /** + * Returns <tt>true</tt> if this task was cancelled before it completed + * normally. + * + * @return <tt>true</tt> if this task was cancelled before it completed + */ + boolean isCancelled(); + + /** + * Returns <tt>true</tt> if this task completed. + * + * Completion may be due to normal termination, an exception, or + * cancellation -- in all of these cases, this method will return + * <tt>true</tt>. + * + * @return <tt>true</tt> if this task completed + */ + boolean isDone(); + /** * Wrapper for {@link java.util.concurrent.Future#get()}. If the get() throws * {@link InterruptedException} then the @@ -55,13 +106,4 @@ public interface AccountManagerFuture<V> extends Future<V> { */ V getResult(long timeout, TimeUnit unit) throws OperationCanceledException, IOException, AuthenticatorException; - - /** @deprecated Use {@link #getResult} */ - @Deprecated - V get() throws InterruptedException, ExecutionException; - - /** @deprecated Use {@link #getResult} */ - @Deprecated - V get(long timeout, TimeUnit unit) - throws InterruptedException, ExecutionException, TimeoutException; }
\ No newline at end of file diff --git a/core/java/android/accounts/AccountManagerService.java b/core/java/android/accounts/AccountManagerService.java index 6dea023..3a11cb3 100644 --- a/core/java/android/accounts/AccountManagerService.java +++ b/core/java/android/accounts/AccountManagerService.java @@ -156,7 +156,7 @@ public class AccountManagerService && SystemProperties.getBoolean("ro.debuggable", false); static { - ACCOUNTS_CHANGED_INTENT = new Intent(Constants.LOGIN_ACCOUNTS_CHANGED_ACTION); + ACCOUNTS_CHANGED_INTENT = new Intent(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION); ACCOUNTS_CHANGED_INTENT.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); } @@ -440,16 +440,16 @@ public class AccountManagerService } public void onResult(Bundle result) { - if (result != null && result.containsKey(Constants.BOOLEAN_RESULT_KEY) - && !result.containsKey(Constants.INTENT_KEY)) { - final boolean removalAllowed = result.getBoolean(Constants.BOOLEAN_RESULT_KEY); + if (result != null && result.containsKey(AccountManager.KEY_BOOLEAN_RESULT) + && !result.containsKey(AccountManager.KEY_INTENT)) { + final boolean removalAllowed = result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT); if (removalAllowed) { removeAccount(mAccount); } IAccountManagerResponse response = getResponseAndClose(); if (response != null) { Bundle result2 = new Bundle(); - result2.putBoolean(Constants.BOOLEAN_RESULT_KEY, removalAllowed); + result2.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, removalAllowed); try { response.onResult(result2); } catch (RemoteException e) { @@ -691,9 +691,9 @@ public class AccountManagerService String authToken = readAuthTokenFromDatabase(account, authTokenType); if (authToken != null) { Bundle result = new Bundle(); - result.putString(Constants.AUTHTOKEN_KEY, authToken); - result.putString(Constants.ACCOUNT_NAME_KEY, account.name); - result.putString(Constants.ACCOUNT_TYPE_KEY, account.type); + result.putString(AccountManager.KEY_AUTHTOKEN, authToken); + result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); + result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); onResult(response, result); return; } @@ -721,22 +721,22 @@ public class AccountManagerService public void onResult(Bundle result) { if (result != null) { - if (result.containsKey(Constants.AUTH_TOKEN_LABEL_KEY)) { + if (result.containsKey(AccountManager.KEY_AUTH_TOKEN_LABEL)) { Intent intent = newGrantCredentialsPermissionIntent(account, callerUid, new AccountAuthenticatorResponse(this), authTokenType, - result.getString(Constants.AUTH_TOKEN_LABEL_KEY)); + result.getString(AccountManager.KEY_AUTH_TOKEN_LABEL)); Bundle bundle = new Bundle(); - bundle.putParcelable(Constants.INTENT_KEY, intent); + bundle.putParcelable(AccountManager.KEY_INTENT, intent); onResult(bundle); return; } - String authToken = result.getString(Constants.AUTHTOKEN_KEY); + String authToken = result.getString(AccountManager.KEY_AUTHTOKEN); if (authToken != null) { - String name = result.getString(Constants.ACCOUNT_NAME_KEY); - String type = result.getString(Constants.ACCOUNT_TYPE_KEY); + String name = result.getString(AccountManager.KEY_ACCOUNT_NAME); + String type = result.getString(AccountManager.KEY_ACCOUNT_TYPE); if (TextUtils.isEmpty(type) || TextUtils.isEmpty(name)) { - onError(Constants.ERROR_CODE_INVALID_RESPONSE, + onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "the type and name should not be empty"); return; } @@ -744,10 +744,10 @@ public class AccountManagerService authTokenType, authToken); } - Intent intent = result.getParcelable(Constants.INTENT_KEY); + Intent intent = result.getParcelable(AccountManager.KEY_INTENT); if (intent != null && notifyOnAuthFailure) { doNotification( - account, result.getString(Constants.AUTH_FAILED_MESSAGE_KEY), + account, result.getString(AccountManager.KEY_AUTH_FAILED_MESSAGE), intent); } } @@ -871,13 +871,13 @@ public class AccountManagerService } public void confirmCredentials(IAccountManagerResponse response, - final Account account, final boolean expectActivityLaunch) { + final Account account, final Bundle options, final boolean expectActivityLaunch) { checkManageAccountsPermission(); long identityToken = clearCallingIdentity(); try { new Session(response, account.type, expectActivityLaunch) { public void run() throws RemoteException { - mAuthenticator.confirmCredentials(this, account); + mAuthenticator.confirmCredentials(this, account, options); } protected String toDebugString(long now) { return super.toDebugString(now) + ", confirmCredentials" @@ -889,25 +889,6 @@ public class AccountManagerService } } - public void confirmPassword(IAccountManagerResponse response, final Account account, - final String password) { - checkManageAccountsPermission(); - long identityToken = clearCallingIdentity(); - try { - new Session(response, account.type, false /* expectActivityLaunch */) { - public void run() throws RemoteException { - mAuthenticator.confirmPassword(this, account, password); - } - protected String toDebugString(long now) { - return super.toDebugString(now) + ", confirmPassword" - + ", " + account; - } - }.bind(); - } finally { - restoreCallingIdentity(identityToken); - } - } - public void updateCredentials(IAccountManagerResponse response, final Account account, final String authTokenType, final boolean expectActivityLaunch, final Bundle loginOptions) { @@ -980,17 +961,17 @@ public class AccountManagerService try { mAuthenticator.hasFeatures(this, mAccountsOfType[mCurrentAccount], mFeatures); } catch (RemoteException e) { - onError(Constants.ERROR_CODE_REMOTE_EXCEPTION, "remote exception"); + onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION, "remote exception"); } } public void onResult(Bundle result) { mNumResults++; if (result == null) { - onError(Constants.ERROR_CODE_INVALID_RESPONSE, "null bundle"); + onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "null bundle"); return; } - if (result.getBoolean(Constants.BOOLEAN_RESULT_KEY, false)) { + if (result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT, false)) { mAccountsWithFeatures.add(mAccountsOfType[mCurrentAccount]); } mCurrentAccount++; @@ -1006,7 +987,7 @@ public class AccountManagerService accounts[i] = mAccountsWithFeatures.get(i); } Bundle result = new Bundle(); - result.putParcelableArray(Constants.ACCOUNTS_KEY, accounts); + result.putParcelableArray(AccountManager.KEY_ACCOUNTS, accounts); response.onResult(result); } catch (RemoteException e) { // if the caller is dead then there is no one to care about remote exceptions @@ -1040,7 +1021,7 @@ public class AccountManagerService if (features != null && type == null) { if (response != null) { try { - response.onError(Constants.ERROR_CODE_BAD_ARGUMENTS, "type is null"); + response.onError(AccountManager.ERROR_CODE_BAD_ARGUMENTS, "type is null"); } catch (RemoteException e) { // ignore this } @@ -1171,7 +1152,7 @@ public class AccountManagerService } if (!mBindHelper.bind(mAccountType, this)) { Log.d(TAG, "bind attempt failed for " + toDebugString()); - onError(Constants.ERROR_CODE_REMOTE_EXCEPTION, "bind failure"); + onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION, "bind failure"); } } @@ -1196,7 +1177,7 @@ public class AccountManagerService try { run(); } catch (RemoteException e) { - onError(Constants.ERROR_CODE_REMOTE_EXCEPTION, + onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION, "remote exception"); } } @@ -1207,7 +1188,7 @@ public class AccountManagerService mAuthenticator = null; IAccountManagerResponse response = getResponseAndClose(); if (response != null) { - onError(Constants.ERROR_CODE_REMOTE_EXCEPTION, + onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION, "disconnected"); } } @@ -1215,16 +1196,16 @@ public class AccountManagerService public void onTimedOut() { IAccountManagerResponse response = getResponseAndClose(); if (response != null) { - onError(Constants.ERROR_CODE_REMOTE_EXCEPTION, + onError(AccountManager.ERROR_CODE_REMOTE_EXCEPTION, "timeout"); } } public void onResult(Bundle result) { mNumResults++; - if (result != null && !TextUtils.isEmpty(result.getString(Constants.AUTHTOKEN_KEY))) { - String accountName = result.getString(Constants.ACCOUNT_NAME_KEY); - String accountType = result.getString(Constants.ACCOUNT_TYPE_KEY); + if (result != null && !TextUtils.isEmpty(result.getString(AccountManager.KEY_AUTHTOKEN))) { + String accountName = result.getString(AccountManager.KEY_ACCOUNT_NAME); + String accountType = result.getString(AccountManager.KEY_ACCOUNT_TYPE); if (!TextUtils.isEmpty(accountName) && !TextUtils.isEmpty(accountType)) { Account account = new Account(accountName, accountType); cancelNotification(getSigninRequiredNotificationId(account)); @@ -1232,7 +1213,7 @@ public class AccountManagerService } IAccountManagerResponse response; if (mExpectActivityLaunch && result != null - && result.containsKey(Constants.INTENT_KEY)) { + && result.containsKey(AccountManager.KEY_INTENT)) { response = mResponse; } else { response = getResponseAndClose(); @@ -1240,7 +1221,7 @@ public class AccountManagerService if (response != null) { try { if (result == null) { - response.onError(Constants.ERROR_CODE_INVALID_RESPONSE, + response.onError(AccountManager.ERROR_CODE_INVALID_RESPONSE, "null bundle returned"); } else { response.onResult(result); diff --git a/core/java/android/accounts/AccountsException.java b/core/java/android/accounts/AccountsException.java new file mode 100644 index 0000000..b997390 --- /dev/null +++ b/core/java/android/accounts/AccountsException.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.accounts; + +public class AccountsException extends Exception { + public AccountsException() { + super(); + } + public AccountsException(String message) { + super(message); + } + public AccountsException(String message, Throwable cause) { + super(message, cause); + } + public AccountsException(Throwable cause) { + super(cause); + } +}
\ No newline at end of file diff --git a/core/java/android/accounts/AuthenticatorException.java b/core/java/android/accounts/AuthenticatorException.java index 4023494..f778d7d 100644 --- a/core/java/android/accounts/AuthenticatorException.java +++ b/core/java/android/accounts/AuthenticatorException.java @@ -16,7 +16,7 @@ package android.accounts; -public class AuthenticatorException extends Exception { +public class AuthenticatorException extends AccountsException { public AuthenticatorException() { super(); } diff --git a/core/java/android/accounts/ChooseAccountActivity.java b/core/java/android/accounts/ChooseAccountActivity.java index bd6f205..4a0018e 100644 --- a/core/java/android/accounts/ChooseAccountActivity.java +++ b/core/java/android/accounts/ChooseAccountActivity.java @@ -23,6 +23,9 @@ import android.widget.ListView; import android.view.View; import android.util.Log; +/** + * @hide + */ public class ChooseAccountActivity extends ListActivity { private static final String TAG = "AccountManager"; private Parcelable[] mAccounts = null; @@ -34,13 +37,13 @@ public class ChooseAccountActivity extends ListActivity { super.onCreate(savedInstanceState); if (savedInstanceState == null) { - mAccounts = getIntent().getParcelableArrayExtra(Constants.ACCOUNTS_KEY); + mAccounts = getIntent().getParcelableArrayExtra(AccountManager.KEY_ACCOUNTS); mAccountManagerResponse = - getIntent().getParcelableExtra(Constants.ACCOUNT_MANAGER_RESPONSE_KEY); + getIntent().getParcelableExtra(AccountManager.KEY_ACCOUNT_MANAGER_RESPONSE); } else { - mAccounts = savedInstanceState.getParcelableArray(Constants.ACCOUNTS_KEY); + mAccounts = savedInstanceState.getParcelableArray(AccountManager.KEY_ACCOUNTS); mAccountManagerResponse = - savedInstanceState.getParcelable(Constants.ACCOUNT_MANAGER_RESPONSE_KEY); + savedInstanceState.getParcelable(AccountManager.KEY_ACCOUNT_MANAGER_RESPONSE); } String[] mAccountNames = new String[mAccounts.length]; @@ -59,8 +62,8 @@ public class ChooseAccountActivity extends ListActivity { Account account = (Account) mAccounts[position]; Log.d(TAG, "selected account " + account); Bundle bundle = new Bundle(); - bundle.putString(Constants.ACCOUNT_NAME_KEY, account.name); - bundle.putString(Constants.ACCOUNT_TYPE_KEY, account.type); + bundle.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); + bundle.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); mResult = bundle; finish(); } @@ -70,7 +73,7 @@ public class ChooseAccountActivity extends ListActivity { if (mResult != null) { mAccountManagerResponse.onResult(mResult); } else { - mAccountManagerResponse.onError(Constants.ERROR_CODE_CANCELED, "canceled"); + mAccountManagerResponse.onError(AccountManager.ERROR_CODE_CANCELED, "canceled"); } } super.finish(); diff --git a/core/java/android/accounts/Constants.java b/core/java/android/accounts/Constants.java deleted file mode 100644 index 15b1773..0000000 --- a/core/java/android/accounts/Constants.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (C) 2009 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package android.accounts; - -public class Constants { - // this should never be instantiated - private Constants() {} - - public static final int ERROR_CODE_REMOTE_EXCEPTION = 1; - public static final int ERROR_CODE_NETWORK_ERROR = 3; - public static final int ERROR_CODE_CANCELED = 4; - public static final int ERROR_CODE_INVALID_RESPONSE = 5; - public static final int ERROR_CODE_UNSUPPORTED_OPERATION = 6; - public static final int ERROR_CODE_BAD_ARGUMENTS = 7; - public static final int ERROR_CODE_BAD_REQUEST = 8; - - public static final String ACCOUNTS_KEY = "accounts"; - public static final String AUTHENTICATOR_TYPES_KEY = "authenticator_types"; - public static final String USERDATA_KEY = "userdata"; - public static final String AUTHTOKEN_KEY = "authtoken"; - public static final String PASSWORD_KEY = "password"; - public static final String ACCOUNT_NAME_KEY = "authAccount"; - public static final String ACCOUNT_TYPE_KEY = "accountType"; - public static final String ERROR_CODE_KEY = "errorCode"; - public static final String ERROR_MESSAGE_KEY = "errorMessage"; - public static final String INTENT_KEY = "intent"; - public static final String BOOLEAN_RESULT_KEY = "booleanResult"; - public static final String ACCOUNT_AUTHENTICATOR_RESPONSE_KEY = "accountAuthenticatorResponse"; - public static final String ACCOUNT_MANAGER_RESPONSE_KEY = "accountManagerResponse"; - public static final String AUTH_FAILED_MESSAGE_KEY = "authFailedMessage"; - public static final String AUTH_TOKEN_LABEL_KEY = "authTokenLabelKey"; - - public static final String AUTHENTICATOR_INTENT_ACTION = - "android.accounts.AccountAuthenticator"; - public static final String AUTHENTICATOR_META_DATA_NAME = - "android.accounts.AccountAuthenticator"; - public static final String AUTHENTICATOR_ATTRIBUTES_NAME = "account-authenticator"; - - /** - * Action sent as a broadcast Intent by the AccountsService - * when accounts are added to and/or removed from the device's - * database. - */ - public static final String LOGIN_ACCOUNTS_CHANGED_ACTION = - "android.accounts.LOGIN_ACCOUNTS_CHANGED"; -} diff --git a/core/java/android/accounts/GrantCredentialsPermissionActivity.java b/core/java/android/accounts/GrantCredentialsPermissionActivity.java index e06afb4..e3ed2e9 100644 --- a/core/java/android/accounts/GrantCredentialsPermissionActivity.java +++ b/core/java/android/accounts/GrantCredentialsPermissionActivity.java @@ -121,7 +121,7 @@ public class GrantCredentialsPermissionActivity extends Activity implements View if (mResultBundle != null) { accountAuthenticatorResponse.onResult(mResultBundle); } else { - accountAuthenticatorResponse.onError(Constants.ERROR_CODE_CANCELED, "canceled"); + accountAuthenticatorResponse.onError(AccountManager.ERROR_CODE_CANCELED, "canceled"); } } super.finish(); diff --git a/core/java/android/accounts/IAccountAuthenticator.aidl b/core/java/android/accounts/IAccountAuthenticator.aidl index 1592eea..8860710 100644 --- a/core/java/android/accounts/IAccountAuthenticator.aidl +++ b/core/java/android/accounts/IAccountAuthenticator.aidl @@ -22,6 +22,7 @@ import android.os.Bundle; /** * Service that allows the interaction with an authentication server. + * @hide */ oneway interface IAccountAuthenticator { /** @@ -31,16 +32,10 @@ oneway interface IAccountAuthenticator { String authTokenType, in String[] requiredFeatures, in Bundle options); /** - * Checks that the account/password combination is valid. - * note -- deprecated - */ - void confirmPassword(in IAccountAuthenticatorResponse response, - in Account account, String password); - - /** * prompts the user for the credentials of the account */ - void confirmCredentials(in IAccountAuthenticatorResponse response, in Account account); + void confirmCredentials(in IAccountAuthenticatorResponse response, in Account account, + in Bundle options); /** * gets the password by either prompting the user or querying the IAccountManager diff --git a/core/java/android/accounts/IAccountAuthenticatorResponse.aidl b/core/java/android/accounts/IAccountAuthenticatorResponse.aidl index a9ac2f1..0c75e50 100644 --- a/core/java/android/accounts/IAccountAuthenticatorResponse.aidl +++ b/core/java/android/accounts/IAccountAuthenticatorResponse.aidl @@ -19,6 +19,7 @@ import android.os.Bundle; /** * The interface used to return responses from an {@link IAccountAuthenticator} + * @hide */ oneway interface IAccountAuthenticatorResponse { void onResult(in Bundle value); diff --git a/core/java/android/accounts/IAccountManager.aidl b/core/java/android/accounts/IAccountManager.aidl index 411952b..0e318c0 100644 --- a/core/java/android/accounts/IAccountManager.aidl +++ b/core/java/android/accounts/IAccountManager.aidl @@ -52,11 +52,5 @@ interface IAccountManager { void editProperties(in IAccountManagerResponse response, String accountType, boolean expectActivityLaunch); void confirmCredentials(in IAccountManagerResponse response, in Account account, - boolean expectActivityLaunch); - - /* - * @deprecated - */ - void confirmPassword(in IAccountManagerResponse response, in Account account, - String password); + in Bundle options, boolean expectActivityLaunch); } diff --git a/core/java/android/accounts/NetworkErrorException.java b/core/java/android/accounts/NetworkErrorException.java index f855cc8..07f4ce9 100644 --- a/core/java/android/accounts/NetworkErrorException.java +++ b/core/java/android/accounts/NetworkErrorException.java @@ -15,7 +15,7 @@ */ package android.accounts; -public class NetworkErrorException extends Exception { +public class NetworkErrorException extends AccountsException { public NetworkErrorException() { super(); } diff --git a/core/java/android/accounts/OnAccountsUpdatedListener.java b/core/java/android/accounts/OnAccountsUpdateListener.java index bd249d0..38b371d 100644 --- a/core/java/android/accounts/OnAccountsUpdatedListener.java +++ b/core/java/android/accounts/OnAccountsUpdateListener.java @@ -19,7 +19,7 @@ package android.accounts; /** * An interface that contains the callback used by the AccountMonitor */ -public interface OnAccountsUpdatedListener { +public interface OnAccountsUpdateListener { /** * This invoked when the AccountMonitor starts up and whenever the account * set changes. diff --git a/core/java/android/accounts/OperationCanceledException.java b/core/java/android/accounts/OperationCanceledException.java index 2f2c164..896d194 100644 --- a/core/java/android/accounts/OperationCanceledException.java +++ b/core/java/android/accounts/OperationCanceledException.java @@ -15,7 +15,7 @@ */ package android.accounts; -public class OperationCanceledException extends Exception { +public class OperationCanceledException extends AccountsException { public OperationCanceledException() { super(); } diff --git a/core/java/android/content/AbstractSyncableContentProvider.java b/core/java/android/content/AbstractSyncableContentProvider.java index fc3acc5..eba8715 100644 --- a/core/java/android/content/AbstractSyncableContentProvider.java +++ b/core/java/android/content/AbstractSyncableContentProvider.java @@ -4,7 +4,7 @@ import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase; import android.database.Cursor; import android.net.Uri; -import android.accounts.OnAccountsUpdatedListener; +import android.accounts.OnAccountsUpdateListener; import android.accounts.Account; import android.accounts.AccountManager; import android.provider.SyncConstValue; @@ -160,7 +160,7 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro mDatabaseName); mSyncState = new SyncStateContentProviderHelper(mOpenHelper); AccountManager.get(getContext()).addOnAccountsUpdatedListener( - new OnAccountsUpdatedListener() { + new OnAccountsUpdateListener() { public void onAccountsUpdated(Account[] accounts) { // Some providers override onAccountsChanged(); give them a database to // work with. diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index 5376f78..3877f16 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -23,7 +23,7 @@ import com.android.internal.util.ArrayUtils; import android.accounts.Account; import android.accounts.AccountManager; -import android.accounts.OnAccountsUpdatedListener; +import android.accounts.OnAccountsUpdateListener; import android.app.AlarmManager; import android.app.Notification; import android.app.NotificationManager; @@ -78,7 +78,7 @@ import java.util.concurrent.CountDownLatch; /** * @hide */ -class SyncManager implements OnAccountsUpdatedListener { +class SyncManager implements OnAccountsUpdateListener { private static final String TAG = "SyncManager"; // used during dumping of the Sync history diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index d0621e7..7d6f158 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -331,7 +331,7 @@ <!-- Allows applications to call into AccountAuthenticators. Only the system can get this permission. --> - <permission android:name="android.permission.ACCOUNT_MANAGER_SERVICE" + <permission android:name="android.permission.ACCOUNT_MANAGER" android:permissionGroup="android.permission-group.ACCOUNTS" android:protectionLevel="signature" android:description="@string/permdesc_accountManagerService" diff --git a/test-runner/android/test/IsolatedContext.java b/test-runner/android/test/IsolatedContext.java index 5c66169..485e45c 100644 --- a/test-runner/android/test/IsolatedContext.java +++ b/test-runner/android/test/IsolatedContext.java @@ -3,7 +3,7 @@ package android.test; import com.google.android.collect.Lists; import android.accounts.AccountManager; -import android.accounts.OnAccountsUpdatedListener; +import android.accounts.OnAccountsUpdateListener; import android.accounts.Account; import android.content.ContextWrapper; import android.content.ContentResolver; @@ -15,7 +15,6 @@ import android.content.IntentFilter; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Handler; -import android.os.Looper; import java.util.List; import java.io.File; @@ -98,7 +97,7 @@ public class IsolatedContext extends ContextWrapper { super(IsolatedContext.this, null /* IAccountManager */, null /* handler */); } - public void addOnAccountsUpdatedListener(OnAccountsUpdatedListener listener, + public void addOnAccountsUpdatedListener(OnAccountsUpdateListener listener, Handler handler, boolean updateImmediately) { // do nothing } |