diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java index 3810e14ff04d5..951f462ed2013 100644 --- a/services/core/java/com/android/server/pm/ApexManager.java +++ b/services/core/java/com/android/server/pm/ApexManager.java @@ -349,6 +349,11 @@ public abstract class ApexManager { */ public abstract boolean destroyCeSnapshotsNotSpecified(int userId, int[] retainRollbackIds); + /** + * Inform apexd that the boot has completed. + */ + public abstract void markBootCompleted(); + /** * Dumps various state information to the provided {@link PrintWriter} object. * @@ -880,6 +885,15 @@ public abstract class ApexManager { } } + @Override + public void markBootCompleted() { + try { + waitForApexService().markBootCompleted(); + } catch (RemoteException re) { + Slog.e(TAG, "Unable to contact apexservice", re); + } + } + /** * Dump information about the packages contained in a particular cache * @param packagesCache the cache to print information about. @@ -1126,6 +1140,11 @@ public abstract class ApexManager { return true; } + @Override + public void markBootCompleted() { + // No-op + } + @Override void dump(PrintWriter pw, String packageName) { // No-op diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java index c99a56fc6f8fc..f94b32bc52b54 100644 --- a/services/core/java/com/android/server/pm/StagingManager.java +++ b/services/core/java/com/android/server/pm/StagingManager.java @@ -164,6 +164,7 @@ public class StagingManager { public void onBootPhase(int phase) { if (phase == SystemService.PHASE_BOOT_COMPLETED && sStagingManager != null) { sStagingManager.markStagedSessionsAsSuccessful(); + sStagingManager.markBootCompleted(); } } } @@ -179,6 +180,10 @@ public class StagingManager { } } + private void markBootCompleted() { + mApexManager.markBootCompleted(); + } + ParceledListSlice getSessions(int callingUid) { final List result = new ArrayList<>(); synchronized (mStagedSessions) {