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

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

Merge changes I7579d6c9,I329b1f1a,I46d08fe2

* changes:
  No need to call #updateRollbackLifetimeDurationInMillis (3/n)
  Register an OnPropertiesChangedListener in onBootCompleted (2/n)
  Squash runnables in onBootCompleted (1/n)
parents 8d276715 4ff9d084
Loading
Loading
Loading
Loading
+9 −4
Original line number Original line Diff line number Diff line
@@ -43,6 +43,7 @@ import android.content.rollback.RollbackManager;
import android.os.Binder;
import android.os.Binder;
import android.os.Environment;
import android.os.Environment;
import android.os.Handler;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.os.HandlerThread;
import android.os.Process;
import android.os.Process;
import android.os.SystemClock;
import android.os.SystemClock;
@@ -78,6 +79,7 @@ import java.util.List;
import java.util.Random;
import java.util.Random;
import java.util.Set;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeUnit;


@@ -134,6 +136,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {


    private final Context mContext;
    private final Context mContext;
    private final HandlerThread mHandlerThread;
    private final HandlerThread mHandlerThread;
    private final Executor mExecutor;
    private final Installer mInstaller;
    private final Installer mInstaller;
    private final RollbackPackageHealthObserver mPackageHealthObserver;
    private final RollbackPackageHealthObserver mPackageHealthObserver;
    private final AppDataRollbackHelper mAppDataRollbackHelper;
    private final AppDataRollbackHelper mAppDataRollbackHelper;
@@ -173,6 +176,7 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {
        mHandlerThread = new HandlerThread("RollbackManagerServiceHandler");
        mHandlerThread = new HandlerThread("RollbackManagerServiceHandler");
        mHandlerThread.start();
        mHandlerThread.start();
        Watchdog.getInstance().addThread(getHandler(), HANDLER_THREAD_TIMEOUT_DURATION_MILLIS);
        Watchdog.getInstance().addThread(getHandler(), HANDLER_THREAD_TIMEOUT_DURATION_MILLIS);
        mExecutor = new HandlerExecutor(getHandler());


        for (UserInfo userInfo : UserManager.get(mContext).getUsers(true)) {
        for (UserInfo userInfo : UserManager.get(mContext).getUsers(true)) {
            registerUserCallbacks(userInfo.getUserHandle());
            registerUserCallbacks(userInfo.getUserHandle());
@@ -409,7 +413,6 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {


        CountDownLatch latch = new CountDownLatch(1);
        CountDownLatch latch = new CountDownLatch(1);
        getHandler().post(() -> {
        getHandler().post(() -> {
            updateRollbackLifetimeDurationInMillis();
            synchronized (mLock) {
            synchronized (mLock) {
                mRollbacks.clear();
                mRollbacks.clear();
                mRollbacks.addAll(mRollbackStore.loadRollbacks());
                mRollbacks.addAll(mRollbackStore.loadRollbacks());
@@ -520,11 +523,13 @@ class RollbackManagerServiceImpl extends IRollbackManager.Stub {


    @AnyThread
    @AnyThread
    void onBootCompleted() {
    void onBootCompleted() {
        getHandler().post(() -> updateRollbackLifetimeDurationInMillis());
        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_ROLLBACK_BOOT,
        // Also posts to handler thread
                mExecutor, properties -> updateRollbackLifetimeDurationInMillis());
        scheduleExpiration(0);


        getHandler().post(() -> {
        getHandler().post(() -> {
            updateRollbackLifetimeDurationInMillis();
            runExpiration();

            // Check to see if any rollback-enabled staged sessions or staged
            // Check to see if any rollback-enabled staged sessions or staged
            // rollback sessions been applied.
            // rollback sessions been applied.
            List<Rollback> enabling = new ArrayList<>();
            List<Rollback> enabling = new ArrayList<>();
+0 −6
Original line number Original line Diff line number Diff line
@@ -392,9 +392,6 @@ public class RollbackTest {
                    RollbackManager.PROPERTY_ROLLBACK_LIFETIME_MILLIS,
                    RollbackManager.PROPERTY_ROLLBACK_LIFETIME_MILLIS,
                    Long.toString(expirationTime), false /* makeDefault*/);
                    Long.toString(expirationTime), false /* makeDefault*/);


            // Pull the new expiration time from DeviceConfig
            rm.reloadPersistedData();

            // Uninstall TestApp.A
            // Uninstall TestApp.A
            Uninstall.packages(TestApp.A);
            Uninstall.packages(TestApp.A);
            assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1);
            assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(-1);
@@ -457,9 +454,6 @@ public class RollbackTest {
                    RollbackManager.PROPERTY_ROLLBACK_LIFETIME_MILLIS,
                    RollbackManager.PROPERTY_ROLLBACK_LIFETIME_MILLIS,
                    Long.toString(expirationTime), false /* makeDefault*/);
                    Long.toString(expirationTime), false /* makeDefault*/);


            // Pull the new expiration time from DeviceConfig
            rm.reloadPersistedData();

            // Install app A with rollback enabled
            // Install app A with rollback enabled
            Uninstall.packages(TestApp.A);
            Uninstall.packages(TestApp.A);
            Install.single(TestApp.A1).commit();
            Install.single(TestApp.A1).commit();