diff --git a/mobile/android/base/db/BrowserContract.java.in b/mobile/android/base/db/BrowserContract.java.in index 725a13ff2b3..60e170fef98 100644 --- a/mobile/android/base/db/BrowserContract.java.in +++ b/mobile/android/base/db/BrowserContract.java.in @@ -59,6 +59,7 @@ public class BrowserContract { public static final String PARAM_LIMIT = "limit"; public static final String PARAM_IS_SYNC = "sync"; public static final String PARAM_SHOW_DELETED = "show_deleted"; + public static final String PARAM_IS_TEST = "test"; public interface CommonColumns { public static final String _ID = "_id"; diff --git a/mobile/android/base/db/BrowserProvider.java.in b/mobile/android/base/db/BrowserProvider.java.in index e4798f91641..33a6a754bd7 100644 --- a/mobile/android/base/db/BrowserProvider.java.in +++ b/mobile/android/base/db/BrowserProvider.java.in @@ -608,7 +608,7 @@ public class BrowserProvider extends ContentProvider { } } - private DatabaseHelper getDatabaseHelperForProfile(String profile) { + private DatabaseHelper getDatabaseHelperForProfile(String profile, boolean isTest) { // Each profile has a separate browser.db database. The target // profile is provided using a URI query argument in each request // to our content provider. @@ -624,7 +624,7 @@ public class BrowserProvider extends ContentProvider { if (dbHelper != null) { return dbHelper; } - dbHelper = new DatabaseHelper(getContext(), getDatabasePath(profile)); + dbHelper = new DatabaseHelper(getContext(), getDatabasePath(profile, isTest)); mDatabasePerProfile.put(profile, dbHelper); } @@ -632,13 +632,15 @@ public class BrowserProvider extends ContentProvider { return dbHelper; } - private String getDatabasePath(String profile) { + private String getDatabasePath(String profile, boolean isTest) { trace("Getting database path for profile: " + profile); // On Android releases older than 2.3, it's not possible to use // SQLiteOpenHelper with a full path. Fallback to using separate // db files per profile in the app directory. - if (Build.VERSION.SDK_INT <= 8) { + if (isTest) { + return DATABASE_NAME; + } else if(Build.VERSION.SDK_INT <= 8) { return "browser-" + profile + ".db"; } @@ -662,7 +664,7 @@ public class BrowserProvider extends ContentProvider { if (uri != null) profile = uri.getQueryParameter(BrowserContract.PARAM_PROFILE); - return getDatabaseHelperForProfile(profile).getReadableDatabase(); + return getDatabaseHelperForProfile(profile, isTest(uri)).getReadableDatabase(); } private SQLiteDatabase getWritableDatabase(Uri uri) { @@ -673,7 +675,7 @@ public class BrowserProvider extends ContentProvider { if (uri != null) profile = uri.getQueryParameter(BrowserContract.PARAM_PROFILE); - return getDatabaseHelperForProfile(profile).getWritableDatabase(); + return getDatabaseHelperForProfile(profile, isTest(uri)).getWritableDatabase(); } private void cleanupSomeDeletedRecords(Uri fromUri, Uri targetUri, String tableName) { @@ -693,6 +695,9 @@ public class BrowserProvider extends ContentProvider { if (!TextUtils.isEmpty(profile)) uriBuilder = uriBuilder.appendQueryParameter(BrowserContract.PARAM_PROFILE, profile); + if (isTest(fromUri)) + uriBuilder = uriBuilder.appendQueryParameter(BrowserContract.PARAM_IS_TEST, "1"); + Uri uriWithArgs = uriBuilder.build(); Cursor cursor = null; @@ -725,6 +730,11 @@ public class BrowserProvider extends ContentProvider { return !TextUtils.isEmpty(isSync); } + private boolean isTest(Uri uri) { + String isTest = uri.getQueryParameter(BrowserContract.PARAM_IS_TEST); + return !TextUtils.isEmpty(isTest); + } + private boolean shouldShowDeleted(Uri uri) { String showDeleted = uri.getQueryParameter(BrowserContract.PARAM_SHOW_DELETED); return !TextUtils.isEmpty(showDeleted);