diff options
5 files changed, 17 insertions, 97 deletions
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 3a9e9bf01f04..673a8a5edcba 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -371,13 +371,6 @@ public class PackageInstaller { "android.content.pm.extra.UNARCHIVE_ALL_USERS"; /** - * A list of warnings that occurred during installation. - * - * @hide - */ - public static final String EXTRA_WARNINGS = "android.content.pm.extra.WARNINGS"; - - /** * Streaming installation pending. * Caller should make sure DataLoader is able to prepare image and reinitiate the operation. * diff --git a/services/core/java/com/android/server/pm/InstallRequest.java b/services/core/java/com/android/server/pm/InstallRequest.java index 1c7024b7d239..2d192826ba9a 100644 --- a/services/core/java/com/android/server/pm/InstallRequest.java +++ b/services/core/java/com/android/server/pm/InstallRequest.java @@ -22,8 +22,6 @@ import static android.content.pm.PackageManager.INSTALL_SCENARIO_DEFAULT; import static android.content.pm.PackageManager.INSTALL_SUCCEEDED; import static android.os.Process.INVALID_UID; -import static com.android.server.art.model.DexoptResult.DexContainerFileDexoptResult; -import static com.android.server.art.model.DexoptResult.PackageDexoptResult; import static com.android.server.pm.PackageManagerService.EMPTY_INT_ARRAY; import static com.android.server.pm.PackageManagerService.SCAN_AS_INSTANT_APP; import static com.android.server.pm.PackageManagerService.TAG; @@ -58,7 +56,6 @@ import com.android.server.pm.pkg.parsing.ParsingPackageUtils; import java.io.File; import java.util.ArrayList; -import java.util.LinkedHashSet; import java.util.List; final class InstallRequest { @@ -150,9 +147,6 @@ final class InstallRequest { @NonNull private int[] mUpdateBroadcastInstantUserIds = EMPTY_INT_ARRAY; - @NonNull - private ArrayList<String> mWarnings = new ArrayList<>(); - // New install InstallRequest(InstallingSession params) { mUserId = params.getUser().getIdentifier(); @@ -664,11 +658,6 @@ final class InstallRequest { return mUpdateBroadcastInstantUserIds; } - @NonNull - public ArrayList<String> getWarnings() { - return mWarnings; - } - public void setScanFlags(int scanFlags) { mScanFlags = scanFlags; } @@ -866,10 +855,6 @@ final class InstallRequest { } } - public void addWarning(@NonNull String warning) { - mWarnings.add(warning); - } - public void onPrepareStarted() { if (mPackageMetrics != null) { mPackageMetrics.onStepStarted(PackageMetrics.STEP_PREPARE); @@ -919,37 +904,22 @@ final class InstallRequest { } public void onDexoptFinished(DexoptResult dexoptResult) { - // Only report external profile warnings when installing from adb. The goal is to warn app - // developers if they have provided bad external profiles, so it's not beneficial to report - // those warnings in the normal app install workflow. - if (isInstallFromAdb()) { - var externalProfileErrors = new LinkedHashSet<String>(); - for (PackageDexoptResult packageResult : dexoptResult.getPackageDexoptResults()) { - for (DexContainerFileDexoptResult fileResult : - packageResult.getDexContainerFileDexoptResults()) { - externalProfileErrors.addAll(fileResult.getExternalProfileErrors()); - } - } - if (!externalProfileErrors.isEmpty()) { - addWarning("Error occurred during dexopt when processing external profiles:\n " - + String.join("\n ", externalProfileErrors)); - } + if (mPackageMetrics == null) { + return; } - - // Report dexopt metrics. - if (mPackageMetrics != null) { - mDexoptStatus = dexoptResult.getFinalStatus(); - if (mDexoptStatus == DexoptResult.DEXOPT_PERFORMED) { - long durationMillis = 0; - for (PackageDexoptResult packageResult : dexoptResult.getPackageDexoptResults()) { - for (DexContainerFileDexoptResult fileResult : - packageResult.getDexContainerFileDexoptResults()) { - durationMillis += fileResult.getDex2oatWallTimeMillis(); - } - } - mPackageMetrics.onStepFinished(PackageMetrics.STEP_DEXOPT, durationMillis); + mDexoptStatus = dexoptResult.getFinalStatus(); + if (mDexoptStatus != DexoptResult.DEXOPT_PERFORMED) { + return; + } + long durationMillis = 0; + for (DexoptResult.PackageDexoptResult packageResult : + dexoptResult.getPackageDexoptResults()) { + for (DexoptResult.DexContainerFileDexoptResult fileResult : + packageResult.getDexContainerFileDexoptResults()) { + durationMillis += fileResult.getDex2oatWallTimeMillis(); } } + mPackageMetrics.onStepFinished(PackageMetrics.STEP_DEXOPT, durationMillis); } public void onInstallCompleted() { diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index d0e5f96f8d0f..662703992ad8 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -2930,40 +2930,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { * @return a future that will be completed when the whole process is completed. */ private CompletableFuture<Void> install() { - // `futures` either contains only one session (`this`) or contains one parent session - // (`this`) and n-1 child sessions. List<CompletableFuture<InstallResult>> futures = installNonStaged(); CompletableFuture<InstallResult>[] arr = new CompletableFuture[futures.size()]; return CompletableFuture.allOf(futures.toArray(arr)).whenComplete((r, t) -> { if (t == null) { setSessionApplied(); - var multiPackageWarnings = new ArrayList<String>(); - if (isMultiPackage()) { - // This is a parent session. Collect warnings from children. - for (CompletableFuture<InstallResult> f : futures) { - InstallResult result = f.join(); - if (result.session != this && result.extras != null) { - ArrayList<String> childWarnings = result.extras.getStringArrayList( - PackageInstaller.EXTRA_WARNINGS); - if (!ArrayUtils.isEmpty(childWarnings)) { - multiPackageWarnings.addAll(childWarnings); - } - } - } - } for (CompletableFuture<InstallResult> f : futures) { InstallResult result = f.join(); - Bundle extras = result.extras; - if (isMultiPackage() && result.session == this - && !multiPackageWarnings.isEmpty()) { - if (extras == null) { - extras = new Bundle(); - } - extras.putStringArrayList( - PackageInstaller.EXTRA_WARNINGS, multiPackageWarnings); - } result.session.dispatchSessionFinished( - INSTALL_SUCCEEDED, "Session installed", extras); + INSTALL_SUCCEEDED, "Session installed", result.extras); } } else { PackageManagerException e = (PackageManagerException) t.getCause(); @@ -5214,10 +5189,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { if (!TextUtils.isEmpty(existing)) { fillIn.putExtra(PackageInstaller.EXTRA_OTHER_PACKAGE_NAME, existing); } - ArrayList<String> warnings = extras.getStringArrayList(PackageInstaller.EXTRA_WARNINGS); - if (!ArrayUtils.isEmpty(warnings)) { - fillIn.putStringArrayListExtra(PackageInstaller.EXTRA_WARNINGS, warnings); - } } try { final BroadcastOptions options = BroadcastOptions.makeBasic(); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index ddc8369738de..a99a0c05f3bd 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1434,9 +1434,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService break; } } - if (!request.getWarnings().isEmpty()) { - extras.putStringArrayList(PackageInstaller.EXTRA_WARNINGS, request.getWarnings()); - } return extras; } diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index 7264e2eff4aa..3a9272dc2003 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -4397,21 +4397,10 @@ class PackageManagerShellCommand extends ShellCommand { session.commit(receiver.getIntentSender()); if (!session.isStaged()) { final Intent result = receiver.getResult(); - int status = result.getIntExtra( - PackageInstaller.EXTRA_STATUS, PackageInstaller.STATUS_FAILURE); - List<String> warnings = - result.getStringArrayListExtra(PackageInstaller.EXTRA_WARNINGS); + final int status = result.getIntExtra(PackageInstaller.EXTRA_STATUS, + PackageInstaller.STATUS_FAILURE); if (status == PackageInstaller.STATUS_SUCCESS) { - if (!ArrayUtils.isEmpty(warnings)) { - // Don't start the output string with "Success" because that will make adb - // treat this as a success. - for (String warning : warnings) { - pw.println("Warning: " + warning); - } - // Treat warnings as failure to draw app developers' attention. - status = PackageInstaller.STATUS_FAILURE; - pw.println("Completed with warning(s)"); - } else if (logSuccess) { + if (logSuccess) { pw.println("Success"); } } else { |