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],