mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 16:26:47 +00:00
Merge branch 'heads/android-14.0.0_r18' into 14-dev
This commit is contained in:
@@ -24,7 +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;
|
||||
@@ -33,7 +32,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 +59,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;
|
||||
@@ -207,7 +204,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<>();
|
||||
@@ -334,7 +331,7 @@ public class LoaderTask implements Runnable {
|
||||
memoryLogger.printLogs();
|
||||
throw e;
|
||||
}
|
||||
TraceHelper.INSTANCE.endSection(traceToken);
|
||||
TraceHelper.INSTANCE.endSection();
|
||||
}
|
||||
|
||||
public synchronized void stopLocked() {
|
||||
@@ -368,29 +365,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 (!(context instanceof LauncherPreviewRenderer.PreviewContext)) {
|
||||
LawnchairAppKt.getLawnchairApp(context).cleanUpDatabases();
|
||||
}
|
||||
|
||||
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();
|
||||
@@ -398,17 +381,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<>();
|
||||
|
||||
@@ -516,7 +500,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();
|
||||
@@ -531,9 +514,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;
|
||||
}
|
||||
|
||||
@@ -717,9 +699,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;
|
||||
@@ -920,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));
|
||||
@@ -935,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);
|
||||
@@ -954,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
|
||||
|
||||
Reference in New Issue
Block a user