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
This commit is contained in:
JW Wang
2020-02-07 14:59:51 +08:00
parent 9c6da83401
commit dc1f92192a

View File

@@ -235,17 +235,14 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
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);
}
}
}
}