Merge changes Id7ba8465,I769e7261,Ib1fac7e0

* changes:
  Simplify a logging message (3/n)
  Use PackageRollbackInfo#getVersionRolledBackFrom to simplify code (2/n)
  Implement VersionedPackage#equals (1/n)
This commit is contained in:
JW Wang
2020-01-03 14:18:03 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 25 deletions

View File

@@ -95,6 +95,20 @@ public final class VersionedPackage implements Parcelable {
return "VersionedPackage[" + mPackageName + "/" + mVersionCode + "]";
}
@Override
public boolean equals(Object o) {
return o instanceof VersionedPackage
&& ((VersionedPackage) o).mPackageName.equals(mPackageName)
&& ((VersionedPackage) o).mVersionCode == mVersionCode;
}
@Override
public int hashCode() {
// Roll our own hash function without using Objects#hash which incurs the overhead
// of autoboxing.
return 31 * mPackageName.hashCode() + Long.hashCode(mVersionCode);
}
@Override
public int describeContents() {
return 0;

View File

@@ -120,9 +120,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
RollbackInfo rollback = getAvailableRollback(failedPackage);
if (rollback == null) {
Slog.w(TAG, "Expected rollback but no valid rollback found for package: [ "
+ failedPackage.getPackageName() + "] with versionCode: ["
+ failedPackage.getVersionCode() + "]");
Slog.w(TAG, "Expected rollback but no valid rollback found for " + failedPackage);
return false;
}
rollbackPackage(rollback, failedPackage, rollbackReason);
@@ -212,11 +210,7 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
for (RollbackInfo rollback : rollbackManager.getAvailableRollbacks()) {
for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
boolean hasFailedPackage = packageRollback.getPackageName().equals(
failedPackage.getPackageName())
&& packageRollback.getVersionRolledBackFrom().getVersionCode()
== failedPackage.getVersionCode();
if (hasFailedPackage) {
if (packageRollback.getVersionRolledBackFrom().equals(failedPackage)) {
return rollback;
}
}
@@ -361,15 +355,6 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
}
}
private VersionedPackage getVersionedPackage(String packageName) {
try {
return new VersionedPackage(packageName, mContext.getPackageManager().getPackageInfo(
packageName, 0 /* flags */).getLongVersionCode());
} catch (PackageManager.NameNotFoundException e) {
return null;
}
}
/**
* Rolls back the session that owns {@code failedPackage}
*
@@ -432,14 +417,8 @@ public final class RollbackPackageHealthObserver implements PackageHealthObserve
List<RollbackInfo> rollbacks = rollbackManager.getAvailableRollbacks();
for (RollbackInfo rollback : rollbacks) {
String samplePackageName = rollback.getPackages().get(0).getPackageName();
VersionedPackage sampleVersionedPackage = getVersionedPackage(samplePackageName);
if (sampleVersionedPackage == null) {
Slog.e(TAG, "Failed to rollback " + samplePackageName);
continue;
}
rollbackPackage(rollback, sampleVersionedPackage,
PackageWatchdog.FAILURE_REASON_NATIVE_CRASH);
VersionedPackage sample = rollback.getPackages().get(0).getVersionRolledBackFrom();
rollbackPackage(rollback, sample, PackageWatchdog.FAILURE_REASON_NATIVE_CRASH);
}
}