diff options
author | Hridya Valsaraju <hridya@google.com> | 2018-09-13 03:00:58 +0200 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-09-13 03:00:58 +0200 |
commit | 20b29bbbbd34e2ee2fd265437c93024b6cf0d136 (patch) | |
tree | a89715473b29f44bc5a26c23bcc5dfc1b7907b87 | |
parent | Merge "minui: Track the name change to minui related properties." (diff) | |
parent | Merge "Allow switch to fastbootd when userdata wipe is required" (diff) | |
download | android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.tar android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.tar.gz android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.tar.bz2 android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.tar.lz android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.tar.xz android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.tar.zst android_bootable_recovery-20b29bbbbd34e2ee2fd265437c93024b6cf0d136.zip |
-rw-r--r-- | install.h | 11 | ||||
-rw-r--r-- | recovery.cpp | 18 |
2 files changed, 20 insertions, 9 deletions
@@ -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. diff --git a/recovery.cpp b/recovery.cpp index 5934b61d7..6248cf70f 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -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); } - ui->ShowText(false); } else if (should_wipe_cache) { if (!wipe_cache(false, device)) { status = INSTALL_ERROR; |