Revert "Revert "Revert "Revert "Revert "Revert "Changing GridMigrationTask to use ModelDbController directly""""""
This reverts commit 09905cfa90.
Reason for revert: Fixed the crashing issue
Change-Id: Ibcfc28a89356d262e67e8842d6bae37e230a70f5
This commit is contained in:
@@ -45,8 +45,11 @@ import androidx.test.filters.SmallTest;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
import com.android.launcher3.LauncherSettings;
|
||||
import com.android.launcher3.LauncherSettings.Favorites;
|
||||
import com.android.launcher3.model.DatabaseHelper;
|
||||
import com.android.launcher3.model.ModelDbController;
|
||||
import com.android.launcher3.util.LauncherModelHelper;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -61,15 +64,29 @@ public class RestoreDbTaskTest {
|
||||
|
||||
private final UserHandle mWorkUser = UserHandle.getUserHandleForUid(PER_USER_RANGE);
|
||||
|
||||
private LauncherModelHelper mModelHelper;
|
||||
private Context mContext;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
mModelHelper = new LauncherModelHelper();
|
||||
mContext = mModelHelper.sandboxContext;
|
||||
}
|
||||
|
||||
@After
|
||||
public void teardown() {
|
||||
mModelHelper.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProfileId() throws Exception {
|
||||
SQLiteDatabase db = new MyDatabaseHelper(23).getWritableDatabase();
|
||||
SQLiteDatabase db = new MyModelDbController(23).getDb();
|
||||
assertEquals(23, new RestoreDbTask().getDefaultProfileId(db));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMigrateProfileId() throws Exception {
|
||||
SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase();
|
||||
SQLiteDatabase db = new MyModelDbController(42).getDb();
|
||||
// Add some mock data
|
||||
for (int i = 0; i < 5; i++) {
|
||||
ContentValues values = new ContentValues();
|
||||
@@ -89,7 +106,7 @@ public class RestoreDbTaskTest {
|
||||
|
||||
@Test
|
||||
public void testChangeDefaultColumn() throws Exception {
|
||||
SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase();
|
||||
SQLiteDatabase db = new MyModelDbController(42).getDb();
|
||||
// Add some mock data
|
||||
for (int i = 0; i < 5; i++) {
|
||||
ContentValues values = new ContentValues();
|
||||
@@ -112,28 +129,27 @@ public class RestoreDbTaskTest {
|
||||
|
||||
@Test
|
||||
public void testSanitizeDB_bothProfiles() throws Exception {
|
||||
Context context = getInstrumentation().getTargetContext();
|
||||
UserHandle myUser = myUserHandle();
|
||||
long myProfileId = context.getSystemService(UserManager.class)
|
||||
long myProfileId = mContext.getSystemService(UserManager.class)
|
||||
.getSerialNumberForUser(myUser);
|
||||
long myProfileId_old = myProfileId + 1;
|
||||
long workProfileId = myProfileId + 2;
|
||||
long workProfileId_old = myProfileId + 3;
|
||||
|
||||
MyDatabaseHelper helper = new MyDatabaseHelper(myProfileId);
|
||||
SQLiteDatabase db = helper.getWritableDatabase();
|
||||
BackupManager bm = spy(new BackupManager(context));
|
||||
MyModelDbController controller = new MyModelDbController(myProfileId);
|
||||
SQLiteDatabase db = controller.getDb();
|
||||
BackupManager bm = spy(new BackupManager(mContext));
|
||||
doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old));
|
||||
doReturn(mWorkUser).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old));
|
||||
helper.users.put(workProfileId, mWorkUser);
|
||||
controller.users.put(workProfileId, mWorkUser);
|
||||
|
||||
addIconsBulk(helper, 10, 1, myProfileId_old);
|
||||
addIconsBulk(helper, 6, 2, workProfileId_old);
|
||||
addIconsBulk(controller, 10, 1, myProfileId_old);
|
||||
addIconsBulk(controller, 6, 2, workProfileId_old);
|
||||
assertEquals(10, getItemCountForProfile(db, myProfileId_old));
|
||||
assertEquals(6, getItemCountForProfile(db, workProfileId_old));
|
||||
|
||||
RestoreDbTask task = new RestoreDbTask();
|
||||
task.sanitizeDB(context, helper, helper.getWritableDatabase(), bm);
|
||||
task.sanitizeDB(mContext, controller, controller.getDb(), bm);
|
||||
|
||||
// All the data has been migrated to the new user ids
|
||||
assertEquals(0, getItemCountForProfile(db, myProfileId_old));
|
||||
@@ -144,27 +160,26 @@ public class RestoreDbTaskTest {
|
||||
|
||||
@Test
|
||||
public void testSanitizeDB_workItemsRemoved() throws Exception {
|
||||
Context context = getInstrumentation().getTargetContext();
|
||||
UserHandle myUser = myUserHandle();
|
||||
long myProfileId = context.getSystemService(UserManager.class)
|
||||
long myProfileId = mContext.getSystemService(UserManager.class)
|
||||
.getSerialNumberForUser(myUser);
|
||||
long myProfileId_old = myProfileId + 1;
|
||||
long workProfileId_old = myProfileId + 3;
|
||||
|
||||
MyDatabaseHelper helper = new MyDatabaseHelper(myProfileId);
|
||||
SQLiteDatabase db = helper.getWritableDatabase();
|
||||
BackupManager bm = spy(new BackupManager(context));
|
||||
MyModelDbController controller = new MyModelDbController(myProfileId);
|
||||
SQLiteDatabase db = controller.getDb();
|
||||
BackupManager bm = spy(new BackupManager(mContext));
|
||||
doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old));
|
||||
// Work profile is not migrated
|
||||
doReturn(null).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old));
|
||||
|
||||
addIconsBulk(helper, 10, 1, myProfileId_old);
|
||||
addIconsBulk(helper, 6, 2, workProfileId_old);
|
||||
addIconsBulk(controller, 10, 1, myProfileId_old);
|
||||
addIconsBulk(controller, 6, 2, workProfileId_old);
|
||||
assertEquals(10, getItemCountForProfile(db, myProfileId_old));
|
||||
assertEquals(6, getItemCountForProfile(db, workProfileId_old));
|
||||
|
||||
RestoreDbTask task = new RestoreDbTask();
|
||||
task.sanitizeDB(context, helper, helper.getWritableDatabase(), bm);
|
||||
task.sanitizeDB(mContext, controller, controller.getDb(), bm);
|
||||
|
||||
// All the data has been migrated to the new user ids
|
||||
assertEquals(0, getItemCountForProfile(db, myProfileId_old));
|
||||
@@ -173,12 +188,13 @@ public class RestoreDbTaskTest {
|
||||
assertEquals(10, getCount(db, "select * from favorites"));
|
||||
}
|
||||
|
||||
private void addIconsBulk(DatabaseHelper helper, int count, int screen, long profileId) {
|
||||
int columns = LauncherAppState.getIDP(getInstrumentation().getTargetContext()).numColumns;
|
||||
private void addIconsBulk(MyModelDbController controller,
|
||||
int count, int screen, long profileId) {
|
||||
int columns = LauncherAppState.getIDP(mContext).numColumns;
|
||||
String packageName = getInstrumentation().getContext().getPackageName();
|
||||
for (int i = 0; i < count; i++) {
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(LauncherSettings.Favorites._ID, helper.generateNewItemId());
|
||||
values.put(LauncherSettings.Favorites._ID, controller.generateNewItemId());
|
||||
values.put(LauncherSettings.Favorites.CONTAINER, CONTAINER_DESKTOP);
|
||||
values.put(LauncherSettings.Favorites.SCREEN, screen);
|
||||
values.put(LauncherSettings.Favorites.CELLX, i % columns);
|
||||
@@ -189,11 +205,11 @@ public class RestoreDbTaskTest {
|
||||
values.put(LauncherSettings.Favorites.ITEM_TYPE, ITEM_TYPE_APPLICATION);
|
||||
values.put(LauncherSettings.Favorites.INTENT,
|
||||
new Intent(Intent.ACTION_MAIN).setPackage(packageName).toUri(0));
|
||||
helper.getWritableDatabase().insert(TABLE_NAME, null, values);
|
||||
|
||||
controller.insert(TABLE_NAME, values);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testRemoveScreenIdGaps_firstScreenEmpty() {
|
||||
runRemoveScreenIdGapsTest(
|
||||
@@ -216,7 +232,7 @@ public class RestoreDbTaskTest {
|
||||
}
|
||||
|
||||
private void runRemoveScreenIdGapsTest(int[] screenIds, int[] expectedScreenIds) {
|
||||
SQLiteDatabase db = new MyDatabaseHelper(42).getWritableDatabase();
|
||||
SQLiteDatabase db = new MyModelDbController(42).getDb();
|
||||
// Add some mock data
|
||||
for (int i = 0; i < screenIds.length; i++) {
|
||||
ContentValues values = new ContentValues();
|
||||
@@ -254,13 +270,12 @@ public class RestoreDbTaskTest {
|
||||
}
|
||||
}
|
||||
|
||||
private class MyDatabaseHelper extends DatabaseHelper {
|
||||
private class MyModelDbController extends ModelDbController {
|
||||
|
||||
public final LongSparseArray<UserHandle> users;
|
||||
public final LongSparseArray<UserHandle> users = new LongSparseArray<>();
|
||||
|
||||
MyDatabaseHelper(long profileId) {
|
||||
super(getInstrumentation().getTargetContext(), null, false);
|
||||
users = new LongSparseArray<>();
|
||||
MyModelDbController(long profileId) {
|
||||
super(mContext);
|
||||
users.put(profileId, myUserHandle());
|
||||
}
|
||||
|
||||
@@ -269,10 +284,5 @@ public class RestoreDbTaskTest {
|
||||
int index = users.indexOfValue(user);
|
||||
return index >= 0 ? users.keyAt(index) : -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleOneTimeDataUpgrade(SQLiteDatabase db) { }
|
||||
|
||||
protected void onEmptyDbCreated() { }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user