Loading core/java/android/os/RecoverySystem.java +21 −11 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading Loading
core/java/android/os/RecoverySystem.java +21 −11 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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; Loading