Rewrite the broadcast receiver for ACTION_CANCEL_ENABLE_ROLLBACK (1/n)
It makes sense to remove a rollback when
ACTION_CANCEL_ENABLE_ROLLBACK is received no matter it is a new rollback
or not. For the sake of defensive programming, we don't want to remove a
rollback which is already made available or committed.
Bug: 149069841
Test: atest RollbackTest
Change-Id: I3d8004916e9438bc03fcb0c71a83617411be7379
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
index a63f921..1188a34 100644
--- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
+++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
@@ -235,17 +235,14 @@
Slog.v(TAG, "broadcast=ACTION_CANCEL_ENABLE_ROLLBACK token=" + token);
}
synchronized (mLock) {
- Rollback found = null;
- for (Rollback rollback : mRollbacks) {
- if (rollback.isNewRollback() && rollback.hasToken(token)) {
- found = rollback;
+ for (int i = 0; i < mRollbacks.size(); ++i) {
+ Rollback rollback = mRollbacks.get(i);
+ if (rollback.hasToken(token) && rollback.isEnabling()) {
+ mRollbacks.remove(i);
+ rollback.delete(mAppDataRollbackHelper);
break;
}
}
- if (found != null) {
- mRollbacks.remove(found);
- found.delete(mAppDataRollbackHelper);
- }
}
}
}