Merge "Fixes NPE with system shortcuts." into rvc-dev am: 6f5d4bb8ab

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

Change-Id: Iab463bb1eadf656973f7ee8ccbcd32dbbc056101
This commit is contained in:
Thiru Ramasamy
2020-06-29 23:51:39 +00:00
committed by Automerger Merge Worker
2 changed files with 21 additions and 12 deletions
@@ -52,7 +52,6 @@ import com.android.launcher3.util.MainThreadInitializedObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.OptionalInt; import java.util.OptionalInt;
import java.util.stream.IntStream; import java.util.stream.IntStream;
@@ -315,16 +314,22 @@ public class PredictionUiStateManager implements StateListener<LauncherState>,
* {@link LauncherSettings.Favorites#ITEM_TYPE_DEEP_SHORTCUT} * {@link LauncherSettings.Favorites#ITEM_TYPE_DEEP_SHORTCUT}
*/ */
public OptionalInt getAllAppsRank(@Nullable ItemInfo itemInfo) { public OptionalInt getAllAppsRank(@Nullable ItemInfo itemInfo) {
Optional<ComponentKey> componentKey = Optional.ofNullable(itemInfo) if (itemInfo == null || itemInfo.getTargetComponent() == null || itemInfo.user == null) {
.filter(item -> item.itemType == ITEM_TYPE_APPLICATION return OptionalInt.empty();
|| item.itemType == ITEM_TYPE_SHORTCUT }
|| item.itemType == ITEM_TYPE_DEEP_SHORTCUT)
.map(ItemInfo::getTargetComponent)
.map(componentName -> new ComponentKey(componentName, itemInfo.user));
return componentKey.map(key -> IntStream.range(0, getCurrentState().apps.size()) if (itemInfo.itemType == ITEM_TYPE_APPLICATION
.filter(index -> key.equals(getCurrentState().apps.get(index).getComponentKey())) || itemInfo.itemType == ITEM_TYPE_SHORTCUT
.findFirst()).orElseGet(OptionalInt::empty); || itemInfo.itemType == ITEM_TYPE_DEEP_SHORTCUT) {
ComponentKey key = new ComponentKey(itemInfo.getTargetComponent(),
itemInfo.user);
final List<ComponentKeyMapper> apps = getCurrentState().apps;
return IntStream.range(0, apps.size())
.filter(index -> key.equals(apps.get(index).getComponentKey()))
.findFirst();
}
return OptionalInt.empty();
} }
/** /**
@@ -655,11 +655,15 @@ public class HotseatPredictionController implements DragController.DragListener,
+ ",launchLocation:" + itemInfo.container); + ",launchLocation:" + itemInfo.container);
} }
final ComponentKey k = new ComponentKey(itemInfo.getTargetComponent(), itemInfo.user); if (itemInfo.getTargetComponent() == null || itemInfo.user == null) {
return;
}
final ComponentKey key = new ComponentKey(itemInfo.getTargetComponent(), itemInfo.user);
final List<ComponentKeyMapper> predictedApps = new ArrayList<>(mComponentKeyMappers); final List<ComponentKeyMapper> predictedApps = new ArrayList<>(mComponentKeyMappers);
OptionalInt rank = IntStream.range(0, predictedApps.size()) OptionalInt rank = IntStream.range(0, predictedApps.size())
.filter((i) -> k.equals(predictedApps.get(i).getComponentKey())) .filter(index -> key.equals(predictedApps.get(index).getComponentKey()))
.findFirst(); .findFirst();
if (!rank.isPresent()) { if (!rank.isPresent()) {
return; return;