diff options
author | Hsuan Ting Chen <roccochen@chromium.org> | 2020-08-18 14:43:16 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-08-19 08:17:45 +0000 |
commit | 1a99a3374a99f5e55df112f4b41ce3819c112722 (patch) | |
tree | 905573fdaafb20d40723d2a9f1ac7a8e4b886756 | |
parent | bfa9f18ac341731873b48c0fdc854ba2a3b2f649 (diff) | |
download | vboot-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.c | 87 | ||||
-rw-r--r-- | tests/vb2_ui_tests.c | 17 |
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, |