Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d02b11f6 authored by JW Wang's avatar JW Wang Committed by Android (Google) Code Review
Browse files

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)
parents 19135aed 41c017e0
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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;
+4 −25
Original line number Diff line number Diff line
@@ -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);
        }
    }