Loading services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +20 −25 Original line number Diff line number Diff line Loading @@ -469,45 +469,40 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub { List<Rollback> restoreInProgress = new ArrayList<>(); Set<String> apexPackageNames = new HashSet<>(); synchronized (mLock) { for (Rollback rollback : mRollbacks) { if (rollback.isStaged()) { Iterator<Rollback> iter = mRollbacks.iterator(); while (iter.hasNext()) { Rollback rollback = iter.next(); if (!rollback.isStaged()) { // We only care about staged rollbacks here continue; } PackageInstaller.SessionInfo session = mContext.getPackageManager() .getPackageInstaller().getSessionInfo(rollback.getStagedSessionId()); if (session == null || session.isStagedSessionFailed()) { iter.remove(); rollback.delete(mAppDataRollbackHelper); continue; } if (session.isStagedSessionApplied()) { if (rollback.isEnabling()) { enabling.add(rollback); } else if (rollback.isRestoreUserDataInProgress()) { restoreInProgress.add(rollback); } apexPackageNames.addAll(rollback.getApexPackageNames()); } apexPackageNames.addAll(rollback.getApexPackageNames()); } } for (Rollback rollback : enabling) { PackageInstaller installer = mContext.getPackageManager().getPackageInstaller(); PackageInstaller.SessionInfo session = installer.getSessionInfo(rollback.getStagedSessionId()); if (session == null || session.isStagedSessionFailed()) { // TODO: Do we need to remove this from // mRollbacks, or is it okay to leave as // unavailable until the next reboot when it will go // away on its own? rollback.delete(mAppDataRollbackHelper); } else if (session.isStagedSessionApplied()) { makeRollbackAvailable(rollback); } } for (Rollback rollback : restoreInProgress) { PackageInstaller installer = mContext.getPackageManager().getPackageInstaller(); PackageInstaller.SessionInfo session = installer.getSessionInfo(rollback.getStagedSessionId()); // TODO: What if session is null? if (session != null) { if (session.isStagedSessionApplied() || session.isStagedSessionFailed()) { rollback.setRestoreUserDataInProgress(false); } } } for (String apexPackageName : apexPackageNames) { // We will not recieve notifications when an apex is updated, Loading Loading
services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +20 −25 Original line number Diff line number Diff line Loading @@ -469,45 +469,40 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub { List<Rollback> restoreInProgress = new ArrayList<>(); Set<String> apexPackageNames = new HashSet<>(); synchronized (mLock) { for (Rollback rollback : mRollbacks) { if (rollback.isStaged()) { Iterator<Rollback> iter = mRollbacks.iterator(); while (iter.hasNext()) { Rollback rollback = iter.next(); if (!rollback.isStaged()) { // We only care about staged rollbacks here continue; } PackageInstaller.SessionInfo session = mContext.getPackageManager() .getPackageInstaller().getSessionInfo(rollback.getStagedSessionId()); if (session == null || session.isStagedSessionFailed()) { iter.remove(); rollback.delete(mAppDataRollbackHelper); continue; } if (session.isStagedSessionApplied()) { if (rollback.isEnabling()) { enabling.add(rollback); } else if (rollback.isRestoreUserDataInProgress()) { restoreInProgress.add(rollback); } apexPackageNames.addAll(rollback.getApexPackageNames()); } apexPackageNames.addAll(rollback.getApexPackageNames()); } } for (Rollback rollback : enabling) { PackageInstaller installer = mContext.getPackageManager().getPackageInstaller(); PackageInstaller.SessionInfo session = installer.getSessionInfo(rollback.getStagedSessionId()); if (session == null || session.isStagedSessionFailed()) { // TODO: Do we need to remove this from // mRollbacks, or is it okay to leave as // unavailable until the next reboot when it will go // away on its own? rollback.delete(mAppDataRollbackHelper); } else if (session.isStagedSessionApplied()) { makeRollbackAvailable(rollback); } } for (Rollback rollback : restoreInProgress) { PackageInstaller installer = mContext.getPackageManager().getPackageInstaller(); PackageInstaller.SessionInfo session = installer.getSessionInfo(rollback.getStagedSessionId()); // TODO: What if session is null? if (session != null) { if (session.isStagedSessionApplied() || session.isStagedSessionFailed()) { rollback.setRestoreUserDataInProgress(false); } } } for (String apexPackageName : apexPackageNames) { // We will not recieve notifications when an apex is updated, Loading