summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Sharkey <jsharkey@android.com> 2015-07-20 16:36:55 -0700
committer Jeff Sharkey <jsharkey@android.com> 2015-07-20 16:37:54 -0700
commit54d42be6eb149b3e43115e810e4a1b92e9865d05 (patch)
treef21108713cec8913e0a06aa37ede16ca380efc88
parent33c619bb52c9e3e62b7243c9b1d9a75189885427 (diff)
Avoid NPE when no staged installs.
listFiles() returns null instead of empty list; deal with it. Bug: 22608671 Change-Id: I60dabec31932af3cded915c6927a4c5e5c71775d
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerService.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 07de6f546ee4..0366fff4eee9 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -91,7 +91,6 @@ import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.ImageUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.IoThread;
-import com.google.android.collect.Sets;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
@@ -106,6 +105,7 @@ import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Random;
@@ -221,7 +221,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
reconcileStagesLocked(StorageManager.UUID_PRIVATE_INTERNAL);
- final ArraySet<File> unclaimedIcons = Sets.newArraySet(
+ final ArraySet<File> unclaimedIcons = newArraySet(
mSessionsDir.listFiles());
// Ignore stages and icons claimed by active sessions
@@ -245,7 +245,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
private void reconcileStagesLocked(String volumeUuid) {
final File stagingDir = buildStagingDir(volumeUuid);
- final ArraySet<File> unclaimedStages = Sets.newArraySet(
+ final ArraySet<File> unclaimedStages = newArraySet(
stagingDir.listFiles(sStageFilter));
// Ignore stages claimed by active sessions
@@ -1091,6 +1091,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub {
.build();
}
+ public static <E> ArraySet<E> newArraySet(E... elements) {
+ final ArraySet<E> set = new ArraySet<E>();
+ if (elements != null) {
+ set.ensureCapacity(elements.length);
+ Collections.addAll(set, elements);
+ }
+ return set;
+ }
+
private static class Callbacks extends Handler {
private static final int MSG_SESSION_CREATED = 1;
private static final int MSG_SESSION_BADGING_CHANGED = 2;