summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author JW Wang <wangchun@google.com> 2020-01-03 14:18:03 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-01-03 14:18:03 +0000
commitd02b11f663967456b981d45d42680a99eafdbe36 (patch)
tree09ebbb4b23ed640160015bcfc19675e49e37c849
parent19135aed4600bdac41789874e2de7262a3e90e1a (diff)
parent41c017e09cb8514f633d94f5f3be7cd66761aa19 (diff)
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)
-rw-r--r--core/java/android/content/pm/VersionedPackage.java14
-rw-r--r--services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java29
2 files changed, 18 insertions, 25 deletions
diff --git a/core/java/android/content/pm/VersionedPackage.java b/core/java/android/content/pm/VersionedPackage.java
index 3e22eb21d369..21df7ecef015 100644
--- a/core/java/android/content/pm/VersionedPackage.java
+++ b/core/java/android/content/pm/VersionedPackage.java
@@ -96,6 +96,20 @@ public final class VersionedPackage implements Parcelable {
}
@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;
}
diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
index bb095841bbaa..162a69546318 100644
--- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
+++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
@@ -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);
}
}