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);
-                        }
                     }
                 }
             }