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

Commit 810274ed authored by Daniel Rosenberg's avatar Daniel Rosenberg Committed by android-build-merger
Browse files

Merge "Make RescueParty call vold directly" into qt-dev

am: 2618371a

Change-Id: I68af684fa3f8be2cc8d9518eee5bd9dbc1b118cb
parents df99ad0c 2618371a
Loading
Loading
Loading
Loading
+21 −11
Original line number Diff line number Diff line
@@ -30,7 +30,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.storage.IStorageManager;
import android.provider.Settings;
import android.telephony.euicc.EuiccManager;
import android.text.TextUtils;
@@ -39,8 +38,6 @@ import android.util.Log;
import android.view.Display;
import android.view.WindowManager;

import com.android.internal.content.PackageHelper;

import libcore.io.Streams;

import java.io.ByteArrayInputStream;
@@ -858,18 +855,31 @@ public class RecoverySystem {
    public static void rebootPromptAndWipeUserData(Context context, String reason)
            throws IOException {
        boolean checkpointing = false;
        boolean needReboot = false;
        IVold vold = null;
        try {
            vold = IVold.Stub.asInterface(ServiceManager.checkService("vold"));
            if (vold != null) {
                checkpointing = vold.needsCheckpoint();
            } else  {
                Log.w(TAG, "Failed to get vold");
            }
        } catch (Exception e) {
            Log.w(TAG, "Failed to check for checkpointing");
        }

        // If we are running in checkpointing mode, we should not prompt a wipe.
        // Checkpointing may save us. If it doesn't, we will wind up here again.
        if (checkpointing) {
            try {
            IStorageManager storageManager = PackageHelper.getStorageManager();
            if (storageManager.needsCheckpoint()) {
                Log.i(TAG, "Rescue Party requested wipe. Aborting update instead.");
                storageManager.abortChanges("rescueparty", false);
                return;
                vold.abortChanges("rescueparty", false);
                Log.i(TAG, "Rescue Party requested wipe. Aborting update");
            } catch (Exception e) {
                Log.i(TAG, "Rescue Party requested wipe. Rebooting instead.");
                PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
                pm.reboot("rescueparty");
            }
        } catch (RemoteException e) {
            Log.i(TAG, "Failed to handle with checkpointing. Continuing with wipe.");
            return;
        }

        String reasonArg = null;