summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2014-09-19 19:50:25 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-09-19 19:50:26 +0000
commit66af82cca76b313366e5429489aed85679c2c76e (patch)
tree59bf420eb2561d88743e90f2d499b4ec4080cad1
parent92e97dccab3d7016e0740648e1d467e37a42f3f8 (diff)
parent9448536b113afa6ceefce26604a1b44618d1d4f2 (diff)
downloadandroid_packages_apps_Trebuchet-66af82cca76b313366e5429489aed85679c2c76e.tar.gz
android_packages_apps_Trebuchet-66af82cca76b313366e5429489aed85679c2c76e.tar.bz2
android_packages_apps_Trebuchet-66af82cca76b313366e5429489aed85679c2c76e.zip
Merge "Adding support to delete unrestored icons and widgets" into ub-now-porkchop
-rw-r--r--src/com/android/launcher3/LauncherAppWidgetInfo.java5
-rw-r--r--src/com/android/launcher3/LauncherModel.java60
-rw-r--r--src/com/android/launcher3/ShortcutInfo.java5
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompat.java4
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatV16.java9
-rw-r--r--src/com/android/launcher3/compat/PackageInstallerCompatVL.java8
6 files changed, 72 insertions, 19 deletions
diff --git a/src/com/android/launcher3/LauncherAppWidgetInfo.java b/src/com/android/launcher3/LauncherAppWidgetInfo.java
index 50528b1bd..5c6535a24 100644
--- a/src/com/android/launcher3/LauncherAppWidgetInfo.java
+++ b/src/com/android/launcher3/LauncherAppWidgetInfo.java
@@ -46,6 +46,11 @@ public class LauncherAppWidgetInfo extends ItemInfo {
public static final int FLAG_UI_NOT_READY = 4;
/**
+ * Indicates that the widget restore has started.
+ */
+ public static final int FLAG_RESTORE_STARTED = 8;
+
+ /**
* Indicates that the widget hasn't been instantiated yet.
*/
static final int NO_ID = -1;
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 29cd9e36a..404ab9a11 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -86,6 +86,7 @@ public class LauncherModel extends BroadcastReceiver
implements LauncherAppsCompat.OnAppsChangedCallbackCompat {
static final boolean DEBUG_LOADERS = false;
private static final boolean DEBUG_RECEIVER = false;
+ private static final boolean REMOVE_UNRESTORED_ICONS = true;
static final String TAG = "Launcher.Model";
@@ -1885,7 +1886,8 @@ public class LauncherModel extends BroadcastReceiver
synchronized (sBgLock) {
clearSBgDataStructures();
- PackageInstallerCompat.getInstance(mContext).updateActiveSessionCache();
+ final HashSet<String> installingPkgs = PackageInstallerCompat
+ .getInstance(mContext).updateAndGetActiveSessionCache();
final ArrayList<Long> itemsToRemove = new ArrayList<Long>();
final ArrayList<Long> restoredRows = new ArrayList<Long>();
@@ -2014,6 +2016,25 @@ public class LauncherModel extends BroadcastReceiver
// installed later.
Launcher.addDumpLog(TAG,
"package not yet restored: " + cn, true);
+
+ if ((promiseType & ShortcutInfo.FLAG_RESTORE_STARTED) != 0) {
+ // Restore has started once.
+ } else if (installingPkgs.contains(cn.getPackageName())) {
+ // App restore has started. Update the flag
+ promiseType |= ShortcutInfo.FLAG_RESTORE_STARTED;
+ ContentValues values = new ContentValues();
+ values.put(LauncherSettings.Favorites.RESTORED,
+ promiseType);
+ String where = BaseColumns._ID + "= ?";
+ String[] args = {Long.toString(id)};
+ contentResolver.update(contentUri, values, where, args);
+
+ } else if (REMOVE_UNRESTORED_ICONS) {
+ Launcher.addDumpLog(TAG,
+ "Unrestored package removed: " + cn, true);
+ itemsToRemove.add(id);
+ continue;
+ }
} else if (isSdCardReady) {
// Do not wait for external media load anymore.
// Log the invalid package, and remove it
@@ -2221,6 +2242,19 @@ public class LauncherModel extends BroadcastReceiver
appWidgetInfo = new LauncherAppWidgetInfo(appWidgetId,
component);
appWidgetInfo.restoreStatus = restoreStatus;
+
+ if ((restoreStatus & LauncherAppWidgetInfo.FLAG_RESTORE_STARTED) != 0) {
+ // Restore has started once.
+ } else if (installingPkgs.contains(component.getPackageName())) {
+ // App restore has started. Update the flag
+ appWidgetInfo.restoreStatus |=
+ LauncherAppWidgetInfo.FLAG_RESTORE_STARTED;
+ } else if (REMOVE_UNRESTORED_ICONS) {
+ Launcher.addDumpLog(TAG,
+ "Unrestored package removed: " + component, true);
+ itemsToRemove.add(id);
+ continue;
+ }
}
appWidgetInfo.id = id;
@@ -2249,19 +2283,17 @@ public class LauncherModel extends BroadcastReceiver
break;
}
- if (isProviderReady) {
- String providerName = provider.provider.flattenToString();
- if (!providerName.equals(savedProvider) ||
- (appWidgetInfo.restoreStatus != restoreStatus)) {
- ContentValues values = new ContentValues();
- values.put(LauncherSettings.Favorites.APPWIDGET_PROVIDER,
- providerName);
- values.put(LauncherSettings.Favorites.RESTORED,
- appWidgetInfo.restoreStatus);
- String where = BaseColumns._ID + "= ?";
- String[] args = {Long.toString(id)};
- contentResolver.update(contentUri, values, where, args);
- }
+ String providerName = appWidgetInfo.providerName.flattenToString();
+ if (!providerName.equals(savedProvider) ||
+ (appWidgetInfo.restoreStatus != restoreStatus)) {
+ ContentValues values = new ContentValues();
+ values.put(LauncherSettings.Favorites.APPWIDGET_PROVIDER,
+ providerName);
+ values.put(LauncherSettings.Favorites.RESTORED,
+ appWidgetInfo.restoreStatus);
+ String where = BaseColumns._ID + "= ?";
+ String[] args = {Long.toString(id)};
+ contentResolver.update(contentUri, values, where, args);
}
sBgItemsIdMap.put(appWidgetInfo.id, appWidgetInfo);
sBgAppWidgets.add(appWidgetInfo);
diff --git a/src/com/android/launcher3/ShortcutInfo.java b/src/com/android/launcher3/ShortcutInfo.java
index 9abfb7f86..5b27f845e 100644
--- a/src/com/android/launcher3/ShortcutInfo.java
+++ b/src/com/android/launcher3/ShortcutInfo.java
@@ -55,6 +55,11 @@ public class ShortcutInfo extends ItemInfo {
public static final int FLAG_INSTALL_SESSION_ACTIVE = 4;
/**
+ * Indicates that the widget restore has started.
+ */
+ public static final int FLAG_RESTORE_STARTED = 8;
+
+ /**
* The intent used to start the application.
*/
Intent intent;
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompat.java b/src/com/android/launcher3/compat/PackageInstallerCompat.java
index 03857e693..0eb8754e8 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompat.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompat.java
@@ -20,6 +20,8 @@ import android.content.Context;
import com.android.launcher3.Utilities;
+import java.util.HashSet;
+
public abstract class PackageInstallerCompat {
public static final int STATUS_INSTALLED = 0;
@@ -42,7 +44,7 @@ public abstract class PackageInstallerCompat {
}
}
- public abstract void updateActiveSessionCache();
+ public abstract HashSet<String> updateAndGetActiveSessionCache();
public abstract void onPause();
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatV16.java b/src/com/android/launcher3/compat/PackageInstallerCompatV16.java
index 4cc6fc12f..1910d22ae 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompatV16.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompatV16.java
@@ -29,6 +29,7 @@ import org.json.JSONStringer;
import org.json.JSONTokener;
import java.util.ArrayList;
+import java.util.HashSet;
public class PackageInstallerCompatV16 extends PackageInstallerCompat {
@@ -76,9 +77,6 @@ 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();
@@ -169,4 +167,9 @@ public class PackageInstallerCompatV16 extends PackageInstallerCompat {
}
return value;
}
+
+ @Override
+ public HashSet<String> updateAndGetActiveSessionCache() {
+ return new HashSet<String>();
+ }
}
diff --git a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
index 2d56adf91..daacba834 100644
--- a/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
+++ b/src/com/android/launcher3/compat/PackageInstallerCompatVL.java
@@ -27,6 +27,7 @@ import com.android.launcher3.IconCache;
import com.android.launcher3.LauncherAppState;
import java.util.ArrayList;
+import java.util.HashSet;
public class PackageInstallerCompatVL extends PackageInstallerCompat {
@@ -57,11 +58,16 @@ public class PackageInstallerCompatVL extends PackageInstallerCompat {
}
@Override
- public void updateActiveSessionCache() {
+ public HashSet<String> updateAndGetActiveSessionCache() {
+ HashSet<String> activePackages = new HashSet<String>();
UserHandleCompat user = UserHandleCompat.myUserHandle();
for (SessionInfo info : mInstaller.getAllSessions()) {
addSessionInfoToCahce(info, user);
+ if (info.getAppPackageName() != null) {
+ activePackages.add(info.getAppPackageName());
+ }
}
+ return activePackages;
}
private void addSessionInfoToCahce(SessionInfo info, UserHandleCompat user) {