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 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.accounts; 18603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 1956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.app.Notification; 2056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.content.Context; 2156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.content.pm.PackageManager; 2256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.content.pm.RegisteredServicesCache.ServiceInfo; 2356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.content.pm.RegisteredServicesCacheListener; 2456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.os.Bundle; 2556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.os.Handler; 26603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport android.test.AndroidTestCase; 27603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport android.test.IsolatedContext; 2856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.test.RenamingDelegatingContext; 29603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport android.test.mock.MockContentResolver; 3056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.test.mock.MockContext; 3156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport android.test.mock.MockPackageManager; 32603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 3356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport java.io.FileDescriptor; 3456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport java.io.PrintWriter; 3556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport java.util.ArrayList; 36603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport java.util.Arrays; 3756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintanaimport java.util.Collection; 38603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanaimport java.util.Comparator; 39603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 40603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintanapublic class AccountManagerServiceTest extends AndroidTestCase { 4156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana private AccountManagerService mAms; 4256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 43603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana @Override 44603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana protected void setUp() throws Exception { 45603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana final String filenamePrefix = "test."; 46603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana MockContentResolver resolver = new MockContentResolver(); 47603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana RenamingDelegatingContext targetContextWrapper = new RenamingDelegatingContext( 4856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana new MyMockContext(), // The context that most methods are delegated to 49603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana getContext(), // The context that file methods are delegated to 50603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana filenamePrefix); 51603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Context context = new IsolatedContext(resolver, targetContextWrapper); 52603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana setContext(context); 5356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms = new MyAccountManagerService(getContext(), 5456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana new MyMockPackageManager(), new MockAccountAuthenticatorCache()); 55603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 56603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 57603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public class AccountSorter implements Comparator<Account> { 58603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public int compare(Account object1, Account object2) { 59603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana if (object1 == object2) return 0; 60603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana if (object1 == null) return 1; 61603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana if (object2 == null) return -1; 623710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana int result = object1.type.compareTo(object2.type); 63603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana if (result != 0) return result; 643710f390968e683a0ad3adf0b517dfcade3564ceFred Quintana return object1.name.compareTo(object2.name); 65603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 66603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 67603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 68603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public void testCheckAddAccount() throws Exception { 69603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a11 = new Account("account1", "type1"); 70603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a21 = new Account("account2", "type1"); 71603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a31 = new Account("account3", "type1"); 72603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a12 = new Account("account1", "type2"); 73603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a22 = new Account("account2", "type2"); 74603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a32 = new Account("account3", "type2"); 7556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a11, "p11", null); 7656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a12, "p12", null); 7756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a21, "p21", null); 7856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a22, "p22", null); 7956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a31, "p31", null); 8056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a32, "p32", null); 8156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 8256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana Account[] accounts = mAms.getAccounts(null); 83603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Arrays.sort(accounts, new AccountSorter()); 84603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(6, accounts.length); 85603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a11, accounts[0]); 86603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a21, accounts[1]); 87603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a31, accounts[2]); 88603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a12, accounts[3]); 89603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a22, accounts[4]); 90603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a32, accounts[5]); 91603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 9256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana accounts = mAms.getAccounts("type1" ); 93603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Arrays.sort(accounts, new AccountSorter()); 94603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(3, accounts.length); 95603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a11, accounts[0]); 96603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a21, accounts[1]); 97603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a31, accounts[2]); 98603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 99f9f240e3ad5ff5eeaa32fbb2dd65ef7f3b06af32Fred Quintana mAms.removeAccountInternal(a21); 100603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 10156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana accounts = mAms.getAccounts("type1" ); 102603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Arrays.sort(accounts, new AccountSorter()); 103603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(2, accounts.length); 104603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a11, accounts[0]); 105603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana assertEquals(a31, accounts[1]); 106603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 107603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 108603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public void testPasswords() throws Exception { 109603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a11 = new Account("account1", "type1"); 110603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a12 = new Account("account1", "type2"); 11156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a11, "p11", null); 11256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a12, "p12", null); 113603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 11456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("p11", mAms.getPassword(a11)); 11556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("p12", mAms.getPassword(a12)); 116603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 11756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setPassword(a11, "p11b"); 118603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 11956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("p11b", mAms.getPassword(a11)); 12056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("p12", mAms.getPassword(a12)); 121603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 122603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 123603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public void testUserdata() throws Exception { 124603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a11 = new Account("account1", "type1"); 125603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Bundle u11 = new Bundle(); 126603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana u11.putString("a", "a_a11"); 127603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana u11.putString("b", "b_a11"); 128603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana u11.putString("c", "c_a11"); 129603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a12 = new Account("account1", "type2"); 130603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Bundle u12 = new Bundle(); 131603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana u12.putString("a", "a_a12"); 132603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana u12.putString("b", "b_a12"); 133603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana u12.putString("c", "c_a12"); 13456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a11, "p11", u11); 13556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a12, "p12", u12); 13656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 13756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a_a11", mAms.getUserData(a11, "a")); 13856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("b_a11", mAms.getUserData(a11, "b")); 13956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("c_a11", mAms.getUserData(a11, "c")); 14056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a_a12", mAms.getUserData(a12, "a")); 14156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("b_a12", mAms.getUserData(a12, "b")); 14256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("c_a12", mAms.getUserData(a12, "c")); 14356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 14456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setUserData(a11, "b", "b_a11b"); 14556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setUserData(a12, "c", null); 14656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 14756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a_a11", mAms.getUserData(a11, "a")); 14856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("b_a11b", mAms.getUserData(a11, "b")); 14956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("c_a11", mAms.getUserData(a11, "c")); 15056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a_a12", mAms.getUserData(a12, "a")); 15156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("b_a12", mAms.getUserData(a12, "b")); 15256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertNull(mAms.getUserData(a12, "c")); 153603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 154603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana 155603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana public void testAuthtokens() throws Exception { 156603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a11 = new Account("account1", "type1"); 157603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana Account a12 = new Account("account1", "type2"); 15856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a11, "p11", null); 15956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.addAccount(a12, "p12", null); 16056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 16156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a11, "att1", "a11_att1"); 16256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a11, "att2", "a11_att2"); 16356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a11, "att3", "a11_att3"); 16456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a12, "att1", "a12_att1"); 16556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a12, "att2", "a12_att2"); 16656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a12, "att3", "a12_att3"); 16756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 16856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a11_att1", mAms.peekAuthToken(a11, "att1")); 16956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a11_att2", mAms.peekAuthToken(a11, "att2")); 17056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a11_att3", mAms.peekAuthToken(a11, "att3")); 17156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a12_att1", mAms.peekAuthToken(a12, "att1")); 17256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a12_att2", mAms.peekAuthToken(a12, "att2")); 17356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a12_att3", mAms.peekAuthToken(a12, "att3")); 17456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 17556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.setAuthToken(a11, "att3", "a11_att3b"); 17656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mAms.invalidateAuthToken(a12.type, "a12_att2"); 17756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 17856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a11_att1", mAms.peekAuthToken(a11, "att1")); 17956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a11_att2", mAms.peekAuthToken(a11, "att2")); 18056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a11_att3b", mAms.peekAuthToken(a11, "att3")); 18156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a12_att1", mAms.peekAuthToken(a12, "att1")); 18256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertNull(mAms.peekAuthToken(a12, "att2")); 18356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertEquals("a12_att3", mAms.peekAuthToken(a12, "att3")); 18456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 18556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana assertNull(mAms.peekAuthToken(a12, "att2")); 18656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 18756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 18856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana static public class MockAccountAuthenticatorCache implements IAccountAuthenticatorCache { 18956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana private ArrayList<ServiceInfo<AuthenticatorDescription>> mServices; 19056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 19156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public MockAccountAuthenticatorCache() { 19256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mServices = new ArrayList<ServiceInfo<AuthenticatorDescription>>(); 19356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana AuthenticatorDescription d1 = new AuthenticatorDescription("type1", "p1", 0, 0, 0, 0); 19456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana AuthenticatorDescription d2 = new AuthenticatorDescription("type2", "p2", 0, 0, 0, 0); 19556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mServices.add(new ServiceInfo<AuthenticatorDescription>(d1, null, 0)); 19656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana mServices.add(new ServiceInfo<AuthenticatorDescription>(d2, null, 0)); 19756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 19856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 19956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public ServiceInfo<AuthenticatorDescription> getServiceInfo(AuthenticatorDescription type) { 20056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana for (ServiceInfo<AuthenticatorDescription> service : mServices) { 20156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana if (service.type.equals(type)) { 20256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana return service; 20356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 20456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 20556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana return null; 20656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 20756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 20856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public Collection<ServiceInfo<AuthenticatorDescription>> getAllServices() { 20956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana return mServices; 21056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 21156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 21256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public void dump(final FileDescriptor fd, final PrintWriter fout, final String[] args) { 21356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 21456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 21556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public void setListener( 21656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana final RegisteredServicesCacheListener<AuthenticatorDescription> listener, 21756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana final Handler handler) { 21856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 21956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 22056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 22156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana static public class MyMockContext extends MockContext { 22256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana @Override 22356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public int checkCallingOrSelfPermission(final String permission) { 22456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana return PackageManager.PERMISSION_GRANTED; 22556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 22656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 22756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 22856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana static public class MyMockPackageManager extends MockPackageManager { 22956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana @Override 23056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public int checkSignatures(final int uid1, final int uid2) { 23156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana return PackageManager.SIGNATURE_MATCH; 23256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 23356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 23456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 23556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana static public class MyAccountManagerService extends AccountManagerService { 23656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana public MyAccountManagerService(Context context, PackageManager packageManager, 23756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana IAccountAuthenticatorCache authenticatorCache) { 23856285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana super(context, packageManager, authenticatorCache); 23956285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 24056285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 24156285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana @Override 24256285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana protected void installNotification(final int notificationId, final Notification n) { 24356285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 24456285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana 24556285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana @Override 24656285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana protected void cancelNotification(final int id) { 24756285a60e83138bb4b4f2d3bdec91b2f3ca11aa2Fred Quintana } 248603073430bbcb1bd29db7afb9b14e2732ad589fbFred Quintana } 2491a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyen} 250