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

Commit a1009c34 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "Split WipeData into PreWipeData and PostWipeData."

parents 280cb6e9 945548ef
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -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_;
+12 −17
Original line number Diff line number Diff line
@@ -421,8 +421,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);
@@ -503,7 +502,7 @@ erase_volume(const char *volume) {
        copy_logs();
    }

    return result;
    return (result == 0);
}

static int
@@ -677,13 +676,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.
@@ -695,13 +694,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) {