summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2016-08-29 15:17:48 -0700
committerAdam Cohen <adamcohen@google.com>2016-08-30 00:09:11 +0000
commitdef6e474dad311224b97ae66f62c3313c6542955 (patch)
tree7048c0cb26a862f54a74efdbdd50d96a8fd0b7f8 /src
parentd70ef242332e766b2c23e3b8bb537dc2d584e9ec (diff)
downloadandroid_packages_apps_Trebuchet-def6e474dad311224b97ae66f62c3313c6542955.tar.gz
android_packages_apps_Trebuchet-def6e474dad311224b97ae66f62c3313c6542955.tar.bz2
android_packages_apps_Trebuchet-def6e474dad311224b97ae66f62c3313c6542955.zip
Use promisedIntent instead of intent when deep shortcuts are restored.
This ensures that the intent has the package corresponding to the shortcut publisher, rather than a market intent. It also ensures that the intent has the EXTRA_SHORTCUT_ID attached. Bug: 31123204 Change-Id: I05d56396b629880322e915f52bfc0605b921b0b1 (cherry picked from commit fc02c1b446ee54561ac7351fb6ff0f8294785f0e)
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java5
-rw-r--r--src/com/android/launcher3/LauncherModel.java11
-rw-r--r--src/com/android/launcher3/ShortcutInfo.java7
-rw-r--r--src/com/android/launcher3/shortcuts/ShortcutKey.java6
-rw-r--r--src/com/android/launcher3/util/ItemInfoMatcher.java3
5 files changed, 21 insertions, 11 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 886c5f0a2..81c95e7ed 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2954,7 +2954,8 @@ public class Launcher extends Activity
try {
if (Utilities.ATLEAST_MARSHMALLOW && item != null
&& (item.itemType == Favorites.ITEM_TYPE_SHORTCUT
- || item.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT)) {
+ || item.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT)
+ && ((ShortcutInfo) item).promisedIntent == null) {
// Shortcuts need some special checks due to legacy reasons.
startShortcutIntentSafely(intent, optsBundle, item);
} else if (user == null || user.equals(UserHandleCompat.myUserHandle())) {
@@ -4267,7 +4268,7 @@ public class Launcher extends Activity
for (ShortcutInfo si : removed) {
if (si.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
- removedDeepShortcuts.add(ShortcutKey.fromItemInfo(si));
+ removedDeepShortcuts.add(ShortcutKey.fromShortcutInfo(si));
} else {
removedComponents.add(si.getTargetComponent());
}
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 60e07f9b6..c5c52b4bc 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -931,7 +931,8 @@ public class LauncherModel extends BroadcastReceiver
}
if (item.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
incrementPinnedShortcutCount(
- ShortcutKey.fromItemInfo(item), true /* shouldPin */);
+ ShortcutKey.fromShortcutInfo((ShortcutInfo) item),
+ true /* shouldPin */);
}
break;
case LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET:
@@ -1000,7 +1001,8 @@ public class LauncherModel extends BroadcastReceiver
sBgWorkspaceItems.remove(item);
break;
case LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT:
- decrementPinnedShortcutCount(ShortcutKey.fromItemInfo(item));
+ decrementPinnedShortcutCount(ShortcutKey.fromShortcutInfo(
+ (ShortcutInfo) item));
// Fall through.
case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
@@ -3381,7 +3383,8 @@ public class LauncherModel extends BroadcastReceiver
for (ItemInfo itemInfo : sBgItemsIdMap) {
if (itemInfo.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
ShortcutInfo si = (ShortcutInfo) itemInfo;
- if (si.getIntent().getPackage().equals(mPackageName) && si.user.equals(mUser)) {
+ if (si.getPromisedIntent().getPackage().equals(mPackageName)
+ && si.user.equals(mUser)) {
String shortcutId = si.getDeepShortcutId();
if (idsToShortcuts.containsKey(shortcutId)) {
idsToWorkspaceShortcutInfos.addToList(shortcutId, si);
@@ -3454,7 +3457,7 @@ public class LauncherModel extends BroadcastReceiver
ShortcutInfo si = (ShortcutInfo) itemInfo;
if (isUserUnlocked) {
ShortcutInfoCompat shortcut =
- pinnedShortcuts.get(ShortcutKey.fromItemInfo(si));
+ pinnedShortcuts.get(ShortcutKey.fromShortcutInfo(si));
// We couldn't verify the shortcut during loader. If its no longer available
// (probably due to clear data), delete the workspace item as well
if (shortcut == null) {
diff --git a/src/com/android/launcher3/ShortcutInfo.java b/src/com/android/launcher3/ShortcutInfo.java
index 8c466b2b0..21fa8a05e 100644
--- a/src/com/android/launcher3/ShortcutInfo.java
+++ b/src/com/android/launcher3/ShortcutInfo.java
@@ -167,6 +167,11 @@ public class ShortcutInfo extends ItemInfo {
return intent;
}
+ /** Returns {@link #promisedIntent}, or {@link #intent} if promisedIntent is null. */
+ public Intent getPromisedIntent() {
+ return promisedIntent != null ? promisedIntent : intent;
+ }
+
ShortcutInfo(Intent intent, CharSequence title, CharSequence contentDescription,
Bitmap icon, UserHandleCompat user) {
this();
@@ -349,7 +354,7 @@ public class ShortcutInfo extends ItemInfo {
/** Returns the ShortcutInfo id associated with the deep shortcut. */
public String getDeepShortcutId() {
return itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT ?
- intent.getStringExtra(ShortcutInfoCompat.EXTRA_SHORTCUT_ID) : null;
+ getPromisedIntent().getStringExtra(ShortcutInfoCompat.EXTRA_SHORTCUT_ID) : null;
}
@Override
diff --git a/src/com/android/launcher3/shortcuts/ShortcutKey.java b/src/com/android/launcher3/shortcuts/ShortcutKey.java
index 405303042..a219c5494 100644
--- a/src/com/android/launcher3/shortcuts/ShortcutKey.java
+++ b/src/com/android/launcher3/shortcuts/ShortcutKey.java
@@ -3,7 +3,7 @@ package com.android.launcher3.shortcuts;
import android.content.ComponentName;
import android.content.Intent;
-import com.android.launcher3.ItemInfo;
+import com.android.launcher3.ShortcutInfo;
import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.util.ComponentKey;
@@ -32,7 +32,7 @@ public class ShortcutKey extends ComponentKey {
return new ShortcutKey(intent.getPackage(), user, shortcutId);
}
- public static ShortcutKey fromItemInfo(ItemInfo info) {
- return fromIntent(info.getIntent(), info.user);
+ public static ShortcutKey fromShortcutInfo(ShortcutInfo info) {
+ return fromIntent(info.getPromisedIntent(), info.user);
}
}
diff --git a/src/com/android/launcher3/util/ItemInfoMatcher.java b/src/com/android/launcher3/util/ItemInfoMatcher.java
index 6189bf2f4..46e9184b4 100644
--- a/src/com/android/launcher3/util/ItemInfoMatcher.java
+++ b/src/com/android/launcher3/util/ItemInfoMatcher.java
@@ -20,6 +20,7 @@ import android.content.ComponentName;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.LauncherSettings.Favorites;
+import com.android.launcher3.ShortcutInfo;
import com.android.launcher3.compat.UserHandleCompat;
import com.android.launcher3.shortcuts.ShortcutKey;
@@ -57,7 +58,7 @@ public abstract class ItemInfoMatcher {
@Override
public boolean matches(ItemInfo info, ComponentName cn) {
return info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT &&
- keys.contains(ShortcutKey.fromItemInfo(info));
+ keys.contains(ShortcutKey.fromShortcutInfo((ShortcutInfo) info));
}
};
}