diff --git a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java index f9a0bb194b..e82c900734 100644 --- a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java +++ b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java @@ -161,7 +161,8 @@ public class QuickstepModelDelegate extends ModelDelegate { } InstanceId instanceId = new InstanceIdSequence().newInstanceId(); for (ItemInfo info : itemsIdMap) { - FolderInfo parent = getContainer(info, itemsIdMap); + FolderInfo parent = info.container > 0 + ? (FolderInfo) itemsIdMap.get(info.container) : null; StatsLogCompatManager.writeSnapshot(info.buildProto(parent), instanceId); } additionalSnapshotEvents(instanceId); @@ -198,7 +199,8 @@ public class QuickstepModelDelegate extends ModelDelegate { } for (ItemInfo info : itemsIdMap) { - FolderInfo parent = getContainer(info, itemsIdMap); + FolderInfo parent = info.container > 0 + ? (FolderInfo) itemsIdMap.get(info.container) : null; LauncherAtom.ItemInfo itemInfo = info.buildProto(parent); Log.d(TAG, itemInfo.toString()); StatsEvent statsEvent = StatsLogCompatManager.buildStatsEvent(itemInfo, @@ -220,22 +222,6 @@ public class QuickstepModelDelegate extends ModelDelegate { } } - private static FolderInfo getContainer(ItemInfo info, IntSparseArrayMap itemsIdMap) { - if (info.container > 0) { - ItemInfo containerInfo = itemsIdMap.get(info.container); - - if (!(containerInfo instanceof FolderInfo)) { - Log.e(TAG, String.format( - "Item info: %s found with invalid container: %s", - info, - containerInfo)); - } else { - return (FolderInfo) containerInfo; - } - } - return null; - } - @Override public void validateData() { super.validateData(); diff --git a/src/com/android/launcher3/model/BgDataModel.java b/src/com/android/launcher3/model/BgDataModel.java index d3351dcc59..13ad90e302 100644 --- a/src/com/android/launcher3/model/BgDataModel.java +++ b/src/com/android/launcher3/model/BgDataModel.java @@ -31,8 +31,6 @@ import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; -import androidx.annotation.Nullable; - import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.Workspace; @@ -217,19 +215,6 @@ public class BgDataModel { } public synchronized void addItem(Context context, ItemInfo item, boolean newItem) { - addItem(context, item, newItem, null); - } - - public synchronized void addItem( - Context context, ItemInfo item, boolean newItem, @Nullable LoaderMemoryLogger logger) { - if (logger != null) { - logger.addLog( - Log.DEBUG, - TAG, - String.format("Adding item to ID map: %s", item.toString()), - /* stackTrace= */ null); - } - itemsIdMap.put(item.id, item); switch (item.itemType) { case LauncherSettings.Favorites.ITEM_TYPE_FOLDER: diff --git a/src/com/android/launcher3/model/LoaderCursor.java b/src/com/android/launcher3/model/LoaderCursor.java index 08b38e88ac..47df53810c 100644 --- a/src/com/android/launcher3/model/LoaderCursor.java +++ b/src/com/android/launcher3/model/LoaderCursor.java @@ -383,23 +383,18 @@ public class LoaderCursor extends CursorWrapper { info.cellY = getInt(cellYIndex); } - public void checkAndAddItem(ItemInfo info, BgDataModel dataModel) { - checkAndAddItem(info, dataModel, null); - } - /** * Adds the {@param info} to {@param dataModel} if it does not overlap with any other item, * otherwise marks it for deletion. */ - public void checkAndAddItem( - ItemInfo info, BgDataModel dataModel, LoaderMemoryLogger logger) { + public void checkAndAddItem(ItemInfo info, BgDataModel dataModel) { if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) { // Ensure that it is a valid intent. An exception here will // cause the item loading to get skipped ShortcutKey.fromItemInfo(info); } if (checkItemPlacement(info)) { - dataModel.addItem(mContext, info, false, logger); + dataModel.addItem(mContext, info, false); } else { markDeleted("Item position overlap"); } diff --git a/src/com/android/launcher3/model/LoaderMemoryLogger.java b/src/com/android/launcher3/model/LoaderMemoryLogger.java deleted file mode 100644 index f48efcb4a0..0000000000 --- a/src/com/android/launcher3/model/LoaderMemoryLogger.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.model; - -import android.util.Log; - -import androidx.annotation.Nullable; - -import java.util.ArrayList; - -/** - * Helper logger that collects logs while {@code LoaderTask#run} executes and prints them all iff - * an exception is caught in {@code LoaderTask#run}. - */ -public class LoaderMemoryLogger { - - private static final String TAG = "LoaderMemoryLogger"; - - private final ArrayList mLogEntries = new ArrayList<>(); - - protected LoaderMemoryLogger() {} - - protected void addLog(int logLevel, String tag, String log) { - addLog(logLevel, tag, log, null); - } - - protected void addLog( - int logLevel, String tag, String log, Exception stackTrace) { - switch (logLevel) { - case Log.ASSERT: - case Log.ERROR: - case Log.DEBUG: - case Log.INFO: - case Log.VERBOSE: - case Log.WARN: - mLogEntries.add(new LogEntry(logLevel, tag, log, stackTrace)); - break; - default: - throw new IllegalArgumentException("Invalid log level provided: " + logLevel); - - } - } - - protected void clearLogs() { - mLogEntries.clear(); - } - - protected void printLogs() { - for (LogEntry logEntry : mLogEntries) { - String tag = String.format("%s: %s", TAG, logEntry.mLogTag); - String logString = logEntry.mStackStrace == null - ? logEntry.mLogString - : String.format( - "%s\n%s", - logEntry.mLogString, - Log.getStackTraceString(logEntry.mStackStrace)); - - Log.println(logEntry.mLogLevel, tag, logString); - } - clearLogs(); - } - - private static class LogEntry { - - protected final int mLogLevel; - protected final String mLogTag; - protected final String mLogString; - @Nullable protected final Exception mStackStrace; - - protected LogEntry( - int logLevel, String logTag, String logString, @Nullable Exception stackStrace) { - mLogLevel = logLevel; - mLogTag = logTag; - mLogString = logString; - mStackStrace = stackStrace; - } - } -} diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 2a0f9a6f67..a4f6f7aa69 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -52,8 +52,6 @@ import android.util.Log; import android.util.LongSparseArray; import android.util.TimingLogger; -import androidx.annotation.Nullable; - import com.android.launcher3.DeviceProfile; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; @@ -199,12 +197,11 @@ public class LoaderTask implements Runnable { Object traceToken = TraceHelper.INSTANCE.beginSection(TAG); TimingLogger logger = new TimingLogger(TAG, "run"); - LoaderMemoryLogger memoryLogger = new LoaderMemoryLogger(); try (LauncherModel.LoaderTransaction transaction = mApp.getModel().beginLoader(this)) { List allShortcuts = new ArrayList<>(); Trace.beginSection("LoadWorkspace"); try { - loadWorkspace(allShortcuts, memoryLogger); + loadWorkspace(allShortcuts); } finally { Trace.endSection(); } @@ -314,13 +311,9 @@ public class LoaderTask implements Runnable { mModelDelegate.modelLoadComplete(); transaction.commit(); - memoryLogger.clearLogs(); } catch (CancellationException e) { // Loader stopped, ignore logASplit(logger, "Cancelled"); - } catch (Exception e) { - memoryLogger.printLogs(); - throw e; } finally { logger.dumpToLog(); } @@ -332,21 +325,13 @@ public class LoaderTask implements Runnable { this.notify(); } - private void loadWorkspace(List allDeepShortcuts, LoaderMemoryLogger logger) { + private void loadWorkspace(List allDeepShortcuts) { loadWorkspace(allDeepShortcuts, LauncherSettings.Favorites.CONTENT_URI, - null /* selection */, logger); + null /* selection */); } - protected void loadWorkspace( - List allDeepShortcuts, Uri contentUri, String selection) { - loadWorkspace(allDeepShortcuts, contentUri, selection, null); - } - - protected void loadWorkspace( - List allDeepShortcuts, - Uri contentUri, - String selection, - @Nullable LoaderMemoryLogger logger) { + protected void loadWorkspace(List allDeepShortcuts, Uri contentUri, + String selection) { final Context context = mApp.getContext(); final ContentResolver contentResolver = context.getContentResolver(); final PackageManagerHelper pmHelper = new PackageManagerHelper(context); @@ -650,7 +635,7 @@ public class LoaderTask implements Runnable { } } - c.checkAndAddItem(info, mBgDataModel, logger); + c.checkAndAddItem(info, mBgDataModel); } else { throw new RuntimeException("Unexpected null WorkspaceItemInfo"); } @@ -669,7 +654,7 @@ public class LoaderTask implements Runnable { // no special handling required for restored folders c.markRestored(); - c.checkAndAddItem(folderInfo, mBgDataModel, logger); + c.checkAndAddItem(folderInfo, mBgDataModel); break; case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET: