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

Commit 2f8f6ec0 authored by Sen Jiang's avatar Sen Jiang Committed by android-build-merger
Browse files

Merge "Add a stub recovery UI."

am: 8c1584fe

Change-Id: I88c79576a1c700509bb844936dbd8ef3784b1b13
parents f7f3f821 8c1584fe
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@
#include "roots.h"
#include "rotate_logs.h"
#include "screen_ui.h"
#include "stub_ui.h"
#include "ui.h"

static const struct option OPTIONS[] = {
@@ -1471,8 +1472,11 @@ int main(int argc, char **argv) {
    Device* device = make_device();
    ui = device->GetUI();

    if (!ui->Init()) {
      printf("Failed to initialize UI, use stub UI instead.");
      ui = new StubRecoveryUI();
    }
    ui->SetLocale(locale.c_str());
    ui->Init();
    // Set background string to "installing security update" for security update,
    // otherwise set it to "installing system update".
    ui->SetSystemUpdateText(security_update);
+11 −4
Original line number Diff line number Diff line
@@ -448,17 +448,22 @@ void ScreenRecoveryUI::SetSystemUpdateText(bool security_update) {
    Redraw();
}

void ScreenRecoveryUI::InitTextParams() {
    gr_init();
bool ScreenRecoveryUI::InitTextParams() {
    if (gr_init() < 0) {
      return false;
    }

    gr_font_size(gr_sys_font(), &char_width_, &char_height_);
    text_rows_ = gr_fb_height() / char_height_;
    text_cols_ = gr_fb_width() / char_width_;
    return true;
}

void ScreenRecoveryUI::Init() {
bool ScreenRecoveryUI::Init() {
    RecoveryUI::Init();
    InitTextParams();
    if (!InitTextParams()) {
      return false;
    }

    density_ = static_cast<float>(android::base::GetIntProperty("ro.sf.lcd_density", 160)) / 160.f;

@@ -493,6 +498,8 @@ void ScreenRecoveryUI::Init() {
    LoadAnimation();

    pthread_create(&progress_thread_, nullptr, ProgressThreadStartRoutine, this);

    return true;
}

void ScreenRecoveryUI::LoadAnimation() {
+2 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ class ScreenRecoveryUI : public RecoveryUI {
  public:
    ScreenRecoveryUI();

    void Init();
    bool Init() override;
    void SetLocale(const char* locale);

    // overall recovery state ("background image")
@@ -137,7 +137,7 @@ class ScreenRecoveryUI : public RecoveryUI {
    pthread_mutex_t updateMutex;
    bool rtl_locale;

    virtual void InitTextParams();
    virtual bool InitTextParams();

    virtual void draw_background_locked();
    virtual void draw_foreground_locked();

stub_ui.h

0 → 100644
+67 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef RECOVERY_STUB_UI_H
#define RECOVERY_STUB_UI_H

#include "ui.h"

// Stub implementation of RecoveryUI for devices without screen.
class StubRecoveryUI : public RecoveryUI {
 public:
  StubRecoveryUI() = default;

  void SetLocale(const char* locale) override {}

  void SetBackground(Icon icon) override {}
  void SetSystemUpdateText(bool security_update) override {}

  // progress indicator
  void SetProgressType(ProgressType type) override {}
  void ShowProgress(float portion, float seconds) override {}
  void SetProgress(float fraction) override {}

  void SetStage(int current, int max) override {}

  // text log
  void ShowText(bool visible) override {}
  bool IsTextVisible() override {
    return false;
  }
  bool WasTextEverVisible() override {
    return false;
  }

  // printing messages
  void Print(const char* fmt, ...) override {
    va_list ap;
    va_start(ap, fmt);
    vprintf(fmt, ap);
    va_end(ap);
  }
  void PrintOnScreenOnly(const char* fmt, ...) override {}
  void ShowFile(const char* filename) override {}

  // menu display
  void StartMenu(const char* const* headers, const char* const* items,
                 int initial_selection) override {}
  int SelectMenu(int sel) override {
    return sel;
  }
  void EndMenu() override {}
};

#endif  // RECOVERY_STUB_UI_H
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@
RecoveryUI* ui = NULL;

class MockUI : public RecoveryUI {
    void Init() { }
    bool Init() { return true; }
    void SetStage(int, int) { }
    void SetLocale(const char*) { }
    void SetBackground(Icon /*icon*/) { }
Loading