From d88f63bbed4c4c1e7eace9ab8c25e89ad6c662c9 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Fri, 16 Aug 2019 13:28:24 -0700 Subject: [PATCH] add null check when accessing target component from iteminfo Bug: 139540363 Change-Id: I25d0100077de67b085c27b5ef91e22c6ac1ad959 Merged-In: I25d0100077de67b085c27b5ef91e22c6ac1ad959 --- src/com/android/launcher3/ItemInfo.java | 3 +++ src/com/android/launcher3/popup/SystemShortcut.java | 1 + src/com/android/launcher3/util/PackageUserKey.java | 5 +++++ .../com/android/launcher3/shortcuts/DeepShortcutManager.java | 5 ++++- 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/ItemInfo.java b/src/com/android/launcher3/ItemInfo.java index 134e116063..3f723d17f1 100644 --- a/src/com/android/launcher3/ItemInfo.java +++ b/src/com/android/launcher3/ItemInfo.java @@ -22,6 +22,8 @@ import android.content.Intent; import android.os.Process; import android.os.UserHandle; +import androidx.annotation.Nullable; + import com.android.launcher3.util.ContentWriter; /** @@ -134,6 +136,7 @@ public class ItemInfo { return null; } + @Nullable public ComponentName getTargetComponent() { Intent intent = getIntent(); if (intent != null) { diff --git a/src/com/android/launcher3/popup/SystemShortcut.java b/src/com/android/launcher3/popup/SystemShortcut.java index 563f3b3c65..78bd81b464 100644 --- a/src/com/android/launcher3/popup/SystemShortcut.java +++ b/src/com/android/launcher3/popup/SystemShortcut.java @@ -131,6 +131,7 @@ public abstract class SystemShortcut extends Ite @Override public View.OnClickListener getOnClickListener(final Launcher launcher, final ItemInfo itemInfo) { + if (itemInfo.getTargetComponent() == null) return null; final List widgets = launcher.getPopupDataProvider().getWidgetsForPackageUser(new PackageUserKey( itemInfo.getTargetComponent().getPackageName(), itemInfo.user)); diff --git a/src/com/android/launcher3/util/PackageUserKey.java b/src/com/android/launcher3/util/PackageUserKey.java index e624517581..8dc45f5476 100644 --- a/src/com/android/launcher3/util/PackageUserKey.java +++ b/src/com/android/launcher3/util/PackageUserKey.java @@ -3,6 +3,8 @@ package com.android.launcher3.util; import android.os.UserHandle; import android.service.notification.StatusBarNotification; +import androidx.annotation.Nullable; + import com.android.launcher3.ItemInfo; import com.android.launcher3.shortcuts.DeepShortcutManager; @@ -15,7 +17,9 @@ public class PackageUserKey { public UserHandle mUser; private int mHashCode; + @Nullable public static PackageUserKey fromItemInfo(ItemInfo info) { + if (info.getTargetComponent() == null) return null; return new PackageUserKey(info.getTargetComponent().getPackageName(), info.user); } @@ -38,6 +42,7 @@ public class PackageUserKey { * @return Whether this PackageUserKey was successfully updated - it shouldn't be used if not. */ public boolean updateFromItemInfo(ItemInfo info) { + if (info.getTargetComponent() == null) return false; if (ShortcutUtil.supportsShortcuts(info)) { update(info.getTargetComponent().getPackageName(), info.user); return true; diff --git a/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java index 7119aeadf6..09b1890491 100644 --- a/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java +++ b/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java @@ -27,6 +27,8 @@ import android.os.Bundle; import android.os.UserHandle; import android.util.Log; +import androidx.annotation.Nullable; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -78,8 +80,9 @@ public class DeepShortcutManager { * Gets all the manifest and dynamic shortcuts associated with the given package and user, * to be displayed in the shortcuts container on long press. */ - public List queryForShortcutsContainer(ComponentName activity, + public List queryForShortcutsContainer(@Nullable ComponentName activity, UserHandle user) { + if (activity == null) return Collections.EMPTY_LIST; return query(ShortcutQuery.FLAG_MATCH_MANIFEST | ShortcutQuery.FLAG_MATCH_DYNAMIC, activity.getPackageName(), activity, null, user); }