[Hotseat] Remove stale predictions when AppIcon is removed
Bug: 200088725 Test: Install work profile clock app, verify it is visible in the hotseat, launch (which should remove the icon from AllApps). Go home and verify icon is removed from the hotseat. Change-Id: I5915f5469fd4f90da0471dc177ef0965e99d07c7
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -66,6 +66,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;
|
||||
@@ -163,7 +164,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
|
||||
@@ -227,6 +232,12 @@ public class QuickstepLauncher extends BaseQuickstepLauncher {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void bindWorkspaceComponentsRemoved(ItemInfoMatcher matcher) {
|
||||
super.bindWorkspaceComponentsRemoved(matcher);
|
||||
mHotseatPredictionController.onModelItemsRemoved(matcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
Reference in New Issue
Block a user