summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/compat
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2014-08-29 17:20:55 -0700
committerSunny Goyal <sunnygoyal@google.com>2014-09-04 08:18:33 -0700
commit349426234e8c5a0e5bcf2c8d94dbb9844b5f724a (patch)
tree7959007f77fe9293898b72b57b4b28c87b90527e /src/com/android/launcher3/compat
parent6a2c77856f1cfa402363cfbb04b5718b431bbc6e (diff)
downloadandroid_packages_apps_Trebuchet-349426234e8c5a0e5bcf2c8d94dbb9844b5f724a.tar.gz
android_packages_apps_Trebuchet-349426234e8c5a0e5bcf2c8d94dbb9844b5f724a.tar.bz2
android_packages_apps_Trebuchet-349426234e8c5a0e5bcf2c8d94dbb9844b5f724a.zip
Handling label and icon from SessionInfo.
> The ShortcutInfo stores state as bit flags and not as ints > Intents of auto-install shortcut are automatically updated upon installation > Icons/titles for active sessions are cached in IconCache Change-Id: I2047849f67d4a8aaf2bc346b58110325bb4807d4
Diffstat (limited to 'src/com/android/launcher3/compat')
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompat.java6
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatV16.java8
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatVL.java30
3 files changed, 35 insertions, 9 deletions
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompat.java b/src/com/android/launcher3/compat/PackageInstallerCompat.java
index 89a2157eb..0ae52bd23 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompat.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompat.java
@@ -22,6 +22,10 @@ import com.android.launcher3.Utilities;
public abstract class PackageInstallerCompat {
+ public static final int STATUS_INSTALLED = 0;
+ public static final int STATUS_INSTALLING = 1;
+ public static final int STATUS_FAILED = 2;
+
private static final Object sInstanceLock = new Object();
private static PackageInstallerCompat sInstance;
@@ -38,6 +42,8 @@ public abstract class PackageInstallerCompat {
}
}
+ public abstract void updateActiveSessionCache();
+
public abstract void onPause();
public abstract void onResume();
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatV16.java b/src/com/android/launcher3/compat/PackageInstallerCompatV16.java
index 6a2a02e48..4cc6fc12f 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompatV16.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompatV16.java
@@ -22,7 +22,6 @@ import android.text.TextUtils;
import android.util.Log;
import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.ShortcutInfo;
import org.json.JSONException;
import org.json.JSONObject;
@@ -77,6 +76,9 @@ public class PackageInstallerCompatV16 extends PackageInstallerCompat {
@Override
public void onStop() { }
+ @Override
+ public void updateActiveSessionCache() { }
+
private void replayUpdates() {
if (DEBUG) Log.d(TAG, "updates resumed");
LauncherAppState app = LauncherAppState.getInstanceNoCreate();
@@ -107,7 +109,7 @@ public class PackageInstallerCompatV16 extends PackageInstallerCompat {
PackageInstallInfo installInfo = new PackageInstallInfo(packageName);
installInfo.progress = progress;
installInfo.state = state;
- if (state == ShortcutInfo.PACKAGE_STATE_DEFAULT) {
+ if (state == STATUS_INSTALLED) {
// no longer necessary to track this package
editor.remove(packageName);
if (DEBUG) Log.d(TAG, "no longer tracking " + packageName);
@@ -123,7 +125,7 @@ public class PackageInstallerCompatV16 extends PackageInstallerCompat {
if (!mUseQueue) {
if (mReplayPending) {
replayUpdates();
- } else {
+ } else if (state != STATUS_INSTALLED) {
LauncherAppState app = LauncherAppState.getInstanceNoCreate();
ArrayList<PackageInstallInfo> update = new ArrayList<PackageInstallInfo>();
update.add(installInfo);
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
index c78ab9900..5d016a838 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
@@ -23,8 +23,8 @@ import android.content.pm.PackageInstaller.SessionInfo;
import android.util.Log;
import android.util.SparseArray;
+import com.android.launcher3.IconCache;
import com.android.launcher3.LauncherAppState;
-import com.android.launcher3.ShortcutInfo;
import java.util.ArrayList;
@@ -35,12 +35,14 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
private final SparseArray<SessionInfo> mPendingReplays = new SparseArray<SessionInfo>();
private final PackageInstaller mInstaller;
+ private final IconCache mCache;
private boolean mResumed;
private boolean mBound;
PackageInstallerCompatVL(Context context) {
mInstaller = context.getPackageManager().getPackageInstaller();
+ mCache = LauncherAppState.getInstance().getIconCache();
mResumed = false;
mBound = false;
@@ -53,6 +55,22 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
}
@Override
+ public void updateActiveSessionCache() {
+ UserHandleCompat user = UserHandleCompat.myUserHandle();
+ for (SessionInfo info : mInstaller.getAllSessions()) {
+ addSessionInfoToCahce(info, user);
+ }
+ }
+
+ private void addSessionInfoToCahce(SessionInfo info, UserHandleCompat user) {
+ String packageName = info.getAppPackageName();
+ if (packageName != null) {
+ mCache.cachePackageInstallInfo(packageName, user, info.getAppIcon(),
+ info.getAppLabel());
+ }
+ }
+
+ @Override
public void onStop() {
mInstaller.removeSessionCallback(mCallback);
}
@@ -98,14 +116,14 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
}
ArrayList<PackageInstallInfo> updates = new ArrayList<PackageInstallInfo>();
- if (newInfo != null) {
+ if ((newInfo != null) && (newInfo.state != STATUS_INSTALLED)) {
updates.add(newInfo);
}
- for (int i = mPendingReplays.size() - 1; i > 0; i--) {
+ for (int i = mPendingReplays.size() - 1; i >= 0; i--) {
SessionInfo session = mPendingReplays.valueAt(i);
if (session.getAppPackageName() != null) {
updates.add(new PackageInstallInfo(session.getAppPackageName(),
- ShortcutInfo.PACKAGE_STATE_INSTALLING,
+ STATUS_INSTALLING,
(int) (session.getProgress() * 100)));
}
}
@@ -121,6 +139,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
public void onCreated(int sessionId) {
SessionInfo session = mInstaller.getSessionInfo(sessionId);
if (session != null) {
+ addSessionInfoToCahce(session, UserHandleCompat.myUserHandle());
mPendingReplays.put(sessionId, session);
replayUpdates(null);
}
@@ -135,8 +154,7 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
// need to store this record for future updates, as the app list will get
// refreshed on resume.
replayUpdates(new PackageInstallInfo(session.getAppPackageName(),
- success ? ShortcutInfo.PACKAGE_STATE_DEFAULT
- : ShortcutInfo.PACKAGE_STATE_ERROR, 0));
+ success ? STATUS_INSTALLED : STATUS_FAILED, 0));
}
}