12644d947574240b71c427d457f7a775dc160ec09Yorke Lee/* 22644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Copyright (C) 2010 The Android Open Source Project 32644d947574240b71c427d457f7a775dc160ec09Yorke Lee * 42644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Licensed under the Apache License, Version 2.0 (the "License"); 52644d947574240b71c427d457f7a775dc160ec09Yorke Lee * you may not use this file except in compliance with the License. 62644d947574240b71c427d457f7a775dc160ec09Yorke Lee * You may obtain a copy of the License at 72644d947574240b71c427d457f7a775dc160ec09Yorke Lee * 82644d947574240b71c427d457f7a775dc160ec09Yorke Lee * http://www.apache.org/licenses/LICENSE-2.0 92644d947574240b71c427d457f7a775dc160ec09Yorke Lee * 102644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Unless required by applicable law or agreed to in writing, software 112644d947574240b71c427d457f7a775dc160ec09Yorke Lee * distributed under the License is distributed on an "AS IS" BASIS, 122644d947574240b71c427d457f7a775dc160ec09Yorke Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132644d947574240b71c427d457f7a775dc160ec09Yorke Lee * See the License for the specific language governing permissions and 142644d947574240b71c427d457f7a775dc160ec09Yorke Lee * limitations under the License. 152644d947574240b71c427d457f7a775dc160ec09Yorke Lee */ 160a49afa2ad697307cc04ef4cb86570574fa720f2Gary Maipackage com.android.contacts.test.mocks; 172644d947574240b71c427d457f7a775dc160ec09Yorke Lee 1856c8a0cce9ea98e0f088e74474a57968a02810abWenyi Wangimport android.accounts.Account; 1956c8a0cce9ea98e0f088e74474a57968a02810abWenyi Wang 2069c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.AccountTypeManager; 2175895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerottimport com.android.contacts.model.account.AccountInfo; 2269c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.account.AccountType; 2369c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.account.AccountTypeWithDataSet; 2469c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.account.AccountWithDataSet; 2569c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.account.BaseAccountType; 262644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport com.google.common.base.Objects; 2767a0639c912ce5bed209d791f0bf8d09853bdbbdMarcus Hagerottimport com.google.common.base.Predicate; 2804be88c2bec8d0a0cc9e1f4f0af3b3a2ff8ac4e7Marcus Hagerottimport com.google.common.util.concurrent.ListenableFuture; 292644d947574240b71c427d457f7a775dc160ec09Yorke Lee 302644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport java.util.Arrays; 312644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport java.util.List; 322644d947574240b71c427d457f7a775dc160ec09Yorke Lee 332644d947574240b71c427d457f7a775dc160ec09Yorke Lee/** 342644d947574240b71c427d457f7a775dc160ec09Yorke Lee * A mock {@link AccountTypeManager} class. 352644d947574240b71c427d457f7a775dc160ec09Yorke Lee */ 362644d947574240b71c427d457f7a775dc160ec09Yorke Leepublic class MockAccountTypeManager extends AccountTypeManager { 372644d947574240b71c427d457f7a775dc160ec09Yorke Lee 382644d947574240b71c427d457f7a775dc160ec09Yorke Lee public AccountType[] mTypes; 392644d947574240b71c427d457f7a775dc160ec09Yorke Lee public AccountWithDataSet[] mAccounts; 402644d947574240b71c427d457f7a775dc160ec09Yorke Lee 412644d947574240b71c427d457f7a775dc160ec09Yorke Lee public MockAccountTypeManager(AccountType[] types, AccountWithDataSet[] accounts) { 422644d947574240b71c427d457f7a775dc160ec09Yorke Lee this.mTypes = types; 432644d947574240b71c427d457f7a775dc160ec09Yorke Lee this.mAccounts = accounts; 442644d947574240b71c427d457f7a775dc160ec09Yorke Lee } 452644d947574240b71c427d457f7a775dc160ec09Yorke Lee 462644d947574240b71c427d457f7a775dc160ec09Yorke Lee @Override 472644d947574240b71c427d457f7a775dc160ec09Yorke Lee public AccountType getAccountType(AccountTypeWithDataSet accountTypeWithDataSet) { 487958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu // Add fallback accountType to mimic the behavior of AccountTypeManagerImpl 497958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu AccountType mFallbackAccountType = new BaseAccountType() { 507958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu @Override 517958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu public boolean areContactsWritable() { 527958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu return false; 537958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu } 547958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu }; 557958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu mFallbackAccountType.accountType = "fallback"; 562644d947574240b71c427d457f7a775dc160ec09Yorke Lee for (AccountType type : mTypes) { 572644d947574240b71c427d457f7a775dc160ec09Yorke Lee if (Objects.equal(accountTypeWithDataSet.accountType, type.accountType) 582644d947574240b71c427d457f7a775dc160ec09Yorke Lee && Objects.equal(accountTypeWithDataSet.dataSet, type.dataSet)) { 592644d947574240b71c427d457f7a775dc160ec09Yorke Lee return type; 602644d947574240b71c427d457f7a775dc160ec09Yorke Lee } 612644d947574240b71c427d457f7a775dc160ec09Yorke Lee } 627958e584f79208156771671b3e1a102e2e2f47b4Zheng Fu return mFallbackAccountType; 632644d947574240b71c427d457f7a775dc160ec09Yorke Lee } 642644d947574240b71c427d457f7a775dc160ec09Yorke Lee 652644d947574240b71c427d457f7a775dc160ec09Yorke Lee @Override 66107cd7a225eccad56dfe12ca6d32908e651b27acMarcus Hagerott public List<AccountWithDataSet> blockForWritableAccounts() { 672644d947574240b71c427d457f7a775dc160ec09Yorke Lee return Arrays.asList(mAccounts); 682644d947574240b71c427d457f7a775dc160ec09Yorke Lee } 692644d947574240b71c427d457f7a775dc160ec09Yorke Lee 702644d947574240b71c427d457f7a775dc160ec09Yorke Lee @Override 7175895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerott public ListenableFuture<List<AccountInfo>> getAccountsAsync() { 7275895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerott throw new UnsupportedOperationException("not implemented"); 7367a0639c912ce5bed209d791f0bf8d09853bdbbdMarcus Hagerott } 7467a0639c912ce5bed209d791f0bf8d09853bdbbdMarcus Hagerott 7567a0639c912ce5bed209d791f0bf8d09853bdbbdMarcus Hagerott @Override 7675895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerott public ListenableFuture<List<AccountInfo>> filterAccountsAsync(Predicate<AccountInfo> filter) { 7775895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerott throw new UnsupportedOperationException("not implemented"); 7804be88c2bec8d0a0cc9e1f4f0af3b3a2ff8ac4e7Marcus Hagerott } 7904be88c2bec8d0a0cc9e1f4f0af3b3a2ff8ac4e7Marcus Hagerott 8004be88c2bec8d0a0cc9e1f4f0af3b3a2ff8ac4e7Marcus Hagerott @Override 8175895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerott public AccountInfo getAccountInfoForAccount(AccountWithDataSet account) { 8275895e73379aa26a3d4135c772af4ecb8a79b4c9Marcus Hagerott throw new UnsupportedOperationException("not implemented"); 83e7a71cbbe8929a9d8a7ca0a3b5668646d49a611aMarcus Hagerott } 84e7a71cbbe8929a9d8a7ca0a3b5668646d49a611aMarcus Hagerott 85e7a71cbbe8929a9d8a7ca0a3b5668646d49a611aMarcus Hagerott @Override 8656c8a0cce9ea98e0f088e74474a57968a02810abWenyi Wang public Account getDefaultGoogleAccount() { 8756c8a0cce9ea98e0f088e74474a57968a02810abWenyi Wang return null; 8856c8a0cce9ea98e0f088e74474a57968a02810abWenyi Wang } 892644d947574240b71c427d457f7a775dc160ec09Yorke Lee} 90