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

Commit 35926c4b authored by Tianjie Xu's avatar Tianjie Xu
Browse files

Add ability to show "installing security update"

Add a new command "--security" to boot commands. If this command is
observed as part of BCB, choose a different background text picture
for installing stage in recovery UI. As a result, users will see
"installing security update" instead of "installing system update"
when applying a security update package.

Bug: 27837319
Change-Id: I2e2253a124993ecc24804fa1ee0b918ac96837c5
parent 343eb722
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ static const struct option OPTIONS[] = {
  { "stages", required_argument, NULL, 'g' },
  { "shutdown_after", no_argument, NULL, 'p' },
  { "reason", required_argument, NULL, 'r' },
  { "security", no_argument, NULL, 'e'},
  { NULL, 0, NULL, 0 },
};

@@ -1344,6 +1345,7 @@ int main(int argc, char **argv) {
    bool just_exit = false;
    bool shutdown_after = false;
    int retry_count = 0;
    bool security_update = false;

    int arg;
    while ((arg = getopt_long(argc, argv, "", OPTIONS, NULL)) != -1) {
@@ -1368,6 +1370,7 @@ int main(int argc, char **argv) {
        }
        case 'p': shutdown_after = true; break;
        case 'r': reason = optarg; break;
        case 'e': security_update = true; break;
        case '?':
            LOGE("Invalid command argument\n");
            continue;
@@ -1387,6 +1390,9 @@ int main(int argc, char **argv) {

    ui->SetLocale(locale);
    ui->Init();
    // Set background string to "installing security update" for security update,
    // otherwise set it to "installing system update".
    ui->SetSystemUpdateText(security_update);

    int st_cur, st_max;
    if (stage != NULL && sscanf(stage, "%d/%d", &st_cur, &st_max) == 2) {
+14 −1
Original line number Diff line number Diff line
@@ -425,6 +425,16 @@ static char** Alloc2d(size_t rows, size_t cols) {
    return result;
}

// Choose the right background string to display during update.
void ScreenRecoveryUI::SetSystemUpdateText(bool security_update) {
    if (security_update) {
        LoadLocalizedBitmap("installing_security_text", &installing_text);
    } else {
        LoadLocalizedBitmap("installing_text", &installing_text);
    }
    Redraw();
}

void ScreenRecoveryUI::Init() {
    gr_init();

@@ -450,7 +460,10 @@ void ScreenRecoveryUI::Init() {
    LoadBitmap("stage_empty", &stageMarkerEmpty);
    LoadBitmap("stage_fill", &stageMarkerFill);

    LoadLocalizedBitmap("installing_text", &installing_text);
    // Background text for "installing_update" could be "installing update"
    // or "installing security update". It will be set after UI init according
    // to commands in BCB.
    installing_text = nullptr;
    LoadLocalizedBitmap("erasing_text", &erasing_text);
    LoadLocalizedBitmap("no_command_text", &no_command_text);
    LoadLocalizedBitmap("error_text", &error_text);
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ class ScreenRecoveryUI : public RecoveryUI {

    // overall recovery state ("background image")
    void SetBackground(Icon icon);
    void SetSystemUpdateText(bool security_update);

    // progress indicator
    void SetProgressType(ProgressType type);
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ class MockUI : public RecoveryUI {
    void SetStage(int, int) { }
    void SetLocale(const char*) { }
    void SetBackground(Icon icon) { }
    void SetSystemUpdateText(bool security_update) { }

    void SetProgressType(ProgressType determinate) { }
    void ShowProgress(float portion, float seconds) { }
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ class RecoveryUI {
    // Set the overall recovery state ("background image").
    enum Icon { NONE, INSTALLING_UPDATE, ERASING, NO_COMMAND, ERROR };
    virtual void SetBackground(Icon icon) = 0;
    virtual void SetSystemUpdateText(bool security_update) = 0;

    // --- progress indicator ---
    enum ProgressType { EMPTY, INDETERMINATE, DETERMINATE };