diff options
-rw-r--r-- | firmware/2lib/2ui_screens.c | 8 | ||||
-rw-r--r-- | tests/vb2_ui_tests.c | 38 |
2 files changed, 29 insertions, 17 deletions
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c index cda9400b..218c34f9 100644 --- a/firmware/2lib/2ui_screens.c +++ b/firmware/2lib/2ui_screens.c @@ -688,10 +688,6 @@ vb2_error_t developer_mode_init(struct vb2_ui_context *ui) enum vb2_dev_default_boot_target default_boot = vb2api_get_dev_default_boot_target(ui->ctx); - /* TODO(b/159579189): Split this case into a separate root screen */ - if (!vb2_dev_boot_allowed(ui->ctx)) - return vb2_ui_screen_change(ui, VB2_SCREEN_DEVELOPER_TO_NORM); - /* Don't show "Return to secure mode" button if GBB forces dev mode. */ if (vb2_get_gbb(ui->ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) VB2_SET_BIT(ui->state->hidden_item_mask, @@ -781,10 +777,6 @@ vb2_error_t developer_mode_action(struct vb2_ui_context *ui) const int use_short = vb2api_use_short_dev_screen_delay(ui->ctx); uint64_t elapsed_ms; - /* TODO(b/159579189): Split this case into a separate root screen */ - if (!vb2_dev_boot_allowed(ui->ctx)) - return vb2_ui_screen_change(ui, VB2_SCREEN_DEVELOPER_TO_NORM); - /* Once any user interaction occurs, stop the timer. */ if (ui->key) ui->disable_timer = 1; diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c index 39acd2d9..607087e7 100644 --- a/tests/vb2_ui_tests.c +++ b/tests/vb2_ui_tests.c @@ -598,6 +598,14 @@ static void developer_tests(void) TEST_EQ(mock_beep_count, 2, " beeped twice"); TEST_TRUE(mock_iters >= mock_vbtlk_total, " used up mock_vbtlk"); + /* Don't proceed to internal disk after timeout (dev mode disallowed) */ + reset_common_data(FOR_DEVELOPER); + mock_dev_boot_allowed = 0; + TEST_EQ(ui_loop(ctx, VB2_SCREEN_DEVELOPER_MODE, NULL), + VB2_REQUEST_SHUTDOWN, + "do not proceed to internal disk after timeout " + "(dev mode disallowed)"); + /* Use short delay */ reset_common_data(FOR_DEVELOPER); gbb.flags |= VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY; @@ -687,6 +695,15 @@ static void developer_tests(void) TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN, "default boot from external disk not allowed, don't boot"); + /* Don't proceed to external disk after timeout (dev mode disallowed) */ + reset_common_data(FOR_DEVELOPER); + mock_dev_boot_allowed = 0; + mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL; + TEST_EQ(ui_loop(ctx, VB2_SCREEN_DEVELOPER_MODE, NULL), + VB2_REQUEST_SHUTDOWN, + "do not proceed to external disk after timeout " + "(dev mode disallowed)"); + /* If no external disk, don't boot */ reset_common_data(FOR_DEVELOPER); add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); @@ -727,15 +744,6 @@ static void developer_tests(void) "VB_BUTTON_VOL_UP_LONG_PRESS = boot external"); } - /* If dev mode is disabled, directly goes to to_norm screen */ - reset_common_data(FOR_DEVELOPER); - mock_dev_boot_allowed = 0; - TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN, - "if dev mode is disabled, directly goes to to_norm screen"); - DISPLAYED_EQ("to_norm", VB2_SCREEN_DEVELOPER_TO_NORM, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - /* Select to_norm in dev menu and confirm */ reset_common_data(FOR_DEVELOPER); add_mock_keypress(VB_KEY_UP); @@ -746,6 +754,18 @@ static void developer_tests(void) TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1, " disable dev request"); + /* Select to_norm in dev menu and confirm (dev mode disallowed) */ + reset_common_data(FOR_DEVELOPER); + mock_dev_boot_allowed = 0; + add_mock_keypress(VB_KEY_UP); + add_mock_keypress(VB_KEY_ENTER); + add_mock_keypress(VB_KEY_ENTER); + TEST_EQ(ui_loop(ctx, VB2_SCREEN_DEVELOPER_MODE, NULL), + VB2_REQUEST_REBOOT, + "select to_norm in dev menu and confirm (dev mode disallowed)"); + TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1, + " disable dev request"); + /* Select to_norm in dev menu and cancel */ reset_common_data(FOR_DEVELOPER); add_mock_keypress(VB_KEY_UP); |