Split WipeData into PreWipeData and PostWipeData.

Bug: http://b/21760064
Change-Id: Idde268fe4d7e27586ca4469de16783f1ffdc5069
(cherry picked from commit 945548ef7b)
This commit is contained in:
Elliott Hughes 2015-06-05 17:59:56 -07:00
parent 6abd52f62b
commit 0005f89c31
2 changed files with 22 additions and 24 deletions

View file

@ -91,13 +91,16 @@ class Device {
static const int kHighlightDown = -3;
static const int kInvokeItem = -4;
// Called when we do a wipe data/factory reset operation (either via a
// reboot from the main system with the --wipe_data flag, or when the
// user boots into recovery manually and selects the option from the
// menu.) Can perform whatever device-specific wiping actions are
// needed. Return 0 on success. The userdata and cache partitions
// are erased AFTER this returns (whether it returns success or not).
virtual int WipeData() { return 0; }
// Called before and after we do a wipe data/factory reset operation,
// either via a reboot from the main system with the --wipe_data flag,
// or when the user boots into recovery image manually and selects the
// option from the menu, to perform whatever device-specific wiping
// actions are needed.
// Return true on success; returning false from PreWipeData will prevent
// the regular wipe, and returning false from PostWipeData will cause
// the wipe to be considered a failure.
virtual bool PreWipeData() { return true; }
virtual bool PostWipeData() { return true; }
private:
RecoveryUI* ui_;

View file

@ -417,8 +417,7 @@ typedef struct _saved_log_file {
struct _saved_log_file* next;
} saved_log_file;
static int
erase_volume(const char *volume) {
static bool erase_volume(const char* volume) {
bool is_cache = (strcmp(volume, CACHE_ROOT) == 0);
ui->SetBackground(RecoveryUI::ERASING);
@ -499,7 +498,7 @@ erase_volume(const char *volume) {
copy_logs();
}
return result;
return (result == 0);
}
static int
@ -673,13 +672,13 @@ static bool wipe_data(int should_confirm, Device* device) {
modified_flash = true;
ui->Print("\n-- Wiping data...\n");
if (device->WipeData() == 0 && erase_volume("/data") == 0 && erase_volume("/cache") == 0) {
ui->Print("Data wipe complete.\n");
return true;
} else {
ui->Print("Data wipe failed.\n");
return false;
}
bool success =
device->PreWipeData() &&
erase_volume("/data") &&
erase_volume("/cache") &&
device->PostWipeData();
ui->Print("Data wipe %s.\n", success ? "complete" : "failed");
return success;
}
// Return true on success.
@ -691,13 +690,9 @@ static bool wipe_cache(bool should_confirm, Device* device) {
modified_flash = true;
ui->Print("\n-- Wiping cache...\n");
if (erase_volume("/cache") == 0) {
ui->Print("Cache wipe complete.\n");
return true;
} else {
ui->Print("Cache wipe failed.\n");
return false;
}
bool success = erase_volume("/cache");
ui->Print("Cache wipe %s.\n", success ? "complete" : "failed");
return success;
}
static void choose_recovery_file(Device* device) {