diff options
author | Joel Kitching <kitching@google.com> | 2020-05-14 14:21:49 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-18 16:13:17 +0000 |
commit | b1e232b7851d2d3531779789c2c3755d7972807f (patch) | |
tree | 814b2e5a77e69e364ad90f0b99ccbe41dd0dfcb0 /firmware | |
parent | 891fc6e942e5aa035e6fec4103880af91cff24c6 (diff) | |
download | vboot-b1e232b7851d2d3531779789c2c3755d7972807f.tar.gz |
vboot/ui: hide phone recovery flow when disabled
If phone recovery flow is disabled according to
vb2api_phone_recovery_enabled(), then hide the "Recovery
using phone" menu item from the RECOVERY_SELECT screen.
BUG=b:146399181, b:147744345
TEST=make clean && make runtests
TEST=Upgrade secdata_kernel to v1, boot to recovery mode, check menu
BRANCH=none
Change-Id: Id2d23b5a1cc31dec12befa60a9a52790b129495c
Signed-off-by: Joel Kitching <kitching@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2201056
Reviewed-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/2lib/2ui_screens.c | 19 | ||||
-rw-r--r-- | firmware/2lib/include/2ui_private.h | 1 |
2 files changed, 18 insertions, 2 deletions
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c index 356b3bfb..c4465a4a 100644 --- a/firmware/2lib/2ui_screens.c +++ b/firmware/2lib/2ui_screens.c @@ -81,12 +81,26 @@ static const struct vb2_screen_info advanced_options_screen = { /******************************************************************************/ /* VB2_SCREEN_RECOVERY_SELECT */ +#define RECOVERY_SELECT_ITEM_PHONE 0 +#define RECOVERY_SELECT_ITEM_EXTERNAL_DISK 1 + +vb2_error_t recovery_select_init(struct vb2_ui_context *ui) +{ + if (!vb2api_phone_recovery_enabled(ui->ctx)) { + VB2_DEBUG("WARNING: Phone recovery not available\n"); + ui->state.disabled_item_mask |= + 1 << RECOVERY_SELECT_ITEM_PHONE; + ui->state.selected_item = RECOVERY_SELECT_ITEM_EXTERNAL_DISK; + } + return VB2_REQUEST_UI_CONTINUE; +} + static const struct vb2_menu_item recovery_select_items[] = { - { + [RECOVERY_SELECT_ITEM_PHONE] = { .text = "Recovery using phone", .target = VB2_SCREEN_RECOVERY_PHONE_STEP1, }, - { + [RECOVERY_SELECT_ITEM_EXTERNAL_DISK] = { .text = "Recovery using external disk", .target = VB2_SCREEN_RECOVERY_DISK_STEP1, }, @@ -96,6 +110,7 @@ static const struct vb2_menu_item recovery_select_items[] = { static const struct vb2_screen_info recovery_select_screen = { .id = VB2_SCREEN_RECOVERY_SELECT, .name = "Recovery method selection", + .init = recovery_select_init, MENU_ITEMS(recovery_select_items), }; diff --git a/firmware/2lib/include/2ui_private.h b/firmware/2lib/include/2ui_private.h index bfc0dd0b..2496555b 100644 --- a/firmware/2lib/include/2ui_private.h +++ b/firmware/2lib/include/2ui_private.h @@ -38,6 +38,7 @@ vb2_error_t try_recovery_action(struct vb2_ui_context *ui); /* From 2ui_screens.c */ vb2_error_t advanced_options_init(struct vb2_ui_context *ui); +vb2_error_t recovery_select_init(struct vb2_ui_context *ui); vb2_error_t recovery_to_dev_init(struct vb2_ui_context *ui); vb2_error_t developer_mode_init(struct vb2_ui_context *ui); vb2_error_t developer_mode_action(struct vb2_ui_context *ui); |