From eb5f7cd96d9e8a3a3d1283ad98d220192bae56b2 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Thu, 23 Jan 2020 17:56:48 -0800 Subject: [PATCH] Sending the whole files list to DataLoader. Test: atest PackageManagerShellCommandTest Bug: b/136132412 b/133435829 b/148243920 Change-Id: I2d19be309c6a0366b225da2d26b0f4e15e6a60e2 --- .../server/pm/PackageInstallerSession.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index c3102f70a8100..a22332648e0b7 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -374,7 +374,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { private static final String[] EMPTY_STRING_ARRAY = new String[]{}; - private static final FileFilter sAddedFilter = new FileFilter() { + private static final FileFilter sAddedApkFilter = new FileFilter() { @Override public boolean accept(File file) { // Installers can't stage directories, so it's fine to ignore @@ -386,6 +386,16 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { return true; } }; + private static final FileFilter sAddedFilter = new FileFilter() { + @Override + public boolean accept(File file) { + // Installers can't stage directories, so it's fine to ignore + // entries like "lost+found". + if (file.isDirectory()) return false; + if (file.getName().endsWith(REMOVE_MARKER_EXTENSION)) return false; + return true; + } + }; private static final FileFilter sRemovedFilter = new FileFilter() { @Override public boolean accept(File file) { @@ -730,9 +740,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } @GuardedBy("mLock") - private File[] getAddedFilesLocked() { + private File[] getAddedApksLocked() { String[] names = getNamesLocked(); - return filterFiles(stageDir, names, sAddedFilter); + return filterFiles(stageDir, names, sAddedApkFilter); } @GuardedBy("mLock") @@ -1709,7 +1719,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { @GuardedBy("mLock") private void validateApexInstallLocked() throws PackageManagerException { - final File[] addedFiles = getAddedFilesLocked(); + final File[] addedFiles = getAddedApksLocked(); if (ArrayUtils.isEmpty(addedFiles)) { throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, "No packages staged"); } @@ -1797,7 +1807,7 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { } } - final File[] addedFiles = getAddedFilesLocked(); + final File[] addedFiles = getAddedApksLocked(); if (ArrayUtils.isEmpty(addedFiles) && removeSplitList.size() == 0) { throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, "No packages staged"); }