Code cleanup (13/n)
No need for ACTION_SESSION_UPDATED listener anymore since the intent
will be sent after the session becomes ready or failed.
Bug: 210359798
Test: atest StagedRollbackTest CtsRootRollbackManagerHostTestCases
Change-Id: I479f5266d61e5c3dc2df3b0c910f43ff6b795e3c
diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
index 1856786..fd64c75 100644
--- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
+++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
@@ -16,16 +16,11 @@
package com.android.server.rollback;
-import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
-
import android.annotation.AnyThread;
import android.annotation.Nullable;
import android.annotation.WorkerThread;
-import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.pm.VersionedPackage;
import android.content.rollback.PackageRollbackInfo;
@@ -240,64 +235,6 @@
return null;
}
- @WorkerThread
- private BroadcastReceiver listenForStagedSessionReady(RollbackManager rollbackManager,
- int rollbackId, @Nullable VersionedPackage logPackage) {
- assertInWorkerThread();
- BroadcastReceiver sessionUpdatedReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- handleStagedSessionChange(rollbackManager,
- rollbackId, this /* BroadcastReceiver */, logPackage);
- }
- };
- IntentFilter sessionUpdatedFilter =
- new IntentFilter(PackageInstaller.ACTION_SESSION_UPDATED);
- mContext.registerReceiver(sessionUpdatedReceiver, sessionUpdatedFilter, null, mHandler);
- return sessionUpdatedReceiver;
- }
-
- @WorkerThread
- private void handleStagedSessionChange(RollbackManager rollbackManager, int rollbackId,
- BroadcastReceiver listener, @Nullable VersionedPackage logPackage) {
- assertInWorkerThread();
- PackageInstaller packageInstaller =
- mContext.getPackageManager().getPackageInstaller();
- List<RollbackInfo> recentRollbacks =
- rollbackManager.getRecentlyCommittedRollbacks();
- for (int i = 0; i < recentRollbacks.size(); i++) {
- RollbackInfo recentRollback = recentRollbacks.get(i);
- int sessionId = recentRollback.getCommittedSessionId();
- if ((rollbackId == recentRollback.getRollbackId())
- && (sessionId != PackageInstaller.SessionInfo.INVALID_ID)) {
- PackageInstaller.SessionInfo sessionInfo =
- packageInstaller.getSessionInfo(sessionId);
- if (sessionInfo.isStagedSessionReady() && markStagedSessionHandled(rollbackId)) {
- mContext.unregisterReceiver(listener);
- saveStagedRollbackId(rollbackId, logPackage);
- WatchdogRollbackLogger.logEvent(logPackage,
- FrameworkStatsLog
- .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED,
- WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN,
- "");
- } else if (sessionInfo.isStagedSessionFailed()
- && markStagedSessionHandled(rollbackId)) {
- WatchdogRollbackLogger.logEvent(logPackage,
- FrameworkStatsLog
- .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
- WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN,
- "");
- mContext.unregisterReceiver(listener);
- }
- }
- }
-
- // Wait for all pending staged sessions to get handled before rebooting.
- if (isPendingStagedSessionsEmpty()) {
- mContext.getSystemService(PowerManager.class).reboot("Rollback staged install");
- }
- }
-
/**
* Returns {@code true} if staged session associated with {@code rollbackId} was marked
* as handled, {@code false} if already handled.
@@ -447,12 +384,12 @@
if (status == RollbackManager.STATUS_SUCCESS) {
if (rollback.isStaged()) {
int rollbackId = rollback.getRollbackId();
- mPendingStagedRollbackIds.add(rollbackId);
- BroadcastReceiver listener =
- listenForStagedSessionReady(rollbackManager, rollbackId,
- logPackage);
- handleStagedSessionChange(rollbackManager, rollbackId, listener,
- logPackage);
+ saveStagedRollbackId(rollbackId, logPackage);
+ WatchdogRollbackLogger.logEvent(logPackage,
+ FrameworkStatsLog
+ .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED,
+ reasonToLog, failedPackageToLog);
+
} else {
WatchdogRollbackLogger.logEvent(logPackage,
FrameworkStatsLog
@@ -460,14 +397,18 @@
reasonToLog, failedPackageToLog);
}
} else {
- if (rollback.isStaged()) {
- markStagedSessionHandled(rollback.getRollbackId());
- }
WatchdogRollbackLogger.logEvent(logPackage,
FrameworkStatsLog
.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
reasonToLog, failedPackageToLog);
}
+ if (rollback.isStaged()) {
+ markStagedSessionHandled(rollback.getRollbackId());
+ // Wait for all pending staged sessions to get handled before rebooting.
+ if (isPendingStagedSessionsEmpty()) {
+ mContext.getSystemService(PowerManager.class).reboot("Rollback staged install");
+ }
+ }
};
final LocalIntentReceiver rollbackReceiver = new LocalIntentReceiver(result -> {