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

Commit 32a5f8b9 authored by Tianjie Xu's avatar Tianjie Xu Committed by Automerger Merge Worker
Browse files

Merge "Acquire the wake lock to ensure RoR isn't delayed" am: 9dbd3ea3 am:...

Merge "Acquire the wake lock to ensure RoR isn't delayed" am: 9dbd3ea3 am: c8eebe97 am: c6cc6d35

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1753600

Change-Id: Ia5af9d07414c6044cbdea6e1cc9db793488e62e2
parents e1e44e22 c6cc6d35
Loading
Loading
Loading
Loading
+22 −0
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ import android.net.ConnectivityManager;
import android.net.Network;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkCapabilities;
import android.os.Handler;
import android.os.Handler;
import android.os.PowerManager;
import android.os.SystemClock;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.SystemProperties;
import android.os.UserManager;
import android.os.UserManager;
@@ -119,6 +120,8 @@ class RebootEscrowManager {
     */
     */
    private static final int DEFAULT_LOAD_ESCROW_DATA_RETRY_COUNT = 3;
    private static final int DEFAULT_LOAD_ESCROW_DATA_RETRY_COUNT = 3;
    private static final int DEFAULT_LOAD_ESCROW_DATA_RETRY_INTERVAL_SECONDS = 30;
    private static final int DEFAULT_LOAD_ESCROW_DATA_RETRY_INTERVAL_SECONDS = 30;
    // 3 minutes. It's enough for the default 3 retries with 30 seconds interval
    private static final int DEFAULT_WAKE_LOCK_TIMEOUT_MILLIS = 180_000;


    @IntDef(prefix = {"ERROR_"}, value = {
    @IntDef(prefix = {"ERROR_"}, value = {
            ERROR_NONE,
            ERROR_NONE,
@@ -187,6 +190,9 @@ class RebootEscrowManager {


    private final RebootEscrowKeyStoreManager mKeyStoreManager;
    private final RebootEscrowKeyStoreManager mKeyStoreManager;


    PowerManager.WakeLock mWakeLock;


    interface Callbacks {
    interface Callbacks {
        boolean isUserSecure(int userId);
        boolean isUserSecure(int userId);


@@ -279,6 +285,11 @@ class RebootEscrowManager {
            return mRebootEscrowProvider;
            return mRebootEscrowProvider;
        }
        }


        PowerManager.WakeLock getWakeLock() {
            final PowerManager pm = mContext.getSystemService(PowerManager.class);
            return pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "RebootEscrowManager");
        }

        public RebootEscrowProviderInterface getRebootEscrowProvider() {
        public RebootEscrowProviderInterface getRebootEscrowProvider() {
            return mRebootEscrowProvider;
            return mRebootEscrowProvider;
        }
        }
@@ -365,6 +376,13 @@ class RebootEscrowManager {
            return;
            return;
        }
        }


        // Acquire the wake lock to make sure our scheduled task will run.
        mWakeLock = mInjector.getWakeLock();
        if (mWakeLock != null) {
            mWakeLock.setReferenceCounted(false);
            mWakeLock.acquire(DEFAULT_WAKE_LOCK_TIMEOUT_MILLIS);
        }

        mInjector.post(retryHandler, () -> loadRebootEscrowDataWithRetry(
        mInjector.post(retryHandler, () -> loadRebootEscrowDataWithRetry(
                retryHandler, 0, users, rebootEscrowUsers));
                retryHandler, 0, users, rebootEscrowUsers));
    }
    }
@@ -519,6 +537,10 @@ class RebootEscrowManager {
        // Clear the saved reboot escrow provider
        // Clear the saved reboot escrow provider
        mInjector.clearRebootEscrowProvider();
        mInjector.clearRebootEscrowProvider();
        clearMetricsStorage();
        clearMetricsStorage();

        if (mWakeLock != null) {
            mWakeLock.release();
        }
    }
    }


    private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk) throws IOException {
    private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk) throws IOException {