105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha/*
205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * Copyright (C) 2014 The Android Open Source Project
305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha *
405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * Licensed under the Apache License, Version 2.0 (the "License");
505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * you may not use this file except in compliance with the License.
605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * You may obtain a copy of the License at
705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha *
805274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha *      http://www.apache.org/licenses/LICENSE-2.0
905274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha *
1005274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * Unless required by applicable law or agreed to in writing, software
1105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * distributed under the License is distributed on an "AS IS" BASIS,
1205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * See the License for the specific language governing permissions and
1405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * limitations under the License.
1505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha */
1605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
1705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthapackage com.android.inputmethod.latin.accounts;
1805274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
1905274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.accounts.Account;
2005274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.accounts.AccountManager;
2105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.accounts.AccountManagerCallback;
2205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.accounts.AccountManagerFuture;
2305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.accounts.AuthenticatorException;
2405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.accounts.OperationCanceledException;
2505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.content.Context;
2605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.os.Bundle;
2705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport android.os.Handler;
2805274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
2905274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthaimport java.io.IOException;
3005274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
3105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha/**
3205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha * Utility class that handles generation/invalidation of auth tokens in the app.
3305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha */
3405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddharthapublic class AuthUtils {
3505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    private final AccountManager mAccountManager;
3605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
3705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    public AuthUtils(Context context) {
3805274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha        mAccountManager = AccountManager.get(context);
3905274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    }
4005274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
4105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    /**
4205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     * @see AccountManager#invalidateAuthToken(String, String)
4305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     */
4405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    public void invalidateAuthToken(final String accountType, final String authToken) {
4505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha        mAccountManager.invalidateAuthToken(accountType, authToken);
4605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    }
4705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
4805274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    /**
4905274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     * @see AccountManager#getAuthToken(
5005274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     *              Account, String, Bundle, boolean, AccountManagerCallback, Handler)
5105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     */
5205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    public AccountManagerFuture<Bundle> getAuthToken(final Account account,
5305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha            final String authTokenType, final Bundle options, final boolean notifyAuthFailure,
5405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha            final AccountManagerCallback<Bundle> callback, final Handler handler) {
5505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha        return mAccountManager.getAuthToken(account, authTokenType, options, notifyAuthFailure,
5605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha                callback, handler);
5705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    }
5805274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha
5905274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    /**
6005274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     * @see AccountManager#blockingGetAuthToken(Account, String, boolean)
6105274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha     */
6205274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    public String blockingGetAuthToken(final Account account, final String authTokenType,
6305274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha            final boolean notifyAuthFailure) throws OperationCanceledException,
6405274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha            AuthenticatorException, IOException {
6505274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha        return mAccountManager.blockingGetAuthToken(account, authTokenType, notifyAuthFailure);
6605274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha    }
6705274d5a0d9ba6559e5f7c5ce82179b01cda2851Sandeep Siddhartha}
68