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:
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user