diff options
-rw-r--r-- | firmware/2lib/2stub.c | 6 | ||||
-rw-r--r-- | firmware/2lib/2ui.c | 38 | ||||
-rw-r--r-- | firmware/2lib/2ui_screens.c | 155 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 11 | ||||
-rw-r--r-- | firmware/2lib/include/2ui.h | 11 | ||||
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 2 | ||||
-rw-r--r-- | tests/vb2_ui_action_tests.c | 71 | ||||
-rw-r--r-- | tests/vb2_ui_tests.c | 581 | ||||
-rw-r--r-- | tests/vboot_api_kernel4_tests.c | 2 |
9 files changed, 19 insertions, 858 deletions
diff --git a/firmware/2lib/2stub.c b/firmware/2lib/2stub.c index 3a7a36d4..368915b1 100644 --- a/firmware/2lib/2stub.c +++ b/firmware/2lib/2stub.c @@ -262,3 +262,9 @@ vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx) { return VB2_SUCCESS; } + +__attribute__((weak)) +vb2_error_t vb2ex_manual_recovery_ui(struct vb2_context *ctx) +{ + return VB2_SUCCESS; +} diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index 3cd14f0f..db79eb72 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -451,44 +451,6 @@ vb2_error_t developer_action(struct vb2_ui_context *ui) } /*****************************************************************************/ -/* Manual recovery */ - -vb2_error_t vb2_manual_recovery_menu(struct vb2_context *ctx) -{ - return vb2_ui_loop(ctx, VB2_SCREEN_RECOVERY_SELECT, - manual_recovery_action); -} - -vb2_error_t manual_recovery_action(struct vb2_ui_context *ui) -{ - /* See if we have a recovery kernel available yet. */ - vb2_error_t rv = VbTryLoadKernel(ui->ctx, VB_DISK_FLAG_REMOVABLE); - if (rv == VB2_SUCCESS) - return VB2_REQUEST_UI_EXIT; - - /* If disk validity state changed, switch to appropriate screen. */ - if (ui->recovery_rv != rv) { - VB2_DEBUG("Recovery VbTryLoadKernel %#x --> %#x\n", - ui->recovery_rv, rv); - ui->recovery_rv = rv; - return vb2_ui_screen_change(ui, - rv == VB2_ERROR_LK_NO_DISK_FOUND ? - VB2_SCREEN_RECOVERY_SELECT : - VB2_SCREEN_RECOVERY_INVALID); - } - - /* Manual recovery keyboard shortcuts */ - if (ui->key == VB_KEY_CTRL('D') || - (DETACHABLE && ui->key == VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS)) - return vb2_ui_screen_change(ui, VB2_SCREEN_RECOVERY_TO_DEV); - - if (ui->key == '\t') - return vb2_ui_screen_change(ui, VB2_SCREEN_DEBUG_INFO); - - return VB2_SUCCESS; -} - -/*****************************************************************************/ /* Diagnostics */ vb2_error_t vb2_diagnostic_menu(struct vb2_context *ctx) diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c index 999d90e6..51e428a4 100644 --- a/firmware/2lib/2ui_screens.c +++ b/firmware/2lib/2ui_screens.c @@ -395,76 +395,6 @@ static const struct vb2_screen_info firmware_log_screen = { }; /******************************************************************************/ -/* VB2_SCREEN_RECOVERY_SELECT */ - -#define RECOVERY_SELECT_ITEM_PHONE 1 -#define RECOVERY_SELECT_ITEM_EXTERNAL_DISK 2 -#define RECOVERY_SELECT_ITEM_DIAGNOSTICS 3 - -/* Set VB2_NV_DIAG_REQUEST and reboot. */ -static vb2_error_t launch_diagnostics_action(struct vb2_ui_context *ui) -{ - vb2api_request_diagnostics(ui->ctx); - return VB2_REQUEST_REBOOT; -} - -vb2_error_t recovery_select_init(struct vb2_ui_context *ui) -{ - ui->state->selected_item = RECOVERY_SELECT_ITEM_PHONE; - if (!vb2api_phone_recovery_ui_enabled(ui->ctx)) { - VB2_DEBUG("WARNING: Phone recovery not available\n"); - VB2_SET_BIT(ui->state->hidden_item_mask, - RECOVERY_SELECT_ITEM_PHONE); - ui->state->selected_item = RECOVERY_SELECT_ITEM_EXTERNAL_DISK; - } - - if (!vb2api_diagnostic_ui_enabled(ui->ctx)) - VB2_SET_BIT(ui->state->hidden_item_mask, - RECOVERY_SELECT_ITEM_DIAGNOSTICS); - - return VB2_SUCCESS; -} - -static const struct vb2_menu_item recovery_select_items[] = { - LANGUAGE_SELECT_ITEM, - [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, - }, - [RECOVERY_SELECT_ITEM_DIAGNOSTICS] = { - .text = "Launch diagnostics", - .action = launch_diagnostics_action, - }, - ADVANCED_OPTIONS_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_select_screen = { - .id = VB2_SCREEN_RECOVERY_SELECT, - .name = "Recovery method selection", - .init = recovery_select_init, - .menu = MENU_ITEMS(recovery_select_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_INVALID */ - -static const struct vb2_menu_item recovery_invalid_items[] = { - LANGUAGE_SELECT_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_invalid_screen = { - .id = VB2_SCREEN_RECOVERY_INVALID, - .name = "Invalid recovery inserted", - .menu = MENU_ITEMS(recovery_invalid_items), -}; - -/******************************************************************************/ /* VB2_SCREEN_RECOVERY_TO_DEV */ #define RECOVERY_TO_DEV_ITEM_CONFIRM 1 @@ -585,84 +515,6 @@ static const struct vb2_screen_info recovery_to_dev_screen = { }; /******************************************************************************/ -/* VB2_SCREEN_RECOVERY_PHONE_STEP1 */ - -static const struct vb2_menu_item recovery_phone_step1_items[] = { - LANGUAGE_SELECT_ITEM, - NEXT_ITEM(VB2_SCREEN_RECOVERY_PHONE_STEP2), - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_phone_step1_screen = { - .id = VB2_SCREEN_RECOVERY_PHONE_STEP1, - .name = "Phone recovery step 1", - .menu = MENU_ITEMS(recovery_phone_step1_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_PHONE_STEP2 */ - -static const struct vb2_menu_item recovery_phone_step2_items[] = { - LANGUAGE_SELECT_ITEM, - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_phone_step2_screen = { - .id = VB2_SCREEN_RECOVERY_PHONE_STEP2, - .name = "Phone recovery step 2", - .menu = MENU_ITEMS(recovery_phone_step2_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_DISK_STEP1 */ - -static const struct vb2_menu_item recovery_disk_step1_items[] = { - LANGUAGE_SELECT_ITEM, - NEXT_ITEM(VB2_SCREEN_RECOVERY_DISK_STEP2), - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_disk_step1_screen = { - .id = VB2_SCREEN_RECOVERY_DISK_STEP1, - .name = "Disk recovery step 1", - .menu = MENU_ITEMS(recovery_disk_step1_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_DISK_STEP2 */ - -static const struct vb2_menu_item recovery_disk_step2_items[] = { - LANGUAGE_SELECT_ITEM, - NEXT_ITEM(VB2_SCREEN_RECOVERY_DISK_STEP3), - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_disk_step2_screen = { - .id = VB2_SCREEN_RECOVERY_DISK_STEP2, - .name = "Disk recovery step 2", - .menu = MENU_ITEMS(recovery_disk_step2_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_DISK_STEP3 */ - -static const struct vb2_menu_item recovery_disk_step3_items[] = { - LANGUAGE_SELECT_ITEM, - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_disk_step3_screen = { - .id = VB2_SCREEN_RECOVERY_DISK_STEP3, - .name = "Disk recovery step 3", - .menu = MENU_ITEMS(recovery_disk_step3_items), -}; - -/******************************************************************************/ /* VB2_SCREEN_DEVELOPER_MODE */ #define DEVELOPER_MODE_ITEM_RETURN_TO_SECURE 1 @@ -1365,14 +1217,7 @@ static const struct vb2_screen_info *screens[] = { &advanced_options_screen, &debug_info_screen, &firmware_log_screen, - &recovery_select_screen, - &recovery_invalid_screen, &recovery_to_dev_screen, - &recovery_phone_step1_screen, - &recovery_phone_step2_screen, - &recovery_disk_step1_screen, - &recovery_disk_step2_screen, - &recovery_disk_step3_screen, &developer_mode_screen, &developer_to_norm_screen, &developer_boot_external_screen, diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 273ff012..df8c8d1a 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1405,6 +1405,17 @@ vb2_error_t vb2ex_ec_battery_cutoff(void); */ vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx); +/** + * UI for a manual recovery-mode boot. + * + * Enter the recovery menu, which prompts the user to insert recovery media, + * navigate the step-by-step recovery, or enter developer mode if allowed. + * + * @param ctx Vboot context + * @return VB2_SUCCESS, or non-zero error code. + */ +vb2_error_t vb2ex_manual_recovery_ui(struct vb2_context *ctx); + /* Helpers for bitmask operations */ #define VB2_SET_BIT(mask, index) ((mask) |= ((uint32_t)1 << (index))) #define VB2_CLR_BIT(mask, index) ((mask) &= ~((uint32_t)1 << (index))) diff --git a/firmware/2lib/include/2ui.h b/firmware/2lib/include/2ui.h index 4ae73fc0..2ed65e9d 100644 --- a/firmware/2lib/include/2ui.h +++ b/firmware/2lib/include/2ui.h @@ -246,17 +246,6 @@ vb2_error_t vb2_ui_screen_change(struct vb2_ui_context *ui, enum vb2_screen id); vb2_error_t vb2_developer_menu(struct vb2_context *ctx); /** - * UI for a manual recovery-mode boot. - * - * Enter the recovery menu, which prompts the user to insert recovery media, - * navigate the step-by-step recovery, or enter developer mode if allowed. - * - * @param ctx Vboot context - * @return VB2_SUCCESS, or non-zero error code. - */ -vb2_error_t vb2_manual_recovery_menu(struct vb2_context *ctx); - -/** * UI for a diagnostic tools boot. * * Enter the diagnostic tools menu, which provides debug information and diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index 26d096d4..9978097d 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -195,7 +195,7 @@ vb2_error_t VbSelectAndLoadKernel(struct vb2_context *ctx, /* Recovery boot. This has UI. */ if (vb2api_allow_recovery(ctx)) - VB2_TRY(vb2_manual_recovery_menu(ctx)); + VB2_TRY(vb2ex_manual_recovery_ui(ctx)); else VB2_TRY(vb2ex_broken_screen_ui(ctx)); } else if (vb2api_diagnostic_ui_enabled(ctx) && diff --git a/tests/vb2_ui_action_tests.c b/tests/vb2_ui_action_tests.c index 8c6b7421..70ca23af 100644 --- a/tests/vb2_ui_action_tests.c +++ b/tests/vb2_ui_action_tests.c @@ -231,13 +231,6 @@ static void add_mock_keypress(uint32_t press) add_mock_key(press, 0); } - -static void set_mock_vbtlk(vb2_error_t retval, uint32_t disk_flags) -{ - mock_vbtlk_retval = retval; - mock_vbtlk_expected_flag = disk_flags; -} - static void displayed_eq(const char *text, enum vb2_screen screen, uint32_t locale_id, @@ -795,67 +788,6 @@ static void vb2_ui_developer_mode_boot_altfw_action_tests(void) VB2_DEBUG("...done.\n"); } -static void manual_recovery_action_tests(void) -{ - VB2_DEBUG("Testing manual recovery action...\n"); - - /* SUCCESS */ - reset_common_data(); - set_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), VB2_REQUEST_UI_EXIT, - "EXIT"); - TEST_EQ(mock_get_screen_info_called, 0, " no change_screen"); - - /* NO_DISK_FOUND */ - reset_common_data(); - set_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), - VB2_REQUEST_UI_CONTINUE, "NO_DISK_FOUND"); - screen_state_eq(mock_ui_context.state, VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE); - - /* NO_DISK_FOUND -> INVALID_KERNEL -> SUCCESS */ - reset_common_data(); - set_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), - VB2_REQUEST_UI_CONTINUE, "NO_DISK_FOUND"); - set_mock_vbtlk(VB2_ERROR_LK_INVALID_KERNEL_FOUND, - VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), - VB2_REQUEST_UI_CONTINUE, "INVALID_KERNEL"); - set_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), VB2_REQUEST_UI_EXIT, - "EXIT"); - screen_state_eq(mock_ui_context.state, VB2_SCREEN_RECOVERY_INVALID, - MOCK_IGNORE, MOCK_IGNORE); - - /* INVALID_KERNEL */ - reset_common_data(); - set_mock_vbtlk(VB2_ERROR_LK_INVALID_KERNEL_FOUND, - VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), - VB2_REQUEST_UI_CONTINUE, "INVALID_KERNEL"); - screen_state_eq(mock_ui_context.state, VB2_SCREEN_RECOVERY_INVALID, - MOCK_IGNORE, MOCK_IGNORE); - - /* INVALID_KERNEL -> NO_DISK_FOUND -> SUCCESS */ - reset_common_data(); - set_mock_vbtlk(VB2_ERROR_LK_INVALID_KERNEL_FOUND, - VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), - VB2_REQUEST_UI_CONTINUE, "INVALID_KERNEL"); - set_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), - VB2_REQUEST_UI_CONTINUE, "NO_DISK_FOUND"); - set_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(manual_recovery_action(&mock_ui_context), VB2_REQUEST_UI_EXIT, - "EXIT"); - screen_state_eq(mock_ui_context.state, VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE); - - VB2_DEBUG("...done.\n"); -} - static void ui_loop_tests(void) { int i; @@ -1060,9 +992,6 @@ int main(void) /* Screen actions */ vb2_ui_developer_mode_boot_altfw_action_tests(); - /* Global actions */ - manual_recovery_action_tests(); - /* Core UI loop */ ui_loop_tests(); ui_loop_delay_tests(); diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c index 8790e75d..2eaae0c3 100644 --- a/tests/vb2_ui_tests.c +++ b/tests/vb2_ui_tests.c @@ -804,278 +804,6 @@ static void developer_tests(void) VB2_DEBUG("...done.\n"); } -static void manual_recovery_tests(void) -{ - VB2_DEBUG("Testing manual recovery mode...\n"); - - /* Timeout, shutdown */ - reset_common_data(FOR_MANUAL_RECOVERY); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "timeout, shutdown"); - TEST_EQ(mock_displayed_count, 1, " root screen only"); - - /* Power button short pressed = shutdown request */ - if (!DETACHABLE) { - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress(VB_BUTTON_POWER_SHORT_PRESS); - TEST_EQ(vb2_manual_recovery_menu(ctx), - VB2_REQUEST_SHUTDOWN, - "power button short pressed = shutdown"); - } - - /* Boots if we have a valid image on first try */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_ERROR_MOCK, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_SUCCESS, - "boots if valid on first try"); - - /* Boots eventually if we get a valid image later */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_ERROR_MOCK, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_SUCCESS, - "boots after valid image appears"); - - /* Invalid image, then remove, then valid image */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_vbtlk(VB2_ERROR_MOCK, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE); - add_mock_vbtlk(VB2_ERROR_MOCK, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_SUCCESS, - "boots after valid image appears"); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_EQ("recovery invalid", VB2_SCREEN_RECOVERY_INVALID, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Ctrl+D = to_dev; space = cancel */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_keypress(' '); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "ctrl+d = to_dev; space = cancel"); - TEST_EQ(mock_enable_dev_mode, 0, " dev mode not enabled"); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_EQ("to_dev", VB2_SCREEN_RECOVERY_TO_DEV, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Cancel to_dev transition */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - if (PHYSICAL_PRESENCE_KEYBOARD) - add_mock_key(VB_KEY_DOWN, 1); - add_mock_key(VB_KEY_ENTER, 1); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "cancel to_dev transition"); - TEST_EQ(mock_enable_dev_mode, 0, " dev mode not enabled"); - - /* Confirm to_dev transition */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - if (PHYSICAL_PRESENCE_KEYBOARD) { - add_mock_key(VB_KEY_ENTER, 1); - } else { - add_mock_pp_pressed(0); - add_mock_pp_pressed(1); - add_mock_pp_pressed(1); - add_mock_pp_pressed(0); - } - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_REBOOT_EC_TO_RO, - "confirm to_dev transition"); - if (!PHYSICAL_PRESENCE_KEYBOARD) - TEST_TRUE(mock_iters >= mock_pp_pressed_total - 1, - " used up mock_pp_pressed"); - TEST_EQ(mock_enable_dev_mode, 1, " dev mode enabled"); - - /* Cannot confirm physical presence by untrusted keyboard */ - if (PHYSICAL_PRESENCE_KEYBOARD) { - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_key(VB_KEY_ENTER, 0); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "cannot confirm physical presence" - " by untrusted keyboard"); - TEST_EQ(mock_enable_dev_mode, 0, " dev mode not enabled"); - } - - /* Cannot enable dev mode if already enabled */ - reset_common_data(FOR_MANUAL_RECOVERY); - sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED; - add_mock_key(VB_KEY_CTRL('D'), 1); - if (PHYSICAL_PRESENCE_KEYBOARD) { - add_mock_key(VB_KEY_ENTER, 1); - } else { - add_mock_pp_pressed(0); - add_mock_pp_pressed(1); - add_mock_pp_pressed(0); - } - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "cannot enable dev mode if already enabled"); - TEST_EQ(mock_enable_dev_mode, 0, " dev mode already on"); - - /* Physical presence button tests */ - if (!PHYSICAL_PRESENCE_KEYBOARD) { - /* Physical presence button stuck? */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_pp_pressed(1); /* Hold since boot */ - add_mock_pp_pressed(0); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "physical presence button stuck?"); - TEST_EQ(mock_enable_dev_mode, 0, " dev mode not enabled"); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Button stuck, enter to_dev again */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_pp_pressed(1); /* Hold since boot */ - add_mock_pp_pressed(0); - add_mock_pp_pressed(1); /* Press again */ - add_mock_pp_pressed(0); - TEST_EQ(vb2_manual_recovery_menu(ctx), - VB2_REQUEST_REBOOT_EC_TO_RO, - "button stuck, enter to_dev again"); - TEST_TRUE(mock_iters >= mock_pp_pressed_total - 1, - " used up mock_pp_pressed"); - TEST_EQ(mock_enable_dev_mode, 1, " dev mode enabled"); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("to_dev", VB2_SCREEN_RECOVERY_TO_DEV, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Cancel with holding pp button, enter again */ - reset_common_data(FOR_MANUAL_RECOVERY); - /* Enter to_dev */ - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_pp_pressed(0); - /* Press pp button */ - add_mock_keypress(0); - add_mock_pp_pressed(1); - /* Space = back */ - add_mock_keypress(' '); - add_mock_pp_pressed(1); - /* Wait */ - add_mock_keypress(0); - add_mock_pp_pressed(0); - /* Enter to_dev again */ - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_pp_pressed(0); - /* Press pp button again */ - add_mock_pp_pressed(1); - /* Release */ - add_mock_pp_pressed(0); - TEST_EQ(vb2_manual_recovery_menu(ctx), - VB2_REQUEST_REBOOT_EC_TO_RO, - "cancel with holding pp button, enter again"); - TEST_TRUE(mock_iters >= mock_pp_pressed_total - 1, - " used up mock_pp_pressed"); - TEST_EQ(mock_enable_dev_mode, 1, " dev mode enabled"); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("to_dev", VB2_SCREEN_RECOVERY_TO_DEV, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("to_dev", VB2_SCREEN_RECOVERY_TO_DEV, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - } - - /* Enter diagnostics */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - TEST_EQ(vb2_manual_recovery_menu(ctx), - VB2_REQUEST_REBOOT, - "Reboot immediately after request diagnostics"); - TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 1, - "VB2_NV_DIAG_REQUEST is set"); - - VB2_DEBUG("...done.\n"); -} - -static void language_selection_tests(void) -{ - VB2_DEBUG("Testing language selection...\n"); - - /* Enter language menu and change language */ - reset_common_data(FOR_MANUAL_RECOVERY); - mock_locale_count = 100; - vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, 23); - add_mock_keypress(VB_KEY_UP); - add_mock_keypress(VB_KEY_ENTER); /* select language */ - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); /* select locale 24 */ - add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "change language"); - DISPLAYED_EQ("RECOVERY_SELECT default", VB2_SCREEN_RECOVERY_SELECT, - 23, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("RECOVERY_SELECT lang", VB2_SCREEN_RECOVERY_SELECT, - 23, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("LANGUAGE_SELECT 23", VB2_SCREEN_LANGUAGE_SELECT, - 23, 23, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("LANGUAGE_SELECT 24", VB2_SCREEN_LANGUAGE_SELECT, - 23, 24, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("RECOVERY_SELECT new locale", VB2_SCREEN_RECOVERY_SELECT, - 24, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 24, - " locale 24 saved to nvdata"); - - /* Locale count = 0 */ - reset_common_data(FOR_MANUAL_RECOVERY); - mock_locale_count = 0; - vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, 23); - add_mock_keypress(VB_KEY_UP); - add_mock_keypress(VB_KEY_ENTER); /* select language */ - add_mock_keypress(VB_KEY_ENTER); /* select locale 0 */ - add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_REMOVABLE); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "enter language menu"); - DISPLAYED_EQ("RECOVERY_SELECT default", VB2_SCREEN_RECOVERY_SELECT, - 23, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("RECOVERY_SELECT lang", VB2_SCREEN_RECOVERY_SELECT, - 23, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("LANGUAGE_SELECT index 0", VB2_SCREEN_LANGUAGE_SELECT, - 23, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("RECOVERY_SELECT locale 0", VB2_SCREEN_RECOVERY_SELECT, - 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - VB2_DEBUG("...done.\n"); -} - static void debug_info_tests(void) { VB2_DEBUG("Testing debug info screen...\n"); @@ -1090,143 +818,6 @@ static void debug_info_tests(void) MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); DISPLAYED_NO_EXTRA(); - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress('\t'); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "tab = debug info in manual recovery mode"); - DISPLAYED_PASS(); - DISPLAYED_EQ("debug info", VB2_SCREEN_DEBUG_INFO, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Failed to enter debug info */ - reset_common_data(FOR_MANUAL_RECOVERY); - mock_log_page_count = 0; - add_mock_keypress('\t'); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "failed to enter debug info"); - DISPLAYED_PASS(); - DISPLAYED_PASS(); /* error code */ - DISPLAYED_NO_EXTRA(); - - /* Get a one-page debug info */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress('\t'); - add_mock_keypress(VB_KEY_ENTER); /* back */ - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "get a one-page debug info"); - DISPLAYED_PASS(); - DISPLAYED_EQ("debug info", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 3, 0x6, 0x0, 0); - DISPLAYED_EQ("back to root screen", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Get a three-page debug info and navigate */ - reset_common_data(FOR_MANUAL_RECOVERY); - mock_log_page_count = 3; - 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); /* 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, 0x0, 0); - DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 2, 0x0, 0x0, 1); - DISPLAYED_EQ("debug info page #2", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 2, 0x4, 0x0, 2); - DISPLAYED_EQ("debug info page #2", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 1, 0x4, 0x0, 2); - DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 1, 0x0, 0x0, 1); - DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 1, 0x2, 0x0, 0); - DISPLAYED_EQ("debug info page #0", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 2, 0x2, 0x0, 0); - DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 2, 0x0, 0x0, 1); - DISPLAYED_EQ("debug info page #1", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, 3, 0x0, 0x0, 1); - DISPLAYED_EQ("back to root screen", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - VB2_DEBUG("...done.\n"); -} - -static void firmware_log_tests(void) -{ - VB2_DEBUG("Testing firmware log screens...\n"); - - /* Get firmware log */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "get firmware log"); - TEST_EQ(mock_prepare_log_count, 1, - " prepared firmware log once"); - TEST_EQ(strcmp(mock_prepare_log[0], "1"), 0, - " got correct firmware log"); - - /* Enter firmware log screen again will reacquire a newer one */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_ENTER); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "enter the screen again and reacquire a new log"); - TEST_EQ(mock_prepare_log_count, 2, - " prepared firmware log twice"); - TEST_EQ(strcmp(mock_prepare_log[0], "1"), 0, - " got correct firmware log"); - TEST_EQ(strcmp(mock_prepare_log[1], "2"), 0, - " got a new firmware log"); - - /* Back to firmware log screen again will not reacquire a newer one */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress('\t'); /* enter debug info screen */ - add_mock_keypress(VB_KEY_ESC); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "back to the screen and do not reacquire a new log"); - TEST_EQ(mock_prepare_log_count, 3, - " prepared firmware log three times"); - TEST_EQ(strcmp(mock_prepare_log[0], "1"), 0, - " got correct firmware log"); - /* Skip entry #1 which is for preparing debug info */ - TEST_EQ(strcmp(mock_prepare_log[2], "1"), 0, - " got the same firmware log"); - VB2_DEBUG("...done.\n"); } @@ -1445,174 +1036,6 @@ static void developer_screen_tests(void) VB2_DEBUG("...done.\n"); } -static void manual_recovery_screen_tests(void) -{ - /* Recovery select screen: disabled and hidden item mask */ - reset_common_data(FOR_MANUAL_RECOVERY); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "recovery select screen: no disabled or hidden item"); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x0, MOCK_IGNORE); - - /* Recovery select screen */ - reset_common_data(FOR_MANUAL_RECOVERY); - /* #0: Language menu */ - add_mock_keypress(VB_KEY_UP); - add_mock_keypress(VB_KEY_ENTER); - /* #1: Phone recovery */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* #2: External disk recovery */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_ESC); - /* #3: Launch diagnostics */ - add_mock_keypress(VB_KEY_DOWN); - /* #4: Advanced options */ - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* End of menu */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); /* Blocked */ - extend_calls_until_shutdown(); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "recovery select screen"); - /* #0: Language menu */ - DISPLAYED_PASS(); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#0: language menu", VB2_SCREEN_LANGUAGE_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #1: Phone recovery */ - DISPLAYED_PASS(); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#1: phone recovery", VB2_SCREEN_RECOVERY_PHONE_STEP1, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #2: External disk recovery */ - DISPLAYED_PASS(); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#2: disk recovery", VB2_SCREEN_RECOVERY_DISK_STEP1, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - /* #3: Launch diagnostics */ - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 3, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - /* #4: Advanced options */ - DISPLAYED_EQ("recovery select", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 4, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - - DISPLAYED_EQ("#3: advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* End of menu */ - DISPLAYED_PASS(); - DISPLAYED_EQ("end of menu", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, 5, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Advanced options screen: disabled and hidden item mask */ - reset_common_data(FOR_MANUAL_RECOVERY); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "advanced options screen: no disabled or hidden item"); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x0, MOCK_IGNORE); - - /* Advanced options screen */ - reset_common_data(FOR_MANUAL_RECOVERY); - /* #0: Language menu */ - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_UP); - add_mock_keypress(VB_KEY_ENTER); - /* #1: Enable dev mode */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* #2: Debug info */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* #3: Firmware log */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* #4: Back */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* End of menu */ - add_mock_keypress(VB_KEY_ENTER); - add_mock_keypress(VB_KEY_DOWN); - extend_calls_until_shutdown(); - TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "advanced options screen"); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - /* #0: Language menu */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#0: language menu", VB2_SCREEN_LANGUAGE_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #1: Enable dev mode */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#1: enable dev mode", VB2_SCREEN_RECOVERY_TO_DEV, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #2: Debug info */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#2: debug info", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #3: Firmware log */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 3, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#3: firmware log", VB2_SCREEN_FIRMWARE_LOG, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #4: Back */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 4, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#4: back", VB2_SCREEN_RECOVERY_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* End of menu */ - DISPLAYED_PASS(); - DISPLAYED_EQ("end of menu", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - VB2_DEBUG("...done.\n"); -} - static void diagnostics_screen_tests(void) { VB2_DEBUG("Testing diagnostic screens...\n"); @@ -1724,14 +1147,10 @@ static void diagnostics_screen_tests(void) int main(void) { developer_tests(); - manual_recovery_tests(); - language_selection_tests(); debug_info_tests(); - firmware_log_tests(); /* Screen displayed */ developer_screen_tests(); - manual_recovery_screen_tests(); diagnostics_screen_tests(); return gTestSuccess ? 0 : 255; diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c index ae0e0064..2e4026df 100644 --- a/tests/vboot_api_kernel4_tests.c +++ b/tests/vboot_api_kernel4_tests.c @@ -149,7 +149,7 @@ static void rec_check(struct vb2_context *c) TEST_TRUE(commit_data_called, " commit data"); } -vb2_error_t vb2_manual_recovery_menu(struct vb2_context *c) +vb2_error_t vb2ex_manual_recovery_ui(struct vb2_context *c) { rec_check(c); if (vbboot_retval == -3) |