Loading services/core/java/com/android/server/rollback/RollbackData.java +25 −0 Original line number Diff line number Diff line Loading @@ -23,9 +23,11 @@ import android.content.rollback.RollbackInfo; import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.text.ParseException; import java.time.Instant; import java.util.ArrayList; /** * Information about a rollback available for a set of atomically installed * packages. Loading Loading @@ -138,4 +140,27 @@ class RollbackData { public boolean isStaged() { return info.isStaged(); } static String rollbackStateToString(@RollbackState int state) { switch (state) { case RollbackData.ROLLBACK_STATE_ENABLING: return "enabling"; case RollbackData.ROLLBACK_STATE_AVAILABLE: return "available"; case RollbackData.ROLLBACK_STATE_COMMITTED: return "committed"; } throw new AssertionError("Invalid rollback state: " + state); } static @RollbackState int rollbackStateFromString(String state) throws ParseException { switch (state) { case "enabling": return RollbackData.ROLLBACK_STATE_ENABLING; case "available": return RollbackData.ROLLBACK_STATE_AVAILABLE; case "committed": return RollbackData.ROLLBACK_STATE_COMMITTED; } throw new ParseException("Invalid rollback state: " + state, 0); } public String getStateAsString() { return rollbackStateToString(state); } } services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +38 −0 Original line number Diff line number Diff line Loading @@ -50,11 +50,14 @@ import android.util.SparseLongArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ArrayUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.pm.Installer; import java.io.File; import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; import java.security.SecureRandom; import java.time.Instant; import java.time.temporal.ChronoUnit; Loading Loading @@ -1273,4 +1276,39 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub { + rollbackData.info.getRollbackId(), ioe); } } @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); synchronized (mLock) { for (RollbackData data : mRollbacks) { RollbackInfo info = data.info; ipw.println(info.getRollbackId() + ":"); ipw.increaseIndent(); ipw.println("-state: " + data.getStateAsString()); ipw.println("-timestamp: " + data.timestamp); if (data.stagedSessionId != -1) { ipw.println("-stagedSessionId: " + data.stagedSessionId); } ipw.println("-packages:"); ipw.increaseIndent(); for (PackageRollbackInfo pkg : info.getPackages()) { ipw.println(pkg.getPackageName() + " " + pkg.getVersionRolledBackFrom().getLongVersionCode() + " -> " + pkg.getVersionRolledBackTo().getLongVersionCode()); } ipw.decreaseIndent(); if (data.state == RollbackData.ROLLBACK_STATE_COMMITTED) { ipw.println("-causePackages:"); ipw.increaseIndent(); for (VersionedPackage cPkg : info.getCausePackages()) { ipw.println(cPkg.getPackageName() + " " + cPkg.getLongVersionCode()); } ipw.decreaseIndent(); ipw.println("-committedSessionId: " + info.getCommittedSessionId()); } ipw.decreaseIndent(); } } } } services/core/java/com/android/server/rollback/RollbackStore.java +3 −19 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.server.rollback; import static com.android.server.rollback.RollbackData.rollbackStateFromString; import static com.android.server.rollback.RollbackData.rollbackStateToString; import android.annotation.NonNull; import android.content.pm.VersionedPackage; import android.content.rollback.PackageRollbackInfo; Loading Loading @@ -401,23 +404,4 @@ class RollbackStore { file.delete(); } } private static String rollbackStateToString(@RollbackData.RollbackState int state) { switch (state) { case RollbackData.ROLLBACK_STATE_ENABLING: return "enabling"; case RollbackData.ROLLBACK_STATE_AVAILABLE: return "available"; case RollbackData.ROLLBACK_STATE_COMMITTED: return "committed"; } throw new AssertionError("Invalid rollback state: " + state); } private static @RollbackData.RollbackState int rollbackStateFromString(String state) throws ParseException { switch (state) { case "enabling": return RollbackData.ROLLBACK_STATE_ENABLING; case "available": return RollbackData.ROLLBACK_STATE_AVAILABLE; case "committed": return RollbackData.ROLLBACK_STATE_COMMITTED; } throw new ParseException("Invalid rollback state: " + state, 0); } } Loading
services/core/java/com/android/server/rollback/RollbackData.java +25 −0 Original line number Diff line number Diff line Loading @@ -23,9 +23,11 @@ import android.content.rollback.RollbackInfo; import java.io.File; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.text.ParseException; import java.time.Instant; import java.util.ArrayList; /** * Information about a rollback available for a set of atomically installed * packages. Loading Loading @@ -138,4 +140,27 @@ class RollbackData { public boolean isStaged() { return info.isStaged(); } static String rollbackStateToString(@RollbackState int state) { switch (state) { case RollbackData.ROLLBACK_STATE_ENABLING: return "enabling"; case RollbackData.ROLLBACK_STATE_AVAILABLE: return "available"; case RollbackData.ROLLBACK_STATE_COMMITTED: return "committed"; } throw new AssertionError("Invalid rollback state: " + state); } static @RollbackState int rollbackStateFromString(String state) throws ParseException { switch (state) { case "enabling": return RollbackData.ROLLBACK_STATE_ENABLING; case "available": return RollbackData.ROLLBACK_STATE_AVAILABLE; case "committed": return RollbackData.ROLLBACK_STATE_COMMITTED; } throw new ParseException("Invalid rollback state: " + state, 0); } public String getStateAsString() { return rollbackStateToString(state); } }
services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java +38 −0 Original line number Diff line number Diff line Loading @@ -50,11 +50,14 @@ import android.util.SparseLongArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ArrayUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.pm.Installer; import java.io.File; import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; import java.security.SecureRandom; import java.time.Instant; import java.time.temporal.ChronoUnit; Loading Loading @@ -1273,4 +1276,39 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub { + rollbackData.info.getRollbackId(), ioe); } } @Override protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); synchronized (mLock) { for (RollbackData data : mRollbacks) { RollbackInfo info = data.info; ipw.println(info.getRollbackId() + ":"); ipw.increaseIndent(); ipw.println("-state: " + data.getStateAsString()); ipw.println("-timestamp: " + data.timestamp); if (data.stagedSessionId != -1) { ipw.println("-stagedSessionId: " + data.stagedSessionId); } ipw.println("-packages:"); ipw.increaseIndent(); for (PackageRollbackInfo pkg : info.getPackages()) { ipw.println(pkg.getPackageName() + " " + pkg.getVersionRolledBackFrom().getLongVersionCode() + " -> " + pkg.getVersionRolledBackTo().getLongVersionCode()); } ipw.decreaseIndent(); if (data.state == RollbackData.ROLLBACK_STATE_COMMITTED) { ipw.println("-causePackages:"); ipw.increaseIndent(); for (VersionedPackage cPkg : info.getCausePackages()) { ipw.println(cPkg.getPackageName() + " " + cPkg.getLongVersionCode()); } ipw.decreaseIndent(); ipw.println("-committedSessionId: " + info.getCommittedSessionId()); } ipw.decreaseIndent(); } } } }
services/core/java/com/android/server/rollback/RollbackStore.java +3 −19 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ package com.android.server.rollback; import static com.android.server.rollback.RollbackData.rollbackStateFromString; import static com.android.server.rollback.RollbackData.rollbackStateToString; import android.annotation.NonNull; import android.content.pm.VersionedPackage; import android.content.rollback.PackageRollbackInfo; Loading Loading @@ -401,23 +404,4 @@ class RollbackStore { file.delete(); } } private static String rollbackStateToString(@RollbackData.RollbackState int state) { switch (state) { case RollbackData.ROLLBACK_STATE_ENABLING: return "enabling"; case RollbackData.ROLLBACK_STATE_AVAILABLE: return "available"; case RollbackData.ROLLBACK_STATE_COMMITTED: return "committed"; } throw new AssertionError("Invalid rollback state: " + state); } private static @RollbackData.RollbackState int rollbackStateFromString(String state) throws ParseException { switch (state) { case "enabling": return RollbackData.ROLLBACK_STATE_ENABLING; case "available": return RollbackData.ROLLBACK_STATE_AVAILABLE; case "committed": return RollbackData.ROLLBACK_STATE_COMMITTED; } throw new ParseException("Invalid rollback state: " + state, 0); } }