Merge "[Hotseat] Remove stale predictions when AppIcon is removed" into sc-v2-dev am: 091d91a84b

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/15862161

Change-Id: Ia34a8eeb0672139521e1590fa6c93b36b4a20344
This commit is contained in:
Samuel Fufa
2021-09-20 21:29:18 +00:00
committed by Automerger Merge Worker
2 changed files with 25 additions and 1 deletions
@@ -55,6 +55,7 @@ import com.android.launcher3.popup.SystemShortcut;
import com.android.launcher3.touch.ItemLongClickListener;
import com.android.launcher3.uioverrides.PredictedAppIcon;
import com.android.launcher3.uioverrides.QuickstepLauncher;
import com.android.launcher3.util.ItemInfoMatcher;
import com.android.launcher3.util.OnboardingPrefs;
import com.android.launcher3.views.ArrowTipView;
import com.android.launcher3.views.Snackbar;
@@ -497,6 +498,18 @@ public class HotseatPredictionController implements DragController.DragListener,
.log(LAUNCHER_HOTSEAT_RANKED);
}
/**
* Called when app/shortcut icon is removed by system. This is used to prune visible stale
* predictions while while waiting for AppAPrediction service to send new batch of predictions.
*
* @param matcher filter matching items that have been removed
*/
public void onModelItemsRemoved(ItemInfoMatcher matcher) {
if (mPredictedItems.removeIf(matcher::matchesInfo)) {
fillGapsWithPrediction(true);
}
}
private class PinPrediction extends SystemShortcut<QuickstepLauncher> {
private PinPrediction(QuickstepLauncher target, ItemInfo itemInfo) {
@@ -67,6 +67,7 @@ import com.android.launcher3.uioverrides.touchcontrollers.StatusBarTouchControll
import com.android.launcher3.uioverrides.touchcontrollers.TaskViewTouchController;
import com.android.launcher3.uioverrides.touchcontrollers.TransposedQuickSwitchTouchController;
import com.android.launcher3.uioverrides.touchcontrollers.TwoButtonNavbarTouchController;
import com.android.launcher3.util.ItemInfoMatcher;
import com.android.launcher3.util.OnboardingPrefs;
import com.android.launcher3.util.TouchController;
import com.android.launcher3.util.UiThreadHelper;
@@ -164,7 +165,11 @@ public class QuickstepLauncher extends BaseQuickstepLauncher {
public boolean startActivitySafely(View v, Intent intent, ItemInfo item) {
// Only pause is taskbar controller is not present
mHotseatPredictionController.setPauseUIUpdate(getTaskbarUIController() == null);
return super.startActivitySafely(v, intent, item);
boolean started = super.startActivitySafely(v, intent, item);
if (getTaskbarUIController() == null && !started) {
mHotseatPredictionController.setPauseUIUpdate(false);
}
return started;
}
@Override
@@ -228,6 +233,12 @@ public class QuickstepLauncher extends BaseQuickstepLauncher {
}
}
@Override
public void bindWorkspaceComponentsRemoved(ItemInfoMatcher matcher) {
super.bindWorkspaceComponentsRemoved(matcher);
mHotseatPredictionController.onModelItemsRemoved(matcher);
}
@Override
public void onDestroy() {
super.onDestroy();