181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin/* 281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * Copyright (C) 2017 The Android Open Source Project 381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * 481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * Licensed under the Apache License, Version 2.0 (the "License"); 581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * you may not use this file except in compliance with the License. 681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * You may obtain a copy of the License at 781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * 881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * http://www.apache.org/licenses/LICENSE-2.0 981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * 1081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * Unless required by applicable law or agreed to in writing, software 1181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * distributed under the License is distributed on an "AS IS" BASIS, 1281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * See the License for the specific language governing permissions and 1481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * limitations under the License. 1581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin */ 1681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinpackage com.android.server.accounts; 1781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 1881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.accounts.AbstractAccountAuthenticator; 1981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.accounts.Account; 2081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.accounts.AccountAuthenticatorResponse; 2181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.accounts.AccountManager; 2281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.accounts.NetworkErrorException; 2381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.content.Context; 2481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.content.Intent; 2581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport android.os.Bundle; 2681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 2781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport com.android.frameworks.servicestests.R; 2881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 2981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinimport java.util.concurrent.atomic.AtomicInteger; 3081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 3181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin/** 3281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin * This authenticator is to mock account authenticator to test AccountManagerService. 3381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin */ 3481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jinpublic class TestAccountType1Authenticator extends AbstractAccountAuthenticator { 3581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin private final AtomicInteger mTokenCounter = new AtomicInteger(0); 3681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 3781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin private final String mAccountType; 3881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin private final Context mContext; 3981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 4081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public TestAccountType1Authenticator(Context context, String accountType) { 4181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin super(context); 4281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin mAccountType = accountType; 4381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin mContext = context; 4481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 4581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 4681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 4781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle editProperties(AccountAuthenticatorResponse response, String accountType) { 48a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Bundle result = new Bundle(); 49a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_NAME, 50a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS); 51a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_TYPE, 52a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); 53a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString( 54a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.KEY_AUTHTOKEN, 55a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 56a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin return result; 5781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 5881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 5981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 6081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle addAccount( 6181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 6281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String accountType, 6381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String authTokenType, 6481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String[] requiredFeatures, 6581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle options) throws NetworkErrorException { 6681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (!mAccountType.equals(accountType)) { 6781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 6881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 69a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin String accountName = null; 70a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 71a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (options != null) { 72a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin accountName = options.getString(AccountManagerServiceTestFixtures.KEY_ACCOUNT_NAME); 73a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 7481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 7581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle result = new Bundle(); 76a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (accountName.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 77a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // fill bundle with a success result. 78a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_NAME, accountName); 79a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_TYPE, mAccountType); 80a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_AUTHTOKEN, 81a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 82a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putParcelable(AccountManagerServiceTestFixtures.KEY_OPTIONS_BUNDLE, options); 83a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else if (accountName.equals( 84a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 85a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Specify data to be returned by the eventual activity. 86a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent eventualActivityResultData = new Intent(); 87a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, accountName); 88a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, accountType); 89a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Fill result with Intent. 90a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 91a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, eventualActivityResultData); 92a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 93a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 94a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 95a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else { 96a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin fillResultWithError( 97a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result, 98a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.ERROR_CODE_INVALID_RESPONSE, 99a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ERROR_MESSAGE); 100a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 10181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin return result; 10281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 10381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 10481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 10581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle confirmCredentials( 10681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 10781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Account account, 10881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle options) throws NetworkErrorException { 109a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (!mAccountType.equals(account.type)) { 110a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 111a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 112a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Bundle result = new Bundle(); 113a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 114a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 115a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // fill bundle with a success result. 116a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); 117a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); 118a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); 119a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 120a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Specify data to be returned by the eventual activity. 121a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent eventualActivityResultData = new Intent(); 122a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_BOOLEAN_RESULT, true); 123a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name); 124a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type); 125a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 126a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Fill result with Intent. 127a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 128a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, 129a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData); 130a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 131a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 132a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 133a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else { 134a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // fill with error 135a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin fillResultWithError( 136a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result, 137a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.ERROR_CODE_INVALID_RESPONSE, 138a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ERROR_MESSAGE); 139a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 140a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin return result; 14181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 14281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 14381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 14481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle getAuthToken( 14581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 14681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Account account, 14781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String authTokenType, 14881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle options) throws NetworkErrorException { 149a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (!mAccountType.equals(account.type)) { 150a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 151a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 152a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Bundle result = new Bundle(); 153a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 154a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin long expiryMillis = (options == null) 155a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin ? 0 : options.getLong(AccountManagerServiceTestFixtures.KEY_TOKEN_EXPIRY); 156a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 157a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // fill bundle with a success result. 158a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString( 159a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.KEY_AUTHTOKEN, AccountManagerServiceTestFixtures.AUTH_TOKEN); 160a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putLong( 161a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY, 162a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin expiryMillis); 163a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); 164a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); 165a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 166a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Specify data to be returned by the eventual activity. 167a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent eventualActivityResultData = new Intent(); 168a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra( 169a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.KEY_AUTHTOKEN, AccountManagerServiceTestFixtures.AUTH_TOKEN); 170a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra( 171a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AbstractAccountAuthenticator.KEY_CUSTOM_TOKEN_EXPIRY, 172a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin expiryMillis); 173a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name); 174a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type); 175a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 176a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Fill result with Intent. 177a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 178a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, 179a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData); 180a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 181a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 182a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 183a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 184a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else { 185a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin fillResultWithError( 186a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result, 187a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.ERROR_CODE_INVALID_RESPONSE, 188a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ERROR_MESSAGE); 189a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 190a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin return result; 19181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 19281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 19381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 19481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public String getAuthTokenLabel(String authTokenType) { 195a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin return AccountManagerServiceTestFixtures.AUTH_TOKEN_LABEL; 19681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 19781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 19881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 19981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle updateCredentials( 20081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 20181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Account account, 20281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String authTokenType, 20381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle options) throws NetworkErrorException { 20481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (!mAccountType.equals(account.type)) { 20581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 20681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 20781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle result = new Bundle(); 208a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 209a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 210a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // fill bundle with a success result. 211a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); 212a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_TYPE, account.type); 213a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 214a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Specify data to be returned by the eventual activity. 215a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent eventualActivityResultData = new Intent(); 216a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name); 217a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type); 218a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 219a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // Fill result with Intent. 220a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 221a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, 222a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin eventualActivityResultData); 223a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 224a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 225a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 226a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else { 227a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // fill with error 228a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin fillResultWithError( 229a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result, 230a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManager.ERROR_CODE_INVALID_RESPONSE, 231a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ERROR_MESSAGE); 232a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 23381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin return result; 23481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 23581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 23681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 23781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle hasFeatures( 23881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 23981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Account account, 24081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String[] features) throws NetworkErrorException { 241a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Bundle result = new Bundle(); 242a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 2438c505dbacb65ac8bd11b1061657c1a3b5abe1be2Hongming Jin // fill bundle with true. 244a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); 245f29d549c2d16f377fe11261b98d77d2c9db1070csunjian } else if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS_2)) { 246f29d549c2d16f377fe11261b98d77d2c9db1070csunjian result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); 2478c505dbacb65ac8bd11b1061657c1a3b5abe1be2Hongming Jin } else if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 2488c505dbacb65ac8bd11b1061657c1a3b5abe1be2Hongming Jin // fill bundle with false. 2498c505dbacb65ac8bd11b1061657c1a3b5abe1be2Hongming Jin result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, false); 250a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else { 251a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin // return null for error 252a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result = null; 253a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 254a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 255a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin response.onResult(result); 256a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin return null; 25781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 25881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 25981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 26081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle startAddAccountSession( 26181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 26281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String accountType, 26381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String authTokenType, 26481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String[] requiredFeatures, 26581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle options) throws NetworkErrorException { 26681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (!mAccountType.equals(accountType)) { 26781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 26881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 26981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 27081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String accountName = null; 27181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle sessionBundle = null; 27281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String password = null; 27381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (options != null) { 27481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin accountName = options.getString(AccountManagerServiceTestFixtures.KEY_ACCOUNT_NAME); 27581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin sessionBundle = options.getBundle( 27681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.KEY_ACCOUNT_SESSION_BUNDLE); 27781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin password = options.getString(AccountManagerServiceTestFixtures.KEY_ACCOUNT_PASSWORD); 27881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 27981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 28081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle result = new Bundle(); 28181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (accountName.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 28281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill bundle with a success result. 28381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putBundle(AccountManager.KEY_ACCOUNT_SESSION_BUNDLE, sessionBundle); 28481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_STATUS_TOKEN, 28581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_STATUS_TOKEN); 28681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_PASSWORD, password); 28781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_AUTHTOKEN, 28881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 28981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else if (accountName.equals( 29081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 29181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // Specify data to be returned by the eventual activity. 29281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Intent eventualActivityResultData = new Intent(); 29381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_AUTHTOKEN, 29481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 29581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_STATUS_TOKEN, 29681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_STATUS_TOKEN); 29781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_PASSWORD, password); 29881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_SESSION_BUNDLE, 29981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin sessionBundle); 30081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // Fill result with Intent. 30181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 30281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, 30381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData); 30481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 30581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 30681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 30781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else { 30881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill with error 30981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin fillResultWithError(result, options); 31081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 31181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 31281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin return result; 31381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 31481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 31581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 31681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle startUpdateCredentialsSession( 31781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountAuthenticatorResponse response, 31881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Account account, 31981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String authTokenType, 32081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle options) 32181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin throws NetworkErrorException { 32281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 32381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (!mAccountType.equals(account.type)) { 32481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 32581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 32681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 32781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String accountName = null; 32881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle sessionBundle = null; 32981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (options != null) { 33081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin accountName = options.getString(AccountManagerServiceTestFixtures.KEY_ACCOUNT_NAME); 33181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin sessionBundle = options.getBundle( 33281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.KEY_ACCOUNT_SESSION_BUNDLE); 33381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 33481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 33581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle result = new Bundle(); 33681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (accountName.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 33781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill bundle with a success result. 33881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putBundle(AccountManager.KEY_ACCOUNT_SESSION_BUNDLE, sessionBundle); 33981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_STATUS_TOKEN, 34081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_STATUS_TOKEN); 341c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin result.putString(AccountManager.KEY_PASSWORD, 342c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin AccountManagerServiceTestFixtures.ACCOUNT_PASSWORD); 34381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_AUTHTOKEN, 34481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 34581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else if (accountName.equals( 34681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 34781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // Specify data to be returned by the eventual activity. 34881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Intent eventualActivityResultData = new Intent(); 34981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_AUTHTOKEN, 35081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 35181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_STATUS_TOKEN, 35281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_STATUS_TOKEN); 35381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_PASSWORD, 35481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_PASSWORD); 35581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_SESSION_BUNDLE, 35681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin sessionBundle); 35781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // Fill result with Intent. 35881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 35981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, 36081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData); 36181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 36281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 36381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 36481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else { 36581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill with error 36681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin fillResultWithError(result, options); 36781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 36881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin return result; 36981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 37081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 37181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 37281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle finishSession(AccountAuthenticatorResponse response, 37381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String accountType, 37481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle sessionBundle) throws NetworkErrorException { 37581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 37681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (!mAccountType.equals(accountType)) { 37781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin throw new IllegalArgumentException("Request to the wrong authenticator!"); 37881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 37981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 38081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String accountName = null; 38181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (sessionBundle != null) { 38281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin accountName = sessionBundle.getString( 38381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.KEY_ACCOUNT_NAME); 38481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 38581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 38681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle result = new Bundle(); 38781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (accountName.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 388c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin // add sessionBundle into result for verification purpose 389c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin result.putBundle(AccountManager.KEY_ACCOUNT_SESSION_BUNDLE, sessionBundle); 39081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill bundle with a success result. 39181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_NAME, 39281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME); 39381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_ACCOUNT_TYPE, 39481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); 39581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_AUTHTOKEN, 39681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 39781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else if (accountName.equals( 39881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 39981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // Specify data to be returned by the eventual activity. 40081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Intent eventualActivityResultData = new Intent(); 40181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_NAME, 40281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME); 40381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_ACCOUNT_TYPE, 40481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); 40581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData.putExtra(AccountManager.KEY_AUTHTOKEN, 40681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Integer.toString(mTokenCounter.incrementAndGet())); 40781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 40881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // Fill result with Intent. 40981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 41081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_RESULT, 41181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin eventualActivityResultData); 41281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin intent.putExtra(AccountManagerServiceTestFixtures.KEY_CALLBACK, response); 41381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 41481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 41581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else { 41681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill with error 41781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin fillResultWithError(result, sessionBundle); 41881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 41981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin return result; 42081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 42181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 42281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin @Override 42381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin public Bundle isCredentialsUpdateSuggested( 42481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin final AccountAuthenticatorResponse response, 42581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Account account, 42681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String statusToken) throws NetworkErrorException { 42781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 42881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin Bundle result = new Bundle(); 42981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 43081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill bundle with a success result. 43181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); 43281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } else { 43381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin // fill with error 43481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin fillResultWithError( 435c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin result, 436c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin AccountManager.ERROR_CODE_INVALID_RESPONSE, 437c1a892a967a902ba0407f206aede78b0a2c49e1eHongming Jin AccountManagerServiceTestFixtures.ERROR_MESSAGE); 43881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 43981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 44081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin response.onResult(result); 44181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin return null; 44281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 44381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 444a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin @Override 445a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin public Bundle getAccountRemovalAllowed( 446a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountAuthenticatorResponse response, Account account) throws NetworkErrorException { 447a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Bundle result = new Bundle(); 448a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin if (account.name.equals(AccountManagerServiceTestFixtures.ACCOUNT_NAME_SUCCESS)) { 449a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); 450a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else if (account.name.equals( 451a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin AccountManagerServiceTestFixtures.ACCOUNT_NAME_INTERVENE)) { 452a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin Intent intent = new Intent(mContext, AccountAuthenticatorDummyActivity.class); 453a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putParcelable(AccountManager.KEY_INTENT, intent); 454a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } else { 455a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, false); 456a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 457a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin return result; 458a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin } 459a0c4d1d6bfd026de36a542d6d5cd82cd12740ee5Hongming Jin 46081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin private void fillResultWithError(Bundle result, Bundle options) { 46181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin int errorCode = AccountManager.ERROR_CODE_INVALID_RESPONSE; 46281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin String errorMsg = "Default Error Message"; 46381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin if (options != null) { 46481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin errorCode = options.getInt(AccountManager.KEY_ERROR_CODE); 46581c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin errorMsg = options.getString(AccountManager.KEY_ERROR_MESSAGE); 46681c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 46781c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin fillResultWithError(result, errorCode, errorMsg); 46881c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 46981c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin 47081c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin private void fillResultWithError(Bundle result, int errorCode, String errorMsg) { 47181c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putInt(AccountManager.KEY_ERROR_CODE, errorCode); 47281c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin result.putString(AccountManager.KEY_ERROR_MESSAGE, errorMsg); 47381c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin } 47481c4c8af206624f902efbd913fc3b26bb6842307Hongming Jin}