/* * CDDL HEADER START * * The contents of this file are subject to the terms of the Common Development * and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at * src/com/vodafone360/people/VODAFONE.LICENSE.txt or * http://github.com/360/360-Engine-for-Android * See the License for the specific language governing permissions and * limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each file and * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt. * If applicable, add the following below this CDDL HEADER, with the fields * enclosed by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved. * Use is subject to license terms. */ package com.vodafone360.people.tests.engine.contactsync; import java.util.List; import android.accounts.Account; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.os.Build; /** * Reflection helper for testing. */ public abstract class NativeContactsApiTestHelper { private static NativeContactsApiTestHelper sInstance; protected Context mContext; protected ContentResolver mCr; public interface IPeopleAccountChangeObserver { public void onPeopleAccountsChanged(int currentNumAccounts); } public static NativeContactsApiTestHelper getInstance(Context context) { if (sInstance == null) { String className; final int sdkVersion = Integer.parseInt(Build.VERSION.SDK); // get around fragmentation using "4" which is the same as referring to DONUT if(sdkVersion > 4) { className = "NativeContactsApiTestHelper2"; } else { className = "NativeContactsApiTestHelper1"; } try { Class<? extends NativeContactsApiTestHelper> clazz = Class.forName(NativeContactsApiTestHelper.class.getPackage().getName() + "." + className) .asSubclass(NativeContactsApiTestHelper.class); sInstance = clazz.newInstance(); } catch (Exception e) { throw new IllegalStateException(e); } sInstance.mContext = context; sInstance.mCr = context.getContentResolver(); } return sInstance; } abstract public void startObservingAccounts(IPeopleAccountChangeObserver observer); abstract public void wipeNab(); abstract public void wipeNabAccounts(); abstract public void wipeNabContacts(); //abstract public void addDefault360Account(Context context); //abstract public void add360Account(Context context, String userName); abstract public void populateNabContacts(); /** * Utility method to put the thread to sleep * @param time */ protected void threadSleep(int time) { try { synchronized(this) { Thread.sleep(time); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * Utility method to put the thread waiting * @param time */ protected void threadWait(int time) { try { synchronized(this) { wait(time); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }