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

Commit 2afc347a authored by Android Build Merger (Role)'s avatar Android Build Merger (Role) Committed by Android (Google) Code Review
Browse files

Merge "Merge "Make RescueParty call vold directly" into qt-dev am: 2618371a...

Merge "Merge "Make RescueParty call vold directly" into qt-dev am: 2618371a am: 810274ed" into qt-r1-dev-plus-aosp
parents 3c7f5a92 2c8d9ec6
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.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -41,8 +40,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;
@@ -977,18 +974,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;