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

Commit 0481faef authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Adding support for quiescent reboot to recovery"

parents c99bb239 8706a98a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -43,4 +43,6 @@ void ui_print(const char* format, ...);

bool is_ro_debuggable();

bool reboot(const std::string& command);

#endif  // RECOVERY_COMMON_H
+20 −6
Original line number Diff line number Diff line
@@ -208,6 +208,14 @@ bool is_ro_debuggable() {
    return android::base::GetBoolProperty("ro.debuggable", false);
}

bool reboot(const std::string& command) {
    std::string cmd = command;
    if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
        cmd += ",quiescent";
    }
    return android::base::SetProperty(ANDROID_RB_PROPERTY, cmd);
}

static void redirect_stdio(const char* filename) {
    int pipefd[2];
    if (pipe(pipefd) == -1) {
@@ -1448,12 +1456,18 @@ int main(int argc, char **argv) {
    printf("reason is [%s]\n", reason);

    Device* device = make_device();
    if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
        printf("Quiescent recovery mode.\n");
        ui = new StubRecoveryUI();
    } else {
        ui = device->GetUI();

        if (!ui->Init(locale)) {
      printf("Failed to initialize UI, use stub UI instead.");
            printf("Failed to initialize UI, use stub UI instead.\n");
            ui = new StubRecoveryUI();
        }
    }

    // Set background string to "installing security update" for security update,
    // otherwise set it to "installing system update".
    ui->SetSystemUpdateText(security_update);
@@ -1525,7 +1539,7 @@ int main(int argc, char **argv) {
                    ui->Print("Retry attempt %d\n", retry_count);

                    // Reboot and retry the update
                    if (!android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,recovery")) {
                    if (!reboot("reboot,recovery")) {
                        ui->Print("Reboot failed\n");
                    } else {
                        while (true) {
@@ -1630,7 +1644,7 @@ int main(int argc, char **argv) {

        default:
            ui->Print("Rebooting...\n");
            android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,");
            reboot("reboot,");
            break;
    }
    while (true) {
+1 −1
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ void RecoveryUI::ProcessKey(int key_code, int updown) {

          case RecoveryUI::REBOOT:
            if (reboot_enabled) {
                android::base::SetProperty(ANDROID_RB_PROPERTY, "reboot,");
                reboot("reboot,");
                while (true) { pause(); }
            }
            break;
+4 −1
Original line number Diff line number Diff line
@@ -890,7 +890,10 @@ Value* RebootNowFn(const char* name, State* state, const std::vector<std::unique
    return StringValue("");
  }

  const std::string reboot_cmd = "reboot," + property;
  std::string reboot_cmd = "reboot," + property;
  if (android::base::GetBoolProperty("ro.boot.quiescent", false)) {
    reboot_cmd += ",quiescent";
  }
  android::base::SetProperty(ANDROID_RB_PROPERTY, reboot_cmd);

  sleep(5);