diff options
Diffstat (limited to 'src/com/android/launcher3/model/LoaderTask.java')
-rw-r--r-- | src/com/android/launcher3/model/LoaderTask.java | 46 |
1 files changed, 14 insertions, 32 deletions
diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index ca356b08b5..0e68db29e8 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -24,8 +24,6 @@ import static com.android.launcher3.model.ModelUtils.filterCurrentWorkspaceItems import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_LOCKED_USER; import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_SAFEMODE; import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_SUSPENDED; -import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING; -import static com.android.launcher3.testing.shared.TestProtocol.testLogD; import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import static com.android.launcher3.util.PackageManagerHelper.hasShortcutsPermission; import static com.android.launcher3.util.PackageManagerHelper.isSystemApp; @@ -33,7 +31,6 @@ import static com.android.launcher3.util.PackageManagerHelper.isSystemApp; import android.annotation.SuppressLint; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -61,7 +58,6 @@ import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherModel; import com.android.launcher3.LauncherSettings.Favorites; -import com.android.launcher3.LauncherSettings.Settings; import com.android.launcher3.Utilities; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.folder.Folder; @@ -203,7 +199,7 @@ public class LoaderTask implements Runnable { } } - Object traceToken = TraceHelper.INSTANCE.beginSection(TAG); + TraceHelper.INSTANCE.beginSection(TAG); LoaderMemoryLogger memoryLogger = new LoaderMemoryLogger(); try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) { List<ShortcutInfo> allShortcuts = new ArrayList<>(); @@ -327,7 +323,7 @@ public class LoaderTask implements Runnable { memoryLogger.printLogs(); throw e; } - TraceHelper.INSTANCE.endSection(traceToken); + TraceHelper.INSTANCE.endSection(); } public synchronized void stopLocked() { @@ -361,25 +357,15 @@ public class LoaderTask implements Runnable { String selection, @Nullable LoaderMemoryLogger memoryLogger) { final Context context = mApp.getContext(); - final ContentResolver contentResolver = context.getContentResolver(); final PackageManagerHelper pmHelper = new PackageManagerHelper(context); final boolean isSafeMode = pmHelper.isSafeMode(); final boolean isSdCardReady = Utilities.isBootCompleted(); final WidgetManagerHelper widgetHelper = new WidgetManagerHelper(context); - boolean clearDb = false; - if (!mApp.getModel().getModelDbController().migrateGridIfNeeded()) { - // Migration failed. Clear workspace. - clearDb = true; - } - - if (clearDb) { - Log.d(TAG, "loadWorkspace: resetting launcher database"); - Settings.call(contentResolver, Settings.METHOD_CREATE_EMPTY_DB); - } - + ModelDbController dbController = mApp.getModel().getModelDbController(); + dbController.tryMigrateDB(); Log.d(TAG, "loadWorkspace: loading default favorites"); - Settings.call(contentResolver, Settings.METHOD_LOAD_DEFAULT_FAVORITES); + dbController.loadDefaultFavoritesIfNecessary(); synchronized (mBgDataModel) { mBgDataModel.clear(); @@ -388,17 +374,18 @@ public class LoaderTask implements Runnable { final HashMap<PackageUserKey, SessionInfo> installingPkgs = mSessionHelper.getActiveSessions(); installingPkgs.forEach(mApp.getIconCache()::updateSessionCache); + FileLog.d(TAG, "loadWorkspace: Packages with active install sessions: " + + installingPkgs.values()); final PackageUserKey tempPackageKey = new PackageUserKey(null, null); mFirstScreenBroadcast = new FirstScreenBroadcast(installingPkgs); mShortcutKeyToPinnedShortcuts = new HashMap<>(); - ModelDbController dbController = mApp.getModel().getModelDbController(); final LoaderCursor c = new LoaderCursor( dbController.query(TABLE_NAME, null, selection, null, null), mApp, mUserManagerState); final Bundle extras = c.getExtras(); - mDbName = extras == null ? null : extras.getString(Settings.EXTRA_DB_NAME); + mDbName = extras == null ? null : extras.getString(ModelDbController.EXTRA_DB_NAME); try { final LongSparseArray<Boolean> unlockedUsers = new LongSparseArray<>(); @@ -505,7 +492,6 @@ public class LoaderTask implements Runnable { boolean allowMissingTarget = false; switch (c.itemType) { - case Favorites.ITEM_TYPE_SHORTCUT: case Favorites.ITEM_TYPE_APPLICATION: case Favorites.ITEM_TYPE_DEEP_SHORTCUT: Intent intent = c.parseIntent(); @@ -519,9 +505,8 @@ public class LoaderTask implements Runnable { ComponentName cn = intent.getComponent(); String targetPkg = cn == null ? intent.getPackage() : cn.getPackageName(); - if (TextUtils.isEmpty(targetPkg) - && c.itemType != Favorites.ITEM_TYPE_SHORTCUT) { - c.markDeleted("Only legacy shortcuts can have null package"); + if (TextUtils.isEmpty(targetPkg)) { + c.markDeleted("Shortcuts can't have null package"); return; } @@ -707,9 +692,11 @@ public class LoaderTask implements Runnable { break; case Favorites.ITEM_TYPE_FOLDER: + case Favorites.ITEM_TYPE_APP_PAIR: FolderInfo folderInfo = mBgDataModel.findOrMakeFolder(c.id); c.applyCommonProperties(folderInfo); + folderInfo.itemType = c.itemType; // Do not trim the folder label, as is was set by the user. folderInfo.title = c.getString(c.mTitleIndex); folderInfo.spanX = 1; @@ -917,9 +904,7 @@ public class LoaderTask implements Runnable { private void sanitizeFolders(boolean itemsDeleted) { if (itemsDeleted) { // Remove any empty folder - int[] deletedFolderIds = Settings.call(mApp.getContext().getContentResolver(), - Settings.METHOD_DELETE_EMPTY_FOLDERS) - .getIntArray(Settings.EXTRA_VALUE); + IntArray deletedFolderIds = mApp.getModel().getModelDbController().deleteEmptyFolders(); synchronized (mBgDataModel) { for (int folderId : deletedFolderIds) { mBgDataModel.workspaceItems.remove(mBgDataModel.folders.get(folderId)); @@ -932,11 +917,9 @@ public class LoaderTask implements Runnable { private void sanitizeWidgetsShortcutsAndPackages() { Context context = mApp.getContext(); - ContentResolver contentResolver = context.getContentResolver(); // Remove any ghost widgets - Settings.call(contentResolver, - Settings.METHOD_REMOVE_GHOST_WIDGETS); + mApp.getModel().getModelDbController().removeGhostWidgets(); // Update pinned state of model shortcuts mBgDataModel.updateShortcutPinnedState(context); @@ -951,7 +934,6 @@ public class LoaderTask implements Runnable { } private List<LauncherActivityInfo> loadAllApps() { - testLogD(WORK_TAB_MISSING, "loadingAllApps"); final List<UserHandle> profiles = mUserCache.getUserProfiles(); List<LauncherActivityInfo> allActivityList = new ArrayList<>(); // Clear the list of apps |