1/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.accounts;
18
19import android.accounts.IAccountAuthenticatorResponse;
20import android.accounts.Account;
21import android.os.Bundle;
22
23/**
24 * Service that allows the interaction with an authentication server.
25 * @hide
26 */
27oneway interface IAccountAuthenticator {
28    /**
29     * prompts the user for account information and adds the result to the IAccountManager
30     */
31    void addAccount(in IAccountAuthenticatorResponse response, String accountType,
32        String authTokenType, in String[] requiredFeatures, in Bundle options);
33
34    /**
35     * prompts the user for the credentials of the account
36     */
37    void confirmCredentials(in IAccountAuthenticatorResponse response, in Account account,
38        in Bundle options);
39
40    /**
41     * gets the password by either prompting the user or querying the IAccountManager
42     */
43    void getAuthToken(in IAccountAuthenticatorResponse response, in Account account,
44        String authTokenType, in Bundle options);
45
46    /**
47     * Gets the user-visible label of the given authtoken type.
48     */
49    void getAuthTokenLabel(in IAccountAuthenticatorResponse response, String authTokenType);
50
51    /**
52     * prompts the user for a new password and writes it to the IAccountManager
53     */
54    void updateCredentials(in IAccountAuthenticatorResponse response, in Account account,
55        String authTokenType, in Bundle options);
56
57    /**
58     * launches an activity that lets the user edit and set the properties for an authenticator
59     */
60    void editProperties(in IAccountAuthenticatorResponse response, String accountType);
61
62    /**
63     * returns a Bundle where the boolean value BOOLEAN_RESULT_KEY is set if the account has the
64     * specified features
65     */
66    void hasFeatures(in IAccountAuthenticatorResponse response, in Account account,
67        in String[] features);
68
69    /**
70     * Gets whether or not the account is allowed to be removed.
71     */
72    void getAccountRemovalAllowed(in IAccountAuthenticatorResponse response, in Account account);
73}
74