summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/LauncherModel.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2016-09-01 15:50:36 -0700
committerSunny Goyal <sunnygoyal@google.com>2016-09-02 11:06:18 -0700
commitc2936bcbdbdfbf3b499b39c65ce1942694f35676 (patch)
tree20dbb0c2798c004715a0c8ed434f646de4c101f9 /src/com/android/launcher3/LauncherModel.java
parentc92551f4954aef812ed1efee85ffd853c43c4d73 (diff)
downloadandroid_packages_apps_Trebuchet-c2936bcbdbdfbf3b499b39c65ce1942694f35676.tar.gz
android_packages_apps_Trebuchet-c2936bcbdbdfbf3b499b39c65ce1942694f35676.tar.bz2
android_packages_apps_Trebuchet-c2936bcbdbdfbf3b499b39c65ce1942694f35676.zip
Moving AppsAvailabilityCheck into a separate class
Change-Id: Ieea1b5100d63752d928049ad9b1d3b4f84234f0d
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r--src/com/android/launcher3/LauncherModel.java66
1 files changed, 14 insertions, 52 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java
index 68450e7a7..ccde0e9cf 100644
--- a/src/com/android/launcher3/LauncherModel.java
+++ b/src/com/android/launcher3/LauncherModel.java
@@ -59,6 +59,7 @@ import com.android.launcher3.folder.Folder;
import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.logging.FileLog;
import com.android.launcher3.model.GridSizeMigrationTask;
+import com.android.launcher3.model.SdCardAvailableReceiver;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.provider.ImportDataTask;
import com.android.launcher3.provider.LauncherDbUtils;
@@ -188,10 +189,6 @@ public class LauncherModel extends BroadcastReceiver
// times it is pinned.
static final Map<ShortcutKey, MutableInt> sBgPinnedShortcutCounts = new HashMap<>();
- // sPendingPackages is a set of packages which could be on sdcard and are not available yet
- static final HashMap<UserHandleCompat, HashSet<String>> sPendingPackages =
- new HashMap<UserHandleCompat, HashSet<String>>();
-
// </ only access in worker thread >
private IconCache mIconCache;
@@ -1150,9 +1147,12 @@ public class LauncherModel extends BroadcastReceiver
@Override
public void onPackageRemoved(String packageName, UserHandleCompat user) {
+ onPackagesRemoved(user, packageName);
+ }
+
+ public void onPackagesRemoved(UserHandleCompat user, String... packages) {
int op = PackageUpdatedTask.OP_REMOVE;
- enqueueItemUpdatedTask(new PackageUpdatedTask(op, new String[] { packageName },
- user));
+ enqueueItemUpdatedTask(new PackageUpdatedTask(op, packages, user));
}
@Override
@@ -1663,6 +1663,7 @@ public class LauncherModel extends BroadcastReceiver
final boolean isSafeMode = manager.isSafeMode();
final LauncherAppsCompat launcherApps = LauncherAppsCompat.getInstance(context);
final boolean isSdCardReady = Utilities.isBootCompleted();
+ final MultiHashMap<UserHandleCompat, String> pendingPackages = new MultiHashMap<>();
LauncherAppState app = LauncherAppState.getInstance();
InvariantDeviceProfile profile = app.getInvariantDeviceProfile();
@@ -1901,12 +1902,7 @@ public class LauncherModel extends BroadcastReceiver
// SdCard is not ready yet. Package might get available,
// once it is ready.
Log.d(TAG, "Invalid package: " + cn + " (check again later)");
- HashSet<String> pkgs = sPendingPackages.get(user);
- if (pkgs == null) {
- pkgs = new HashSet<String>();
- sPendingPackages.put(user, pkgs);
- }
- pkgs.add(cn.getPackageName());
+ pendingPackages.addToList(user, cn.getPackageName());
allowMissingTarget = true;
// Add the icon on the workspace anyway.
@@ -2298,10 +2294,13 @@ public class LauncherModel extends BroadcastReceiver
LauncherSettings.Favorites._ID, restoredRows), null);
}
- if (!isSdCardReady && !sPendingPackages.isEmpty()) {
- context.registerReceiver(new AppsAvailabilityCheck(),
+ if (!isSdCardReady && !pendingPackages.isEmpty()) {
+ context.registerReceiver(
+ new SdCardAvailableReceiver(
+ LauncherModel.this, mContext, pendingPackages),
new IntentFilter(Intent.ACTION_BOOT_COMPLETED),
- null, sWorker);
+ null,
+ sWorker);
}
// Remove any empty screens
@@ -2971,43 +2970,6 @@ public class LauncherModel extends BroadcastReceiver
sWorker.post(task);
}
- @Thunk class AppsAvailabilityCheck extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- synchronized (sBgLock) {
- final LauncherAppsCompat launcherApps = LauncherAppsCompat
- .getInstance(mApp.getContext());
- final PackageManager manager = context.getPackageManager();
- final ArrayList<String> packagesRemoved = new ArrayList<String>();
- final ArrayList<String> packagesUnavailable = new ArrayList<String>();
- for (Entry<UserHandleCompat, HashSet<String>> entry : sPendingPackages.entrySet()) {
- UserHandleCompat user = entry.getKey();
- packagesRemoved.clear();
- packagesUnavailable.clear();
- for (String pkg : entry.getValue()) {
- if (!launcherApps.isPackageEnabledForProfile(pkg, user)) {
- if (PackageManagerHelper.isAppOnSdcard(manager, pkg)) {
- packagesUnavailable.add(pkg);
- } else {
- packagesRemoved.add(pkg);
- }
- }
- }
- if (!packagesRemoved.isEmpty()) {
- enqueueItemUpdatedTask(new PackageUpdatedTask(PackageUpdatedTask.OP_REMOVE,
- packagesRemoved.toArray(new String[packagesRemoved.size()]), user));
- }
- if (!packagesUnavailable.isEmpty()) {
- enqueueItemUpdatedTask(new PackageUpdatedTask(PackageUpdatedTask.OP_UNAVAILABLE,
- packagesUnavailable.toArray(new String[packagesUnavailable.size()]), user));
- }
- }
- sPendingPackages.clear();
- }
- }
- }
-
private class PackageUpdatedTask implements Runnable {
int mOp;
String[] mPackages;