summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsuan Ting Chen <roccochen@chromium.org>2020-08-18 14:43:16 +0800
committerCommit Bot <commit-bot@chromium.org>2020-08-19 08:17:45 +0000
commit1a99a3374a99f5e55df112f4b41ce3819c112722 (patch)
tree905573fdaafb20d40723d2a9f1ac7a8e4b886756
parentbfa9f18ac341731873b48c0fdc854ba2a3b2f649 (diff)
downloadvboot-1a99a3374a99f5e55df112f4b41ce3819c112722.tar.gz
vboot/ui: Always show page up/down buttons in log screen
Always show page up/down buttons in log screen. Beep if users select the page up button on the first page or the page down button on the last page. BRANCH=puff BUG=b:146399181, b:163301076 TEST=emerge-puff depthcharge navigate to the debug info screen by <TAB> Cq-Depend: chromium:2362367 Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org> Change-Id: I29a567554f9283ea3fca0f58fb31c7056523c2a9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2362368 Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
-rw-r--r--firmware/2lib/2ui_screens.c87
-rw-r--r--tests/vb2_ui_tests.c17
2 files changed, 30 insertions, 74 deletions
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
index c1768756..b0851f40 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -55,58 +55,39 @@ static vb2_error_t power_off_action(struct vb2_ui_context *ui)
/* Functions used for log screens */
static vb2_error_t log_page_init(struct vb2_ui_context *ui,
- uint32_t page_up_item,
uint32_t page_down_item,
uint32_t alternate_item)
{
ui->state->current_page = 0;
- if (ui->state->page_count == 1) {
- ui->state->disabled_item_mask |= 1 << page_up_item;
- ui->state->disabled_item_mask |= 1 << page_down_item;
+ if (ui->state->page_count == 1)
ui->state->selected_item = alternate_item;
- } else {
- ui->state->disabled_item_mask |= 1 << page_up_item;
+ else
ui->state->selected_item = page_down_item;
- }
return VB2_REQUEST_UI_CONTINUE;
}
-static vb2_error_t log_page_prev(struct vb2_ui_context *ui,
- uint32_t page_up_item,
- uint32_t page_down_item)
+static vb2_error_t log_page_prev_action(struct vb2_ui_context *ui)
{
- if (ui->state->current_page == 0)
- return VB2_REQUEST_UI_CONTINUE;
- ui->state->current_page--;
-
- /* Clear bits of page down. */
- ui->state->disabled_item_mask &= ~(1 << page_down_item);
-
if (ui->state->current_page == 0) {
- ui->state->disabled_item_mask |= 1 << page_up_item;
- ui->state->selected_item = page_down_item;
+ VB2_DEBUG("WARNING: Ignore page up on the first page\n");
+ ui->error_beep = 1;
+ return VB2_REQUEST_UI_CONTINUE;
}
+ ui->state->current_page--;
return VB2_REQUEST_UI_CONTINUE;
}
-static vb2_error_t log_page_next(struct vb2_ui_context *ui,
- uint32_t page_up_item,
- uint32_t page_down_item)
+static vb2_error_t log_page_next_action(struct vb2_ui_context *ui)
{
- if (ui->state->current_page == ui->state->page_count - 1)
- return VB2_REQUEST_UI_CONTINUE;
- ui->state->current_page++;
-
- /* Clear bits of page up. */
- ui->state->disabled_item_mask &= ~(1 << page_up_item);
-
if (ui->state->current_page == ui->state->page_count - 1) {
- ui->state->disabled_item_mask |= 1 << page_down_item;
- ui->state->selected_item = page_up_item;
+ VB2_DEBUG("WARNING: Ignore page down on the last page\n");
+ ui->error_beep = 1;
+ return VB2_REQUEST_UI_CONTINUE;
}
+ ui->state->current_page++;
return VB2_REQUEST_UI_CONTINUE;
}
@@ -258,7 +239,6 @@ static const struct vb2_screen_info advanced_options_screen = {
/******************************************************************************/
/* VB2_SCREEN_DEBUG_INFO */
-#define DEBUG_INFO_ITEM_PAGE_UP 1
#define DEBUG_INFO_ITEM_PAGE_DOWN 2
#define DEBUG_INFO_ITEM_BACK 3
@@ -274,7 +254,6 @@ static vb2_error_t debug_info_init(struct vb2_ui_context *ui)
}
return log_page_init(ui,
- DEBUG_INFO_ITEM_PAGE_UP,
DEBUG_INFO_ITEM_PAGE_DOWN,
DEBUG_INFO_ITEM_BACK);
}
@@ -293,29 +272,15 @@ static vb2_error_t debug_info_reinit(struct vb2_ui_context *ui)
return VB2_REQUEST_UI_CONTINUE;
}
-static vb2_error_t debug_info_page_prev_action(struct vb2_ui_context *ui)
-{
- return log_page_prev(ui,
- DEBUG_INFO_ITEM_PAGE_UP,
- DEBUG_INFO_ITEM_PAGE_DOWN);
-}
-
-static vb2_error_t debug_info_page_next_action(struct vb2_ui_context *ui)
-{
- return log_page_next(ui,
- DEBUG_INFO_ITEM_PAGE_UP,
- DEBUG_INFO_ITEM_PAGE_DOWN);
-}
-
static const struct vb2_menu_item debug_info_items[] = {
LANGUAGE_SELECT_ITEM,
- [DEBUG_INFO_ITEM_PAGE_UP] = {
+ {
.text = "Page up",
- .action = debug_info_page_prev_action,
+ .action = log_page_prev_action,
},
[DEBUG_INFO_ITEM_PAGE_DOWN] = {
.text = "Page down",
- .action = debug_info_page_next_action,
+ .action = log_page_next_action,
},
[DEBUG_INFO_ITEM_BACK] = BACK_ITEM,
POWER_OFF_ITEM,
@@ -332,7 +297,6 @@ static const struct vb2_screen_info debug_info_screen = {
/******************************************************************************/
/* VB2_SCREEN_FIRMWARE_LOG */
-#define FIRMWARE_LOG_ITEM_PAGE_UP 1
#define FIRMWARE_LOG_ITEM_PAGE_DOWN 2
#define FIRMWARE_LOG_ITEM_BACK 3
@@ -348,7 +312,6 @@ static vb2_error_t firmware_log_init(struct vb2_ui_context *ui)
}
return log_page_init(ui,
- FIRMWARE_LOG_ITEM_PAGE_UP,
FIRMWARE_LOG_ITEM_PAGE_DOWN,
FIRMWARE_LOG_ITEM_BACK);
}
@@ -367,29 +330,15 @@ static vb2_error_t firmware_log_reinit(struct vb2_ui_context *ui)
return VB2_REQUEST_UI_CONTINUE;
}
-static vb2_error_t firmware_log_page_prev_action(struct vb2_ui_context *ui)
-{
- return log_page_prev(ui,
- FIRMWARE_LOG_ITEM_PAGE_UP,
- FIRMWARE_LOG_ITEM_PAGE_DOWN);
-}
-
-static vb2_error_t firmware_log_page_next_action(struct vb2_ui_context *ui)
-{
- return log_page_next(ui,
- FIRMWARE_LOG_ITEM_PAGE_UP,
- FIRMWARE_LOG_ITEM_PAGE_DOWN);
-}
-
static const struct vb2_menu_item firmware_log_items[] = {
LANGUAGE_SELECT_ITEM,
- [FIRMWARE_LOG_ITEM_PAGE_UP] = {
+ {
.text = "Page up",
- .action = firmware_log_page_prev_action,
+ .action = log_page_prev_action,
},
[FIRMWARE_LOG_ITEM_PAGE_DOWN] = {
.text = "Page down",
- .action = firmware_log_page_next_action,
+ .action = log_page_next_action,
},
[FIRMWARE_LOG_ITEM_BACK] = BACK_ITEM,
POWER_OFF_ITEM,
diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c
index 8d1f2b30..62cf14ea 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -1115,7 +1115,7 @@ static void debug_info_tests(void)
"get a one-page debug info");
DISPLAYED_PASS();
DISPLAYED_EQ("debug info", VB2_SCREEN_DEBUG_INFO,
- MOCK_IGNORE, 3, 0x6, 0);
+ MOCK_IGNORE, 3, 0x0, 0);
DISPLAYED_EQ("back to root screen", VB2_SCREEN_RECOVERY_SELECT,
MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
DISPLAYED_NO_EXTRA();
@@ -1126,24 +1126,31 @@ static void debug_info_tests(void)
add_mock_keypress('\t');
add_mock_keypress(VB_KEY_ENTER); /* page 0, select on page down */
add_mock_keypress(VB_KEY_ENTER); /* page 1, select on page down */
+ add_mock_keypress(VB_KEY_UP); /* page 2, select on page down */
add_mock_keypress(VB_KEY_ENTER); /* page 2, select on page up */
add_mock_keypress(VB_KEY_ENTER); /* page 1, select on page up */
+ add_mock_keypress(VB_KEY_DOWN); /* page 0, select on page up */
add_mock_keypress(VB_KEY_ENTER); /* page 0, select on page down */
- add_mock_keypress(VB_KEY_DOWN);
+ add_mock_keypress(VB_KEY_DOWN); /* page 1, select on page down */
add_mock_keypress(VB_KEY_ENTER); /* page 1, select on back */
+ extend_calls_until_shutdown();
TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN,
"get a three-page debug info and navigate");
DISPLAYED_PASS();
DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO,
- MOCK_IGNORE, 2, 0x2, 0);
+ MOCK_IGNORE, 2, 0x0, 0);
DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
MOCK_IGNORE, 2, 0x0, 1);
DISPLAYED_EQ("debug info page #2", VB2_SCREEN_DEBUG_INFO,
- MOCK_IGNORE, 1, 0x4, 2);
+ MOCK_IGNORE, 2, 0x0, 2);
+ DISPLAYED_EQ("debug info page #2", VB2_SCREEN_DEBUG_INFO,
+ MOCK_IGNORE, 1, 0x0, 2);
DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
MOCK_IGNORE, 1, 0x0, 1);
DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO,
- MOCK_IGNORE, 2, 0x2, 0);
+ MOCK_IGNORE, 1, 0x0, 0);
+ DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO,
+ MOCK_IGNORE, 2, 0x0, 0);
DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,
MOCK_IGNORE, 2, 0x0, 1);
DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO,