1603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana/*
2603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Copyright (C) 2009 The Android Open Source Project
3603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana *
4603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Licensed under the Apache License, Version 2.0 (the "License");
5603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * you may not use this file except in compliance with the License.
6603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * You may obtain a copy of the License at
7603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana *
8603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana *      http://www.apache.org/licenses/LICENSE-2.0
9603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana *
10603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * Unless required by applicable law or agreed to in writing, software
11603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * distributed under the License is distributed on an "AS IS" BASIS,
12603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * See the License for the specific language governing permissions and
14603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana * limitations under the License.
15603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana */
16603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
17603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanapackage android.accounts;
18603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
19a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintanaimport android.os.Bundle;
20a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintanaimport android.os.Parcelable;
21a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintanaimport android.os.Parcel;
22603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport android.os.RemoteException;
23f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintanaimport android.util.Log;
24603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
25603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana/**
2689c40f50347f8ec3128611a7d1c5e4e0eeb01fc2Fred Quintana * Object used to communicate responses back to the AccountManager
27603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana */
28a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintanapublic class AccountAuthenticatorResponse implements Parcelable {
29f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana    private static final String TAG = "AccountAuthenticator";
30f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana
31603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    private IAccountAuthenticatorResponse mAccountAuthenticatorResponse;
32603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
33f7ae77cd67f1a3993b8e56c1af4720a7adf4e69dFred Quintana    /**
34f7ae77cd67f1a3993b8e56c1af4720a7adf4e69dFred Quintana     * @hide
35f7ae77cd67f1a3993b8e56c1af4720a7adf4e69dFred Quintana     */
367a96c39c510923ef73bbb06ab20109f0168b8eb1Jeff Sharkey    public AccountAuthenticatorResponse(IAccountAuthenticatorResponse response) {
37603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        mAccountAuthenticatorResponse = response;
38603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    }
39603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
40a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    public AccountAuthenticatorResponse(Parcel parcel) {
41a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        mAccountAuthenticatorResponse =
42a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana                IAccountAuthenticatorResponse.Stub.asInterface(parcel.readStrongBinder());
43603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    }
44603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
45a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    public void onResult(Bundle result) {
46f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana        if (Log.isLoggable(TAG, Log.VERBOSE)) {
47f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana            result.keySet(); // force it to be unparcelled
48f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana            Log.v(TAG, "AccountAuthenticatorResponse.onResult: "
49f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana                    + AccountManager.sanitizeResult(result));
50f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana        }
51603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        try {
52a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana            mAccountAuthenticatorResponse.onResult(result);
53603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        } catch (RemoteException e) {
54603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana            // this should never happen
55603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        }
56603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    }
57603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
58a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    public void onRequestContinued() {
59f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana        if (Log.isLoggable(TAG, Log.VERBOSE)) {
60f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana            Log.v(TAG, "AccountAuthenticatorResponse.onRequestContinued");
61f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana        }
62603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        try {
63a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana            mAccountAuthenticatorResponse.onRequestContinued();
64603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        } catch (RemoteException e) {
65603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana            // this should never happen
66603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        }
67603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    }
68603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
69603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    public void onError(int errorCode, String errorMessage) {
70f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana        if (Log.isLoggable(TAG, Log.VERBOSE)) {
71f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana            Log.v(TAG, "AccountAuthenticatorResponse.onError: " + errorCode + ", " + errorMessage);
72f0fd8436b3ec2aa47cd5de61072b8395bbe46765Fred Quintana        }
73603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        try {
74603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana            mAccountAuthenticatorResponse.onError(errorCode, errorMessage);
75603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        } catch (RemoteException e) {
76603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana            // this should never happen
77603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana        }
78603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    }
79603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana
80a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    public int describeContents() {
81a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        return 0;
82a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    }
83a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana
84a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    public void writeToParcel(Parcel dest, int flags) {
85a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        dest.writeStrongBinder(mAccountAuthenticatorResponse.asBinder());
86603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana    }
87a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana
88a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    public static final Creator<AccountAuthenticatorResponse> CREATOR =
89a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana            new Creator<AccountAuthenticatorResponse>() {
90a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        public AccountAuthenticatorResponse createFromParcel(Parcel source) {
91a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana            return new AccountAuthenticatorResponse(source);
92a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        }
93a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana
94a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        public AccountAuthenticatorResponse[] newArray(int size) {
95a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana            return new AccountAuthenticatorResponse[size];
96a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana        }
97a698f4276968d078b1b9e2f3738c4f559a3307b2Fred Quintana    };
98603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana}
99