vboot/ui: Pass screen and locale_id to vb2ex_prepare_log_screen()
To support multi-line title for log screens, we need to support
different size of log box in each screen. Therefore, pass the screen and
locale information to vb2ex_prepare_log_screen() so that the number of
lines per page can be determined.
BUG=b:165187866
TEST=emerge-asurada depthcharge
BRANCH=none
Cq-Depend: chromium:2522156
Change-Id: I652d6261ed559a948e7bd578da3ec81d54374039
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2522416
Reviewed-by: Hsuan Ting Chen <roccochen@chromium.org>
Reviewed-by: Joel Kitching <kitching@chromium.org>
diff --git a/firmware/2lib/2stub.c b/firmware/2lib/2stub.c
index e553c34..782ad42 100644
--- a/firmware/2lib/2stub.c
+++ b/firmware/2lib/2stub.c
@@ -87,7 +87,8 @@
}
__attribute__((weak))
-uint32_t vb2ex_prepare_log_screen(const char *str)
+uint32_t vb2ex_prepare_log_screen(enum vb2_screen screen, uint32_t locale_id,
+ const char *str)
{
return 1;
}
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index 2ec779c..9571ab1 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -297,7 +297,8 @@
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
return vb2_ui_screen_back(ui);
}
- ui->state->page_count = vb2ex_prepare_log_screen(log_string);
+ ui->state->page_count = vb2ex_prepare_log_screen(
+ ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare debug info screen\n");
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
@@ -315,7 +316,8 @@
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
return vb2_ui_screen_back(ui);
}
- ui->state->page_count = vb2ex_prepare_log_screen(log_string);
+ ui->state->page_count = vb2ex_prepare_log_screen(
+ ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare debug info screen\n");
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
@@ -359,7 +361,8 @@
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
return vb2_ui_screen_back(ui);
}
- ui->state->page_count = vb2ex_prepare_log_screen(log_string);
+ ui->state->page_count = vb2ex_prepare_log_screen(
+ ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare firmware log screen\n");
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
@@ -377,7 +380,8 @@
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
return vb2_ui_screen_back(ui);
}
- ui->state->page_count = vb2ex_prepare_log_screen(log_string);
+ ui->state->page_count = vb2ex_prepare_log_screen(
+ ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare firmware log screen\n");
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
@@ -1082,7 +1086,8 @@
return vb2_ui_screen_back(ui);
}
- ui->state->page_count = vb2ex_prepare_log_screen(log_string);
+ ui->state->page_count = vb2ex_prepare_log_screen(
+ ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare storage log screen\n");
ui->error_code = VB2_UI_ERROR_DIAGNOSTICS;
@@ -1140,7 +1145,8 @@
return vb2_ui_screen_back(ui);
}
- ui->state->page_count = vb2ex_prepare_log_screen(log_string);
+ ui->state->page_count = vb2ex_prepare_log_screen(
+ ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare memory log screen, error: "
"%#x\n", rv);
diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h
index 4c5e1dc..9448e12 100644
--- a/firmware/2lib/include/2api.h
+++ b/firmware/2lib/include/2api.h
@@ -1491,10 +1491,13 @@
* pages in the log string is returned. If the log string ever changes, this
* function should be called again before the next vb2ex_display_ui() call.
*
+ * @param screen Screen to display the log.
+ * @param locale_id Id of current locale.
* @param str The log string to display.
* @return The number of pages after pagination. 0 if none or error.
*/
-uint32_t vb2ex_prepare_log_screen(const char *str);
+uint32_t vb2ex_prepare_log_screen(enum vb2_screen screen, uint32_t locale_id,
+ const char *str);
/**
* Get the full storage diagnostic log.
diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c
index 9d0642a..bc95033 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -560,7 +560,8 @@
return mock_firmware_log_buf;
}
-uint32_t vb2ex_prepare_log_screen(const char *str)
+uint32_t vb2ex_prepare_log_screen(enum vb2_screen screen, uint32_t locale_id,
+ const char *str)
{
if (mock_prepare_log_count < ARRAY_SIZE(mock_prepare_log))
strncpy(mock_prepare_log[mock_prepare_log_count],