package edu.vanderbilt.cs282.feisele.lab06.mock; import java.io.File; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import edu.vanderbilt.cs282.feisele.lab06.provider.DownloadContentProviderSchema; import edu.vanderbilt.cs282.feisele.lab06.provider.MockDownloadContentProvider; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.AssetManager; import android.content.res.Resources; import android.os.Bundle; import android.os.Handler; import android.test.mock.MockContentResolver; import android.test.mock.MockContext; public class MockContextRenaming extends MockContext { static final public Logger logger = LoggerFactory.getLogger("test.context,mock"); static final private String PREFIX = "test."; final private Context targetContext; final private Context testContext; public MockContextRenaming(Context context) throws NameNotFoundException { logger.info("mock context constructor"); this.targetContext = context; // (Context)getClass().getMethod("getTestContext").invoke(this); this.testContext = this.targetContext .createPackageContext("edu.vanderbilt.cs282.feisele.lab06.tests", Context.CONTEXT_IGNORE_SECURITY); } public String getDatabasePrefix() { return PREFIX; } /** * This could use some isolation. */ @Override public AssetManager getAssets() { try { final String[] targetAssets = this.targetContext.getAssets().list(""); logger.info("getting target assets {} {}", targetAssets.length, targetAssets); final String[] testAssets = this.testContext.getAssets().list(""); logger.info("getting test assets {} {}", testAssets.length, testAssets); } catch (IOException ex) { logger.error("could not get test assets", ex); } return this.testContext.getAssets(); } @Override public Resources getResources() { return this.targetContext.getResources(); } @Override public PackageManager getPackageManager() { throw new UnsupportedOperationException(); } @Override public ContentResolver getContentResolver() { final ContentProvider provider = MockDownloadContentProvider.getInstance(null); // Content resolver final MockContentResolver resolver = new MockContentResolver(); resolver.addProvider(DownloadContentProviderSchema.AUTHORITY, provider); return resolver; } // @Override // public Looper getMainLooper() { // throw new UnsupportedOperationException(); // } @Override public Context getApplicationContext() { return this.targetContext; } // @Override // public void setTheme(int resid) { // throw new UnsupportedOperationException(); // } // @Override // public Resources.Theme getTheme() { // throw new UnsupportedOperationException(); // } // @Override // public ClassLoader getClassLoader() { // throw new UnsupportedOperationException(); // } @Override public String getPackageName() { return this.targetContext.getPackageName(); } @Override public ApplicationInfo getApplicationInfo() { return this.targetContext.getApplicationInfo(); } // @Override // public String getPackageResourcePath() { // throw new UnsupportedOperationException(); // } // @Override // public String getPackageCodePath() { // throw new UnsupportedOperationException(); // } @Override public SharedPreferences getSharedPreferences(String name, int mode) { return this.targetContext.getSharedPreferences(name, mode); } // @Override // public FileInputStream openFileInput(String name) throws FileNotFoundException { // throw new UnsupportedOperationException(); // } // // @Override // public FileOutputStream openFileOutput(String name, int mode) throws FileNotFoundException { // throw new UnsupportedOperationException(); // } // // @Override // public boolean deleteFile(String name) { // throw new UnsupportedOperationException(); // } // // @Override // public File getFileStreamPath(String name) { // throw new UnsupportedOperationException(); // } // // @Override // public String[] fileList() { // throw new UnsupportedOperationException(); // } // // @Override // public File getFilesDir() { // throw new UnsupportedOperationException(); // } // // @Override // public File getExternalFilesDir(String type) { // throw new UnsupportedOperationException(); // } // // @Override // public File getCacheDir() { // throw new UnsupportedOperationException(); // } // // @Override // public File getExternalCacheDir() { // throw new UnsupportedOperationException(); // } @Override public File getDir(String name, int mode) { return this.targetContext.getDir(name, mode); } // @Override // public SQLiteDatabase openOrCreateDatabase(String file, int mode, // SQLiteDatabase.CursorFactory factory) { // throw new UnsupportedOperationException(); // } @Override public File getDatabasePath(String name) { return this.targetContext.getDatabasePath(name); } // @Override // public String[] databaseList() { // throw new UnsupportedOperationException(); // } // // @Override // public boolean deleteDatabase(String name) { // throw new UnsupportedOperationException(); // } // // @Override // public Drawable getWallpaper() { // throw new UnsupportedOperationException(); // } // // @Override // public Drawable peekWallpaper() { // throw new UnsupportedOperationException(); // } // // @Override // public int getWallpaperDesiredMinimumWidth() { // throw new UnsupportedOperationException(); // } // // @Override // public int getWallpaperDesiredMinimumHeight() { // throw new UnsupportedOperationException(); // } // // @Override // public void setWallpaper(Bitmap bitmap) throws IOException { // throw new UnsupportedOperationException(); // } // // @Override // public void setWallpaper(InputStream data) throws IOException { // throw new UnsupportedOperationException(); // } // // @Override // public void clearWallpaper() { // throw new UnsupportedOperationException(); // } @Override public void startActivity(Intent intent) { this.testContext.startActivity(intent); } // @Override // public void startIntentSender(IntentSender intent, // Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) // throws IntentSender.SendIntentException { // throw new UnsupportedOperationException(); // } @Override public void sendBroadcast(Intent intent) { this.testContext.sendBroadcast(intent); } // @Override // public void sendBroadcast(Intent intent, String receiverPermission) { // throw new UnsupportedOperationException(); // } // // @Override // public void sendOrderedBroadcast(Intent intent, // String receiverPermission) { // throw new UnsupportedOperationException(); // } // // @Override // public void sendOrderedBroadcast(Intent intent, String receiverPermission, // BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, // String initialData, // Bundle initialExtras) { // throw new UnsupportedOperationException(); // } @Override public void sendStickyBroadcast(Intent intent) { this.testContext.sendStickyBroadcast(intent); } @Override public void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { this.testContext.sendStickyOrderedBroadcast(intent, resultReceiver, scheduler, initialCode, initialData, initialExtras); } // @Override // public void removeStickyBroadcast(Intent intent) { // throw new UnsupportedOperationException(); // } @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { return this.targetContext.registerReceiver(receiver, filter); } @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler) { return this.targetContext.registerReceiver(receiver, filter, broadcastPermission, scheduler); } @Override public void unregisterReceiver(BroadcastReceiver receiver) { logger.info("unregister receiver", receiver); } @Override public ComponentName startService(Intent service) { logger.info("starting external service {}", service); return this.targetContext.startService(service); } // @Override // public boolean stopService(Intent service) { // throw new UnsupportedOperationException(); // } @Override public boolean bindService(Intent service, ServiceConnection conn, int flags) { logger.info("binding external service {}", service); return this.targetContext.bindService(service, conn, flags); } @Override public void unbindService(ServiceConnection conn) { //this.targetContext.unbindService(conn); } // @Override // public boolean startInstrumentation(ComponentName className, // String profileFile, Bundle arguments) { // throw new UnsupportedOperationException(); // } @Override public Object getSystemService(String name) { logger.info("get system service {}", name); return this.targetContext.getSystemService(name); } // @Override // public int checkPermission(String permission, int pid, int uid) { // throw new UnsupportedOperationException(); // } // // @Override // public int checkCallingPermission(String permission) { // throw new UnsupportedOperationException(); // } // // @Override // public int checkCallingOrSelfPermission(String permission) { // throw new UnsupportedOperationException(); // } // // @Override // public void enforcePermission( // String permission, int pid, int uid, String message) { // throw new UnsupportedOperationException(); // } // // @Override // public void enforceCallingPermission(String permission, String message) { // throw new UnsupportedOperationException(); // } // // @Override // public void enforceCallingOrSelfPermission(String permission, String message) { // throw new UnsupportedOperationException(); // } // // @Override // public void grantUriPermission(String toPackage, Uri uri, int modeFlags) { // throw new UnsupportedOperationException(); // } // // @Override // public void revokeUriPermission(Uri uri, int modeFlags) { // throw new UnsupportedOperationException(); // } // // @Override // public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) { // throw new UnsupportedOperationException(); // } // // @Override // public int checkCallingUriPermission(Uri uri, int modeFlags) { // throw new UnsupportedOperationException(); // } // // @Override // public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) { // throw new UnsupportedOperationException(); // } // // @Override // public int checkUriPermission(Uri uri, String readPermission, // String writePermission, int pid, int uid, int modeFlags) { // throw new UnsupportedOperationException(); // } // // @Override // public void enforceUriPermission( // Uri uri, int pid, int uid, int modeFlags, String message) { // throw new UnsupportedOperationException(); // } // // @Override // public void enforceCallingUriPermission( // Uri uri, int modeFlags, String message) { // throw new UnsupportedOperationException(); // } // // @Override // public void enforceCallingOrSelfUriPermission( // Uri uri, int modeFlags, String message) { // throw new UnsupportedOperationException(); // } // // public void enforceUriPermission( // Uri uri, String readPermission, String writePermission, // int pid, int uid, int modeFlags, String message) { // throw new UnsupportedOperationException(); // } // // @Override // public Context createPackageContext(String packageName, int flags) // throws PackageManager.NameNotFoundException { // throw new UnsupportedOperationException(); // } // // @Override // public boolean isRestricted() { // throw new UnsupportedOperationException(); // } }