summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-10-24 23:17:43 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-10-24 23:17:43 +0000
commit0c7b01a69495a7f495aa4dee0419e0bb46040e2d (patch)
tree83b4369f411fe1c6f2ecd2c5f8f4f098a5dc79db
parentf13109df05cd2c19b0db78c0ad9db011b0aebf00 (diff)
parent7c76a33243a725918bb26a9bdae7e6ee1bd61962 (diff)
downloadpackages_apps_Trebuchet-0c7b01a69495a7f495aa4dee0419e0bb46040e2d.tar.gz
packages_apps_Trebuchet-0c7b01a69495a7f495aa4dee0419e0bb46040e2d.tar.bz2
packages_apps_Trebuchet-0c7b01a69495a7f495aa4dee0419e0bb46040e2d.zip
Merge "Add support for work profile promise icons." into ub-launcher3-qt-future-dev
-rw-r--r--src/com/android/launcher3/InstallShortcutReceiver.java17
-rw-r--r--src/com/android/launcher3/LauncherModel.java4
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompat.java6
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVL.java14
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVQ.java14
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatVL.java13
-rw-r--r--src/com/android/launcher3/model/AddWorkspaceItemsTask.java29
7 files changed, 68 insertions, 29 deletions
diff --git a/src/com/android/launcher3/InstallShortcutReceiver.java b/src/com/android/launcher3/InstallShortcutReceiver.java
index 17fbb791c..f6ed70ed0 100644
--- a/src/com/android/launcher3/InstallShortcutReceiver.java
+++ b/src/com/android/launcher3/InstallShortcutReceiver.java
@@ -133,7 +133,8 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
String pkg = getIntentPackage(info.launchIntent);
if (!TextUtils.isEmpty(pkg)
- && !launcherApps.isPackageEnabledForProfile(pkg, info.user)) {
+ && !launcherApps.isPackageEnabledForProfile(pkg, info.user)
+ && !info.isActivity) {
if (DBG) {
Log.d(TAG, "Ignoring shortcut for absent package: " + info.launchIntent);
}
@@ -454,6 +455,8 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
.object()
.key(LAUNCH_INTENT_KEY).value(launchIntent.toUri(0))
.key(NAME_KEY).value(name)
+ .key(USER_HANDLE_KEY).value(
+ UserManagerCompat.getInstance(mContext).getSerialNumberForUser(user))
.key(APP_SHORTCUT_TYPE_KEY).value(isActivity);
if (icon != null) {
byte[] iconByteArray = GraphicsUtils.flattenBitmap(icon);
@@ -475,7 +478,7 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
public Pair<ItemInfo, Object> getItemInfo() {
if (isActivity) {
- WorkspaceItemInfo si = createWorkspaceItemInfo(data,
+ WorkspaceItemInfo si = createWorkspaceItemInfo(data, user,
LauncherAppState.getInstance(mContext));
si.itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
si.status |= WorkspaceItemInfo.FLAG_AUTOINSTALL_ICON;
@@ -500,7 +503,7 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
return Pair.create(widgetInfo, providerInfo);
} else {
WorkspaceItemInfo itemInfo =
- createWorkspaceItemInfo(data, LauncherAppState.getInstance(mContext));
+ createWorkspaceItemInfo(data, user, LauncherAppState.getInstance(mContext));
return Pair.create(itemInfo, null);
}
}
@@ -618,7 +621,8 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
return new PendingInstallShortcutInfo(info, original.mContext);
}
- private static WorkspaceItemInfo createWorkspaceItemInfo(Intent data, LauncherAppState app) {
+ private static WorkspaceItemInfo createWorkspaceItemInfo(Intent data, UserHandle user,
+ LauncherAppState app) {
if (data == null) {
Log.e(TAG, "Can't construct WorkspaceItemInfo with null data");
return null;
@@ -635,10 +639,7 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
}
final WorkspaceItemInfo info = new WorkspaceItemInfo();
-
- // Only support intents for current user for now. Intents sent from other
- // users wouldn't get here without intent forwarding anyway.
- info.user = Process.myUserHandle();
+ info.user = user;
BitmapInfo iconInfo = null;
LauncherIcons li = LauncherIcons.obtain(app.getContext());
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index c0cf13544..a012412c5 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -134,11 +134,11 @@ public class LauncherModel extends BroadcastReceiver
/**
* Updates the icons and label of all pending icons for the provided package name.
*/
- public void updateSessionDisplayInfo(final String packageName) {
+ public void updateSessionDisplayInfo(final String packageName, final UserHandle user) {
HashSet<String> packages = new HashSet<>();
packages.add(packageName);
enqueueModelUpdateTask(new CacheDataUpdatedTask(
- CacheDataUpdatedTask.OP_SESSION_UPDATE, Process.myUserHandle(), packages));
+ CacheDataUpdatedTask.OP_SESSION_UPDATE, user, packages));
}
/**
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompat.java b/src/com/android/launcher3/compat/LauncherAppsCompat.java
index cdb5c4d2b..39f69498b 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompat.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompat.java
@@ -22,6 +22,7 @@ import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.PackageInstaller;
+import android.content.pm.PackageInstaller.SessionCallback;
import android.content.pm.ShortcutInfo;
import android.graphics.Rect;
import android.os.Bundle;
@@ -30,6 +31,7 @@ import android.os.UserHandle;
import androidx.annotation.Nullable;
import com.android.launcher3.Utilities;
+import com.android.launcher3.util.LooperExecutor;
import com.android.launcher3.util.PackageUserKey;
import java.util.List;
@@ -90,4 +92,8 @@ public abstract class LauncherAppsCompat {
@Nullable PackageUserKey packageUser);
public abstract List<PackageInstaller.SessionInfo> getAllPackageInstallerSessions();
+
+ public abstract void registerSessionCallback(LooperExecutor executor,
+ SessionCallback sessionCallback);
+ public abstract void unregisterSessionCallback(SessionCallback sessionCallback);
}
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
index 1885d8f03..281274ce0 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
@@ -23,6 +23,7 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageInstaller;
+import android.content.pm.PackageInstaller.SessionCallback;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
@@ -35,6 +36,7 @@ import android.util.Log;
import com.android.launcher3.compat.ShortcutConfigActivityInfo.ShortcutConfigActivityInfoVL;
import com.android.launcher3.testing.TestProtocol;
+import com.android.launcher3.util.LooperExecutor;
import com.android.launcher3.util.PackageUserKey;
import java.util.ArrayList;
@@ -212,5 +214,17 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat {
public List<PackageInstaller.SessionInfo> getAllPackageInstallerSessions() {
return mContext.getPackageManager().getPackageInstaller().getAllSessions();
}
+
+ @Override
+ public void registerSessionCallback(LooperExecutor executor, SessionCallback sessionCallback) {
+ mContext.getPackageManager().getPackageInstaller().registerSessionCallback(sessionCallback,
+ executor.getHandler());
+ }
+
+ @Override
+ public void unregisterSessionCallback(SessionCallback sessionCallback) {
+ mContext.getPackageManager().getPackageInstaller()
+ .unregisterSessionCallback(sessionCallback);
+ }
}
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVQ.java b/src/com/android/launcher3/compat/LauncherAppsCompatVQ.java
index 0a1811e34..48805afa0 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVQ.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVQ.java
@@ -18,8 +18,10 @@ package com.android.launcher3.compat;
import android.annotation.TargetApi;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.PackageInstaller;
+import android.content.pm.PackageInstaller.SessionCallback;
+
+import com.android.launcher3.util.LooperExecutor;
import java.util.List;
@@ -33,4 +35,14 @@ public class LauncherAppsCompatVQ extends LauncherAppsCompatVO {
public List<PackageInstaller.SessionInfo> getAllPackageInstallerSessions() {
return mLauncherApps.getAllPackageInstallerSessions();
}
+
+ @Override
+ public void registerSessionCallback(LooperExecutor executor, SessionCallback sessionCallback) {
+ mLauncherApps.registerPackageInstallerSessionCallback(executor, sessionCallback);
+ }
+
+ @Override
+ public void unregisterSessionCallback(SessionCallback sessionCallback) {
+ mLauncherApps.unregisterPackageInstallerSessionCallback(sessionCallback);
+ }
}
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
index 9c57e8ab5..409b21ddc 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
@@ -28,7 +28,6 @@ import android.os.UserHandle;
import android.text.TextUtils;
import android.util.SparseArray;
-import com.android.launcher3.LauncherModel;
import com.android.launcher3.SessionCommitReceiver;
import com.android.launcher3.Utilities;
import com.android.launcher3.icons.IconCache;
@@ -63,8 +62,8 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
mAppContext = context.getApplicationContext();
mInstaller = context.getPackageManager().getPackageInstaller();
mCache = LauncherAppState.getInstance(context).getIconCache();
- mInstaller.registerSessionCallback(mCallback, MODEL_EXECUTOR.getHandler());
mLauncherApps = LauncherAppsCompat.getInstance(context);
+ mLauncherApps.registerSessionCallback(MODEL_EXECUTOR, mCallback);
mPromiseIconIds = IntSet.wrap(IntArray.fromConcatString(
getPrefs(context).getString(PROMISE_ICON_IDS, "")));
@@ -126,7 +125,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
@Override
public void onStop() {
- mInstaller.unregisterSessionCallback(mCallback);
+ mLauncherApps.unregisterSessionCallback(mCallback);
}
@Thunk void sendUpdate(PackageInstallInfo info) {
@@ -222,12 +221,14 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
private SessionInfo pushSessionDisplayToLauncher(int sessionId) {
SessionInfo session = verify(mInstaller.getSessionInfo(sessionId));
if (session != null && session.getAppPackageName() != null) {
+ UserHandle user = getUserHandle(session);
mActiveSessions.put(session.getSessionId(),
- new PackageUserKey(session.getAppPackageName(), getUserHandle(session)));
- addSessionInfoToCache(session, getUserHandle(session));
+ new PackageUserKey(session.getAppPackageName(), user));
+ addSessionInfoToCache(session, user);
LauncherAppState app = LauncherAppState.getInstanceNoCreate();
if (app != null) {
- app.getModel().updateSessionDisplayInfo(session.getAppPackageName());
+ app.getModel().updateSessionDisplayInfo(session.getAppPackageName(),
+ user);
}
return session;
}
diff --git a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
index dfd5a708b..1b98783a7 100644
--- a/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
+++ b/src/com/android/launcher3/model/AddWorkspaceItemsTask.java
@@ -117,25 +117,30 @@ public class AddWorkspaceItemsTask extends BaseModelUpdateTask {
}
SessionInfo sessionInfo = packageInstaller.getActiveSessionInfo(item.user,
packageName);
+ List<LauncherActivityInfo> activities = launcherApps
+ .getActivityList(packageName, item.user);
+ boolean hasActivity = activities != null && !activities.isEmpty();
+
if (sessionInfo == null) {
- List<LauncherActivityInfo> activities = launcherApps
- .getActivityList(packageName, item.user);
- if (activities != null && !activities.isEmpty()) {
- // App was installed while launcher was in the background.
- itemInfo = new AppInfo(app.getContext(), activities.get(0), item.user)
- .makeWorkspaceItem();
- WorkspaceItemInfo wii = (WorkspaceItemInfo) itemInfo;
- wii.title = "";
- wii.applyFrom(app.getIconCache().getDefaultIcon(item.user));
- app.getIconCache().getTitleAndIcon(wii,
- ((WorkspaceItemInfo) itemInfo).usingLowResIcon());
- } else {
+ if (!hasActivity) {
// Session was cancelled, do not add.
continue;
}
} else {
workspaceInfo.setInstallProgress((int) sessionInfo.getProgress());
}
+
+ if (hasActivity) {
+ // App was installed while launcher was in the background,
+ // or app was already installed for another user.
+ itemInfo = new AppInfo(app.getContext(), activities.get(0), item.user)
+ .makeWorkspaceItem();
+ WorkspaceItemInfo wii = (WorkspaceItemInfo) itemInfo;
+ wii.title = "";
+ wii.applyFrom(app.getIconCache().getDefaultIcon(item.user));
+ app.getIconCache().getTitleAndIcon(wii,
+ ((WorkspaceItemInfo) itemInfo).usingLowResIcon());
+ }
}
// Add the shortcut to the db