Revert "Fix ClassCastException in QuickstepModelDelegate"
This reverts commit 380f8fd89016b2527d9a3fb2b35c0c4810e12855.
Reason for revert: remove bug fix on master
Bug: 173838775
Change-Id: I3cbb3e383c52095a10b3e22ea4c586c0c3c8d7a9
diff --git a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
index f9a0bb1..e82c900 100644
--- a/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
+++ b/quickstep/src/com/android/launcher3/model/QuickstepModelDelegate.java
@@ -161,7 +161,8 @@
}
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 @@
}
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 @@
}
}
- private static FolderInfo getContainer(ItemInfo info, IntSparseArrayMap<ItemInfo> 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 d3351dc..13ad90e 100644
--- a/src/com/android/launcher3/model/BgDataModel.java
+++ b/src/com/android/launcher3/model/BgDataModel.java
@@ -31,8 +31,6 @@
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 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 08b38e8..47df538 100644
--- a/src/com/android/launcher3/model/LoaderCursor.java
+++ b/src/com/android/launcher3/model/LoaderCursor.java
@@ -383,23 +383,18 @@
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 f48efcb..0000000
--- 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<LogEntry> 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 2a0f9a6..a4f6f7a 100644
--- a/src/com/android/launcher3/model/LoaderTask.java
+++ b/src/com/android/launcher3/model/LoaderTask.java
@@ -52,8 +52,6 @@
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 @@
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<ShortcutInfo> allShortcuts = new ArrayList<>();
Trace.beginSection("LoadWorkspace");
try {
- loadWorkspace(allShortcuts, memoryLogger);
+ loadWorkspace(allShortcuts);
} finally {
Trace.endSection();
}
@@ -314,13 +311,9 @@
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 @@
this.notify();
}
- private void loadWorkspace(List<ShortcutInfo> allDeepShortcuts, LoaderMemoryLogger logger) {
+ private void loadWorkspace(List<ShortcutInfo> allDeepShortcuts) {
loadWorkspace(allDeepShortcuts, LauncherSettings.Favorites.CONTENT_URI,
- null /* selection */, logger);
+ null /* selection */);
}
- protected void loadWorkspace(
- List<ShortcutInfo> allDeepShortcuts, Uri contentUri, String selection) {
- loadWorkspace(allDeepShortcuts, contentUri, selection, null);
- }
-
- protected void loadWorkspace(
- List<ShortcutInfo> allDeepShortcuts,
- Uri contentUri,
- String selection,
- @Nullable LoaderMemoryLogger logger) {
+ protected void loadWorkspace(List<ShortcutInfo> 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 @@
}
}
- c.checkAndAddItem(info, mBgDataModel, logger);
+ c.checkAndAddItem(info, mBgDataModel);
} else {
throw new RuntimeException("Unexpected null WorkspaceItemInfo");
}
@@ -669,7 +654,7 @@
// 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: