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

Commit 16147d1b authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Allow switch to fastbootd when userdata wipe is required"

parents da46f906 eb6f13ae
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -23,8 +23,15 @@

#include <ziparchive/zip_archive.h>

enum { INSTALL_SUCCESS, INSTALL_ERROR, INSTALL_CORRUPT, INSTALL_NONE, INSTALL_SKIPPED,
        INSTALL_RETRY };
enum InstallResult {
  INSTALL_SUCCESS,
  INSTALL_ERROR,
  INSTALL_CORRUPT,
  INSTALL_NONE,
  INSTALL_SKIPPED,
  INSTALL_RETRY,
  INSTALL_KEY_INTERRUPTED
};

// Installs the given update package. If INSTALL_SUCCESS is returned and *wipe_cache is true on
// exit, caller should wipe the cache partition.
+11 −7
Original line number Diff line number Diff line
@@ -394,7 +394,7 @@ static bool wipe_data(Device* device) {
    return success;
}

static bool prompt_and_wipe_data(Device* device) {
static InstallResult prompt_and_wipe_data(Device* device) {
  // Use a single string and let ScreenRecoveryUI handles the wrapping.
  std::vector<std::string> headers{
    "Can't load Android system. Your data may be corrupt. "
@@ -415,13 +415,17 @@ static bool prompt_and_wipe_data(Device* device) {

    // If ShowMenu() returned RecoveryUI::KeyError::INTERRUPTED, WaitKey() was interrupted.
    if (chosen_item == static_cast<size_t>(RecoveryUI::KeyError::INTERRUPTED)) {
      return false;
      return INSTALL_KEY_INTERRUPTED;
    }
    if (chosen_item != 1) {
      return true;  // Just reboot, no wipe; not a failure, user asked for it
      return INSTALL_SUCCESS;  // Just reboot, no wipe; not a failure, user asked for it
    }
    if (ask_to_wipe_data(device)) {
      return wipe_data(device);
      if (wipe_data(device)) {
        return INSTALL_SUCCESS;
      } else {
        return INSTALL_ERROR;
      }
    }
  }
}
@@ -1194,10 +1198,10 @@ Device::BuiltinAction start_recovery(Device* device, const std::vector<std::stri
  } else if (should_prompt_and_wipe_data) {
    ui->ShowText(true);
    ui->SetBackground(RecoveryUI::ERROR);
    if (!prompt_and_wipe_data(device)) {
      status = INSTALL_ERROR;
    }
    status = prompt_and_wipe_data(device);
    if (status != INSTALL_KEY_INTERRUPTED) {
      ui->ShowText(false);
    }
  } else if (should_wipe_cache) {
    if (!wipe_cache(false, device)) {
      status = INSTALL_ERROR;