summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoredisonhello <edisonhello@google.com>2021-08-31 16:48:29 +0800
committerCommit Bot <commit-bot@chromium.org>2021-09-14 08:03:14 +0000
commit0d72f07a52e25c53ce4529345994401c835eb9e2 (patch)
treec2c941245a07ad39db2f93f8bac2ecc5c7089de3
parent50fa4408ada6b891ce77de2879ea0bd7f875787f (diff)
downloadvboot-0d72f07a52e25c53ce4529345994401c835eb9e2.tar.gz
vboot/ui: Remove developer menu and related tests
This CL is a part of centralizing ui codes. The removed screens and unit tests will be added in depthcharge. Remove developer menu and its action function. Remove developer mode, developer to norm, developer boot external, developer invalid disk, developer select altfw screens. Remove unit tests for above screens and menu. BUG=b:172339016 TEST=export CC=x86_64-pc-linux-gnu-clang DEBUG=1 DETACHABLE=0; \ make -j test_setup && make -j runtests TEST=export CC=x86_64-pc-linux-gnu-clang DEBUG=1 DETACHABLE=1; \ make -j test_setup && make -j runtests BRANCH=none Cq-Depend: chromium:3132550 Signed-off-by: edisonhello <edisonhello@google.com> Change-Id: I45332f8e059eba612231362cc56a70da1336c7c2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3132504 Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--firmware/2lib/2stub.c6
-rw-r--r--firmware/2lib/2ui.c37
-rw-r--r--firmware/2lib/2ui_screens.c369
-rw-r--r--firmware/2lib/include/2api.h14
-rw-r--r--firmware/2lib/include/2ui.h14
-rw-r--r--firmware/lib/vboot_api_kernel.c2
-rw-r--r--tests/vb2_ui_action_tests.c64
-rw-r--r--tests/vb2_ui_tests.c502
-rw-r--r--tests/vboot_api_kernel4_tests.c2
9 files changed, 22 insertions, 988 deletions
diff --git a/firmware/2lib/2stub.c b/firmware/2lib/2stub.c
index 368915b1..181fa496 100644
--- a/firmware/2lib/2stub.c
+++ b/firmware/2lib/2stub.c
@@ -268,3 +268,9 @@ vb2_error_t vb2ex_manual_recovery_ui(struct vb2_context *ctx)
{
return VB2_SUCCESS;
}
+
+__attribute__((weak))
+vb2_error_t vb2ex_developer_ui(struct vb2_context *ctx)
+{
+ return VB2_SUCCESS;
+}
diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c
index db79eb72..ab0692bf 100644
--- a/firmware/2lib/2ui.c
+++ b/firmware/2lib/2ui.c
@@ -414,43 +414,6 @@ vb2_error_t vb2_ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id,
}
/*****************************************************************************/
-/* Developer mode */
-
-vb2_error_t vb2_developer_menu(struct vb2_context *ctx)
-{
- enum vb2_screen root_screen_id = VB2_SCREEN_DEVELOPER_MODE;
- if (!(ctx->flags & VB2_CONTEXT_DEV_BOOT_ALLOWED)) {
- VB2_DEBUG("WARNING: Dev boot not allowed; forcing to-norm\n");
- root_screen_id = VB2_SCREEN_DEVELOPER_TO_NORM;
- }
- return vb2_ui_loop(ctx, root_screen_id, developer_action);
-}
-
-vb2_error_t developer_action(struct vb2_ui_context *ui)
-{
- /* Developer mode keyboard shortcuts */
- if (ui->key == '\t')
- return vb2_ui_screen_change(ui, VB2_SCREEN_DEBUG_INFO);
-
- /* Ignore other shortcuts */
- if (!(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALLOWED))
- return VB2_REQUEST_UI_CONTINUE;
-
- if (ui->key == VB_KEY_CTRL('S'))
- return vb2_ui_screen_change(ui, VB2_SCREEN_DEVELOPER_TO_NORM);
- if (ui->key == VB_KEY_CTRL('U') ||
- (DETACHABLE && ui->key == VB_BUTTON_VOL_UP_LONG_PRESS))
- return vb2_ui_developer_mode_boot_external_action(ui);
- if (ui->key == VB_KEY_CTRL('D') ||
- (DETACHABLE && ui->key == VB_BUTTON_VOL_DOWN_LONG_PRESS))
- return vb2_ui_developer_mode_boot_internal_action(ui);
- if (ui->key == VB_KEY_CTRL('L')) /* L for aLtfw (formerly Legacy) */
- return vb2_ui_developer_mode_boot_altfw_action(ui);
-
- 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 51e428a4..5e08b57d 100644
--- a/firmware/2lib/2ui_screens.c
+++ b/firmware/2lib/2ui_screens.c
@@ -515,370 +515,6 @@ static const struct vb2_screen_info recovery_to_dev_screen = {
};
/******************************************************************************/
-/* VB2_SCREEN_DEVELOPER_MODE */
-
-#define DEVELOPER_MODE_ITEM_RETURN_TO_SECURE 1
-#define DEVELOPER_MODE_ITEM_BOOT_INTERNAL 2
-#define DEVELOPER_MODE_ITEM_BOOT_EXTERNAL 3
-#define DEVELOPER_MODE_ITEM_SELECT_ALTFW 4
-
-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);
-
- /* Don't show "Return to secure mode" button if GBB forces dev mode. */
- if (vb2api_gbb_get_flags(ui->ctx) & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON)
- VB2_SET_BIT(ui->state->hidden_item_mask,
- DEVELOPER_MODE_ITEM_RETURN_TO_SECURE);
-
- /* Don't show "Boot from external disk" button if not allowed. */
- if (!(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_EXTERNAL_ALLOWED))
- VB2_SET_BIT(ui->state->hidden_item_mask,
- DEVELOPER_MODE_ITEM_BOOT_EXTERNAL);
-
- /* Don't show "Select alternate bootloader" button if not allowed. */
- if (!(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED))
- VB2_SET_BIT(ui->state->hidden_item_mask,
- DEVELOPER_MODE_ITEM_SELECT_ALTFW);
-
- /* Choose the default selection. */
- switch (default_boot) {
- case VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL:
- ui->state->selected_item = DEVELOPER_MODE_ITEM_BOOT_EXTERNAL;
- break;
- case VB2_DEV_DEFAULT_BOOT_TARGET_ALTFW:
- ui->state->selected_item =
- DEVELOPER_MODE_ITEM_SELECT_ALTFW;
- break;
- default:
- ui->state->selected_item = DEVELOPER_MODE_ITEM_BOOT_INTERNAL;
- break;
- }
-
- ui->start_time_ms = vb2ex_mtime();
-
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_developer_mode_boot_internal_action(
- struct vb2_ui_context *ui)
-{
- vb2_error_t rv;
-
- if (!(ui->ctx->flags & VB2_CONTEXT_DEVELOPER_MODE) ||
- !(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALLOWED)) {
- VB2_DEBUG("ERROR: Dev mode internal boot not allowed\n");
- return VB2_SUCCESS;
- }
-
- rv = VbTryLoadKernel(ui->ctx, VB_DISK_FLAG_FIXED);
- if (rv == VB2_SUCCESS)
- return VB2_REQUEST_UI_EXIT;
-
- VB2_DEBUG("ERROR: Failed to boot from internal disk: %#x\n", rv);
- ui->error_beep = 1;
- return set_ui_error(ui, VB2_UI_ERROR_INTERNAL_BOOT_FAILED);
-}
-
-vb2_error_t vb2_ui_developer_mode_boot_external_action(
- struct vb2_ui_context *ui)
-{
- vb2_error_t rv;
-
- /* Validity check, should never happen. */
- if (!(ui->ctx->flags & VB2_CONTEXT_DEVELOPER_MODE) ||
- !(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALLOWED) ||
- !(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_EXTERNAL_ALLOWED)) {
- VB2_DEBUG("ERROR: Dev mode external boot not allowed\n");
- ui->error_beep = 1;
- return set_ui_error(ui, VB2_UI_ERROR_EXTERNAL_BOOT_DISABLED);
- }
-
- rv = VbTryLoadKernel(ui->ctx, VB_DISK_FLAG_REMOVABLE);
- if (rv == VB2_SUCCESS) {
- return VB2_REQUEST_UI_EXIT;
- } else if (rv == VB2_ERROR_LK_NO_DISK_FOUND) {
- if (ui->state->screen->id !=
- VB2_SCREEN_DEVELOPER_BOOT_EXTERNAL) {
- VB2_DEBUG("No external disk found\n");
- ui->error_beep = 1;
- }
- return vb2_ui_screen_change(
- ui, VB2_SCREEN_DEVELOPER_BOOT_EXTERNAL);
- } else {
- if (ui->state->screen->id !=
- VB2_SCREEN_DEVELOPER_INVALID_DISK) {
- VB2_DEBUG("Invalid external disk: %#x\n", rv);
- ui->error_beep = 1;
- }
- return vb2_ui_screen_change(
- ui, VB2_SCREEN_DEVELOPER_INVALID_DISK);
- }
-}
-
-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;
-
- /* Once any user interaction occurs, stop the timer. */
- if (ui->key)
- ui->disable_timer = 1;
- if (ui->disable_timer)
- return VB2_SUCCESS;
-
- elapsed_ms = vb2ex_mtime() - ui->start_time_ms;
-
- /* If we're using short delay, wait 2 seconds and don't beep. */
- if (use_short && elapsed_ms > DEV_DELAY_SHORT_MS) {
- VB2_DEBUG("Booting default target after 2s\n");
- ui->disable_timer = 1;
- return vb2_ui_menu_select(ui);
- }
-
- /* Otherwise, beep at 20 and 20.5 seconds. */
- if ((ui->beep_count == 0 && elapsed_ms > DEV_DELAY_BEEP1_MS) ||
- (ui->beep_count == 1 && elapsed_ms > DEV_DELAY_BEEP2_MS)) {
- vb2ex_beep(250, 400);
- ui->beep_count++;
- }
-
- /* Stop after 30 seconds. */
- if (elapsed_ms > DEV_DELAY_NORMAL_MS) {
- VB2_DEBUG("Booting default target after 30s\n");
- ui->disable_timer = 1;
- return vb2_ui_menu_select(ui);
- }
-
- return VB2_SUCCESS;
-}
-
-static const struct vb2_menu_item developer_mode_items[] = {
- LANGUAGE_SELECT_ITEM,
- [DEVELOPER_MODE_ITEM_RETURN_TO_SECURE] = {
- .text = "Return to secure mode",
- .target = VB2_SCREEN_DEVELOPER_TO_NORM,
- },
- [DEVELOPER_MODE_ITEM_BOOT_INTERNAL] = {
- .text = "Boot from internal disk",
- .action = vb2_ui_developer_mode_boot_internal_action,
- },
- [DEVELOPER_MODE_ITEM_BOOT_EXTERNAL] = {
- .text = "Boot from external disk",
- .action = vb2_ui_developer_mode_boot_external_action,
- },
- [DEVELOPER_MODE_ITEM_SELECT_ALTFW] = {
- .text = "Select alternate bootloader",
- .target = VB2_SCREEN_DEVELOPER_SELECT_ALTFW,
- },
- ADVANCED_OPTIONS_ITEM,
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info developer_mode_screen = {
- .id = VB2_SCREEN_DEVELOPER_MODE,
- .name = "Developer mode",
- .init = developer_mode_init,
- .action = developer_mode_action,
- .menu = MENU_ITEMS(developer_mode_items),
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_DEVELOPER_TO_NORM */
-
-#define DEVELOPER_TO_NORM_ITEM_CONFIRM 1
-#define DEVELOPER_TO_NORM_ITEM_CANCEL 2
-
-static vb2_error_t developer_to_norm_init(struct vb2_ui_context *ui)
-{
- /* Don't allow to-norm if GBB forces dev mode */
- if (vb2api_gbb_get_flags(ui->ctx) & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
- VB2_DEBUG("ERROR: to-norm not allowed\n");
- return set_ui_error_and_go_back(
- ui, VB2_UI_ERROR_TO_NORM_NOT_ALLOWED);
- }
- ui->state->selected_item = DEVELOPER_TO_NORM_ITEM_CONFIRM;
- /* Hide "Cancel" button if dev boot is not allowed */
- if (!(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALLOWED))
- VB2_SET_BIT(ui->state->hidden_item_mask,
- DEVELOPER_TO_NORM_ITEM_CANCEL);
- return VB2_SUCCESS;
-}
-
-vb2_error_t developer_to_norm_action(struct vb2_ui_context *ui)
-{
- if (vb2api_disable_developer_mode(ui->ctx) == VB2_SUCCESS)
- return VB2_REQUEST_REBOOT;
- else
- return VB2_SUCCESS;
-}
-
-static const struct vb2_menu_item developer_to_norm_items[] = {
- LANGUAGE_SELECT_ITEM,
- [DEVELOPER_TO_NORM_ITEM_CONFIRM] = {
- .text = "Confirm",
- .action = developer_to_norm_action,
- },
- [DEVELOPER_TO_NORM_ITEM_CANCEL] = {
- .text = "Cancel",
- .action = vb2_ui_screen_back,
- },
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info developer_to_norm_screen = {
- .id = VB2_SCREEN_DEVELOPER_TO_NORM,
- .name = "Transition to normal mode",
- .init = developer_to_norm_init,
- .menu = MENU_ITEMS(developer_to_norm_items),
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_DEVELOPER_BOOT_EXTERNAL */
-
-static const struct vb2_menu_item developer_boot_external_items[] = {
- LANGUAGE_SELECT_ITEM,
- BACK_ITEM,
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info developer_boot_external_screen = {
- .id = VB2_SCREEN_DEVELOPER_BOOT_EXTERNAL,
- .name = "Developer boot from external disk",
- .action = vb2_ui_developer_mode_boot_external_action,
- .menu = MENU_ITEMS(developer_boot_external_items),
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_DEVELOPER_INVALID_DISK */
-
-static const struct vb2_menu_item developer_invalid_disk_items[] = {
- LANGUAGE_SELECT_ITEM,
- BACK_ITEM,
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info developer_invalid_disk_screen = {
- .id = VB2_SCREEN_DEVELOPER_INVALID_DISK,
- .name = "Invalid external disk in dev mode",
- .action = vb2_ui_developer_mode_boot_external_action,
- .menu = MENU_ITEMS(developer_invalid_disk_items),
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_DEVELOPER_SELECT_ALTFW */
-
-static const struct vb2_menu_item developer_select_bootloader_items_before[] = {
- LANGUAGE_SELECT_ITEM,
-};
-
-static const struct vb2_menu_item developer_select_bootloader_items_after[] = {
- BACK_ITEM,
- POWER_OFF_ITEM,
-};
-
-static vb2_error_t developer_select_bootloader_init(struct vb2_ui_context *ui)
-{
- if (vb2_get_menu(ui)->num_items == 0)
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_ALTFW_EMPTY);
- /* Select the first bootloader. */
- ui->state->selected_item =
- ARRAY_SIZE(developer_select_bootloader_items_before);
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_developer_mode_boot_altfw_action(
- struct vb2_ui_context *ui)
-{
- uint32_t altfw_id;
- const size_t menu_before_len =
- ARRAY_SIZE(developer_select_bootloader_items_before);
-
- if (!(ui->ctx->flags & VB2_CONTEXT_DEVELOPER_MODE) ||
- !(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALLOWED) ||
- !(ui->ctx->flags & VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED)) {
- VB2_DEBUG("ERROR: Dev mode alternate bootloader not allowed\n");
- return set_ui_error(ui, VB2_UI_ERROR_ALTFW_DISABLED);
- }
-
- if (vb2ex_get_altfw_count() == 0) {
- VB2_DEBUG("ERROR: No alternate bootloader was found\n");
- return set_ui_error(ui, VB2_UI_ERROR_ALTFW_EMPTY);
- }
-
- if (ui->key == VB_KEY_CTRL('L')) {
- altfw_id = 0;
- VB2_DEBUG("Try booting from default bootloader\n");
- } else {
- altfw_id = ui->state->selected_item - menu_before_len + 1;
- VB2_DEBUG("Try booting from bootloader #%u\n", altfw_id);
- }
-
- /* vb2ex_run_altfw will not return if successful */
- vb2ex_run_altfw(altfw_id);
-
- VB2_DEBUG("ERROR: Alternate bootloader failed\n");
- return set_ui_error(ui, VB2_UI_ERROR_ALTFW_FAILED);
-}
-
-static const struct vb2_menu *get_bootloader_menu(struct vb2_ui_context *ui)
-{
- int i;
- uint32_t num_bootloaders, num_items;
- struct vb2_menu_item *items;
- const size_t menu_before_len =
- ARRAY_SIZE(developer_select_bootloader_items_before);
- const size_t menu_after_len =
- ARRAY_SIZE(developer_select_bootloader_items_after);
-
- if (ui->bootloader_menu.num_items > 0)
- return &ui->bootloader_menu;
-
- num_bootloaders = vb2ex_get_altfw_count();
- if (num_bootloaders == 0) {
- VB2_DEBUG("ERROR: No bootloader was found\n");
- return NULL;
- }
- VB2_DEBUG("num_bootloaders: %u\n", num_bootloaders);
- num_items = num_bootloaders + menu_before_len + menu_after_len;
- items = malloc(num_items * sizeof(struct vb2_menu_item));
- if (!items) {
- VB2_DEBUG("ERROR: malloc failed for bootloader items\n");
- return NULL;
- }
-
- /* Copy prefix items to the begin. */
- memcpy(&items[0],
- developer_select_bootloader_items_before,
- menu_before_len * sizeof(struct vb2_menu_item));
-
- /* Copy bootloaders. */
- for (i = 0; i < num_bootloaders; i++) {
- items[i + menu_before_len].text = "Some bootloader";
- items[i + menu_before_len].action =
- vb2_ui_developer_mode_boot_altfw_action;
- }
-
- /* Copy postfix items to the end. */
- memcpy(&items[num_items - menu_after_len],
- developer_select_bootloader_items_after,
- menu_after_len * sizeof(struct vb2_menu_item));
-
- ui->bootloader_menu.num_items = num_items;
- ui->bootloader_menu.items = items;
-
- return &ui->bootloader_menu;
-}
-
-static const struct vb2_screen_info developer_select_bootloader_screen = {
- .id = VB2_SCREEN_DEVELOPER_SELECT_ALTFW,
- .name = "Select alternate bootloader",
- .init = developer_select_bootloader_init,
- .get_menu = get_bootloader_menu,
-};
-
-/******************************************************************************/
/* VB2_SCREEN_DIAGNOSTICS */
#define DIAGNOSTICS_ITEM_STORAGE_HEALTH 1
@@ -1218,11 +854,6 @@ static const struct vb2_screen_info *screens[] = {
&debug_info_screen,
&firmware_log_screen,
&recovery_to_dev_screen,
- &developer_mode_screen,
- &developer_to_norm_screen,
- &developer_boot_external_screen,
- &developer_invalid_disk_screen,
- &developer_select_bootloader_screen,
&diagnostics_screen,
&diagnostics_storage_health_screen,
&diagnostics_storage_test_short_screen,
diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h
index df8c8d1a..a1cda6a1 100644
--- a/firmware/2lib/include/2api.h
+++ b/firmware/2lib/include/2api.h
@@ -1416,6 +1416,20 @@ vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx);
*/
vb2_error_t vb2ex_manual_recovery_ui(struct vb2_context *ctx);
+/**
+ * UI for a developer-mode boot.
+ *
+ * Enter the developer menu, which provides options to switch out of developer
+ * mode, boot from external media, use legacy bootloader, or boot Chrome OS from
+ * disk.
+ *
+ * If a timeout occurs, take the default boot action.
+ *
+ * @param ctx Vboot context
+ * @return VB2_SUCCESS, or non-zero error code.
+ */
+vb2_error_t vb2ex_developer_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 2ed65e9d..0fb18513 100644
--- a/firmware/2lib/include/2ui.h
+++ b/firmware/2lib/include/2ui.h
@@ -232,20 +232,6 @@ vb2_error_t vb2_ui_screen_change(struct vb2_ui_context *ui, enum vb2_screen id);
/* UI loops */
/**
- * UI for a developer-mode boot.
- *
- * Enter the developer menu, which provides options to switch out of developer
- * mode, boot from external media, use legacy bootloader, or boot Chrome OS from
- * disk.
- *
- * If a timeout occurs, take the default boot action.
- *
- * @param ctx Vboot context
- * @return VB2_SUCCESS, or non-zero error code.
- */
-vb2_error_t vb2_developer_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 9978097d..10728b95 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -217,7 +217,7 @@ vb2_error_t VbSelectAndLoadKernel(struct vb2_context *ctx,
return VB2_REQUEST_REBOOT;
} else if (ctx->flags & VB2_CONTEXT_DEVELOPER_MODE) {
/* Developer boot. This has UI. */
- VB2_TRY(vb2_developer_menu(ctx));
+ VB2_TRY(vb2ex_developer_ui(ctx));
} else {
/* Normal boot */
VB2_TRY(vb2_normal_boot(ctx));
diff --git a/tests/vb2_ui_action_tests.c b/tests/vb2_ui_action_tests.c
index 70ca23af..ba378f43 100644
--- a/tests/vb2_ui_action_tests.c
+++ b/tests/vb2_ui_action_tests.c
@@ -727,67 +727,6 @@ static void menu_select_tests(void)
VB2_DEBUG("...done.\n");
}
-static void vb2_ui_developer_mode_boot_altfw_action_tests(void)
-{
- VB2_DEBUG("Test developer mode boot alternate action...\n");
-
- /* Not allowed: not in dev mode */
- reset_common_data();
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- TEST_EQ(vb2_ui_developer_mode_boot_altfw_action(&mock_ui_context),
- VB2_REQUEST_UI_CONTINUE, "not allowed: not in dev mode");
- TEST_EQ(mock_ui_context.error_code, VB2_UI_ERROR_ALTFW_DISABLED,
- "ui_error code is set");
- TEST_EQ(mock_run_altfw_called, 0, " vb2ex_run_altfw not called");
-
- /* Not allowed: dev boot not allowed */
- reset_common_data();
- ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
- ctx->flags &= ~(uint64_t)VB2_CONTEXT_DEV_BOOT_ALLOWED;
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- TEST_EQ(vb2_ui_developer_mode_boot_altfw_action(&mock_ui_context),
- VB2_REQUEST_UI_CONTINUE, "not allowed: dev boot not allowed");
- TEST_EQ(mock_ui_context.error_code, VB2_UI_ERROR_ALTFW_DISABLED,
- "ui_error code is set");
- TEST_EQ(mock_run_altfw_called, 0, " vb2ex_run_altfw not called");
-
- /* Not allowed: boot altfw not allowed */
- reset_common_data();
- ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
- TEST_EQ(vb2_ui_developer_mode_boot_altfw_action(&mock_ui_context),
- VB2_REQUEST_UI_CONTINUE, "not allowed: boot altfw not allowed");
- TEST_EQ(mock_ui_context.error_code, VB2_UI_ERROR_ALTFW_DISABLED,
- "ui_error code is set");
- TEST_EQ(mock_run_altfw_called, 0, " vb2ex_run_altfw not called");
-
- /* Allowed */
- reset_common_data();
- ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- mock_ui_context.state->selected_item = 2;
- TEST_EQ(vb2_ui_developer_mode_boot_altfw_action(&mock_ui_context),
- VB2_REQUEST_UI_CONTINUE, "allowed");
- TEST_EQ(mock_ui_context.error_code, VB2_UI_ERROR_ALTFW_FAILED,
- "ui_error code is set");
- TEST_EQ(mock_run_altfw_called, 1, " vb2ex_run_altfw called once");
- TEST_EQ(mock_altfw_last, 2, " select bootloader #2");
-
- /* CTRL+L = default bootloader */
- reset_common_data();
- ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- mock_ui_context.key = VB_KEY_CTRL('L');
- mock_ui_context.state->selected_item = 4; /* Ignored */
- TEST_EQ(vb2_ui_developer_mode_boot_altfw_action(&mock_ui_context),
- VB2_REQUEST_UI_CONTINUE, "allowed: ctrl+l");
- TEST_EQ(mock_ui_context.error_code, VB2_UI_ERROR_ALTFW_FAILED,
- "ui_error code is set");
- TEST_EQ(mock_run_altfw_called, 1, " vb2ex_run_altfw called once");
- TEST_EQ(mock_altfw_last, 0, " select bootloader #0");
-
- VB2_DEBUG("...done.\n");
-}
-
static void ui_loop_tests(void)
{
int i;
@@ -989,9 +928,6 @@ int main(void)
menu_next_tests();
menu_select_tests();
- /* Screen actions */
- vb2_ui_developer_mode_boot_altfw_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 2eaae0c3..b56d6315 100644
--- a/tests/vb2_ui_tests.c
+++ b/tests/vb2_ui_tests.c
@@ -140,17 +140,6 @@ static void add_mock_pp_pressed(int pressed)
mock_pp_pressed[mock_pp_pressed_total++] = pressed;
}
-static void extend_calls_until_shutdown(void)
-{
- if (mock_calls_until_shutdown < mock_key_total)
- mock_calls_until_shutdown = mock_key_total;
- if (mock_calls_until_shutdown < mock_vbtlk_total)
- mock_calls_until_shutdown = mock_vbtlk_total;
- if (mock_calls_until_shutdown < mock_pp_pressed_total)
- mock_calls_until_shutdown = mock_pp_pressed_total;
- mock_calls_until_shutdown++;
-}
-
static void displayed_eq(const char *text,
enum vb2_screen screen,
uint32_t locale_id,
@@ -229,22 +218,6 @@ static void displayed_no_extra(int line)
#define DISPLAYED_NO_EXTRA() displayed_no_extra(__LINE__)
-static void expect_beep(uint32_t msec,
- uint32_t frequency,
- uint32_t time_expected)
-{
- if (mock_beep_total >= ARRAY_SIZE(mock_beep)) {
- TEST_TRUE(0, " mock_beep ran out of entries!");
- return;
- }
-
- mock_beep[mock_beep_total++] = (struct beep_call){
- .msec = msec,
- .frequency = frequency,
- .time_expected = time_expected,
- };
-}
-
/* Check if the result time falls in range [expected, expected + FUZZ_MS) */
static void check_time(uint32_t result, uint32_t expected, const char *desc)
{
@@ -565,477 +538,6 @@ vb2_error_t vb2ex_diag_get_storage_test_log(const char **log)
}
/* Tests */
-static void developer_tests(void)
-{
- VB2_DEBUG("Testing developer mode...\n");
-
- /* Power button short pressed = shutdown request */
- if (!DETACHABLE) {
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_BUTTON_POWER_SHORT_PRESS);
- mock_calls_until_shutdown = -1;
- TEST_EQ(vb2_developer_menu(ctx),
- VB2_REQUEST_SHUTDOWN,
- "power button short pressed = shutdown");
- }
-
- /* Proceed to internal disk after timeout */
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- expect_beep(250, 400, DEV_DELAY_BEEP1_MS);
- expect_beep(250, 400, DEV_DELAY_BEEP2_MS);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "proceed to internal disk after timeout");
- check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_NORMAL_MS,
- " finished delay");
- 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);
- ctx->flags &= ~(uint64_t)VB2_CONTEXT_DEV_BOOT_ALLOWED;
- TEST_EQ(vb2_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;
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "use short delay");
- check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_SHORT_MS,
- " finished delay");
- TEST_EQ(mock_beep_count, 0, " never beeped");
-
- /* Stop timer on any user input: normal delay */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress('A');
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "stop timer on any user input: normal delay");
- TEST_TRUE(mock_time_ms - mock_time_start_ms > DEV_DELAY_NORMAL_MS,
- " delay aborted");
- TEST_EQ(mock_calls_until_shutdown, 0, " loop forever");
- TEST_EQ(mock_beep_count, 0, " never beeped");
-
- /* Stop timer on any user input: short delay */
- reset_common_data(FOR_DEVELOPER);
- gbb.flags |= VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY;
- add_mock_keypress('A');
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "stop timer on any user input: short delay");
- TEST_TRUE(mock_time_ms - mock_time_start_ms > DEV_DELAY_SHORT_MS,
- " delay aborted");
- TEST_EQ(mock_calls_until_shutdown, 0, " loop forever");
- TEST_EQ(mock_beep_count, 0, " never beeped");
-
- /* If fail to load internal disk, don't boot */
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_ERROR_LK_NO_DISK_FOUND, VB_DISK_FLAG_FIXED);
- TEST_NEQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "if fail to load internal disk, don't boot");
- TEST_EQ(mock_calls_until_shutdown, 0, " loop forever");
-
- /* Select boot internal in dev menu */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_ENTER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "select boot internal in dev menu");
-
- /* Ctrl+U = boot external */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_CTRL('U'));
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "ctrl+u = boot external");
-
- /* Ctrl+D = boot internal */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_CTRL('D'));
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "ctrl+d = boot internal");
-
- /* VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal */
- if (DETACHABLE) {
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_BUTTON_VOL_DOWN_LONG_PRESS);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "VB_BUTTON_VOL_DOWN_LONG_PRESS = boot internal");
- }
-
- /* Proceed to external disk after timeout */
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- expect_beep(250, 400, DEV_DELAY_BEEP1_MS);
- expect_beep(250, 400, DEV_DELAY_BEEP2_MS);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "proceed to external disk after timeout");
- check_time(mock_time_ms - mock_time_start_ms, DEV_DELAY_NORMAL_MS,
- " finished delay");
- TEST_EQ(mock_beep_count, 2, " beeped twice");
- TEST_TRUE(mock_iters >= mock_vbtlk_total, " used up mock_vbtlk");
-
- /* Default boot from external not allowed, don't boot */
- reset_common_data(FOR_DEVELOPER);
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- ctx->flags &= ~(uint64_t)VB2_CONTEXT_DEV_BOOT_EXTERNAL_ALLOWED;
- 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);
- ctx->flags &= ~(uint64_t)VB2_CONTEXT_DEV_BOOT_ALLOWED;
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- TEST_EQ(vb2_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);
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "if no external disk, don't boot");
-
- /* Select boot external in dev menu */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_ENTER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "select boot external in dev menu");
-
- /* Ctrl+L = boot altfw (allowed) */
- reset_common_data(FOR_DEVELOPER);
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- add_mock_keypress(VB_KEY_CTRL('L'));
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "ctrl+l = boot altfw");
- TEST_EQ(mock_run_altfw_called, 1, " vb2ex_run_altfw called");
-
- /* Ctrl+L = boot altfw (disallowed) */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_CTRL('L'));
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "ctrl+l = boot altfw");
- TEST_EQ(mock_run_altfw_called, 0,
- " vb2ex_run_altfw not called");
-
- /* VB_BUTTON_VOL_UP_LONG_PRESS = boot external */
- if (DETACHABLE) {
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_BUTTON_VOL_UP_LONG_PRESS);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "VB_BUTTON_VOL_UP_LONG_PRESS = boot external");
- }
-
- /* Select to_norm in dev menu and confirm */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_UP);
- add_mock_keypress(VB_KEY_ENTER);
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_REBOOT,
- "select to_norm in dev menu and confirm");
- 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);
- ctx->flags &= ~(uint64_t)VB2_CONTEXT_DEV_BOOT_ALLOWED;
- add_mock_keypress(VB_KEY_UP);
- add_mock_keypress(VB_KEY_ENTER);
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_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);
- add_mock_keypress(VB_KEY_ENTER);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "select to_norm in dev menu and cancel");
- TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 0,
- " disable dev request");
-
- /* Ctrl+S = to_norm */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_CTRL('S'));
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_REBOOT,
- "ctrl+s = to_norm");
- TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1,
- " disable dev request");
-
- /* Dev mode forced by GBB flag */
- reset_common_data(FOR_DEVELOPER);
- gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON;
- add_mock_keypress(VB_KEY_CTRL('S'));
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "dev mode forced by GBB flag");
- TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 0,
- " disable dev request");
-
- /* Power off */
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- /* Navigate to the bottom most menu item */
- 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_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "select power off");
-
- VB2_DEBUG("...done.\n");
-}
-
-static void debug_info_tests(void)
-{
- VB2_DEBUG("Testing debug info screen...\n");
-
- /* Tab = debug info for all menus */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress('\t');
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "tab = debug info in dev mode");
- DISPLAYED_PASS();
- DISPLAYED_EQ("debug info", VB2_SCREEN_DEBUG_INFO, MOCK_IGNORE,
- MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
- DISPLAYED_NO_EXTRA();
-
- VB2_DEBUG("...done.\n");
-}
-
-static void developer_screen_tests(void)
-{
- VB2_DEBUG("Testing developer mode screens...\n");
-
- /* Dev mode: default selected item */
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen: set default selection to boot internal");
- DISPLAYED_EQ("dev mode screen", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
-
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen: set default selection to boot external");
- DISPLAYED_EQ("dev mode screen", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, 3, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
-
- /* Dev mode: disabled and hidden item mask */
- reset_common_data(FOR_DEVELOPER);
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen: no disabled or hidden item");
- DISPLAYED_EQ("dev mode screen", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x0, MOCK_IGNORE);
-
- reset_common_data(FOR_DEVELOPER);
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON;
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen: hide to_norm item");
- DISPLAYED_EQ("dev mode screen", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x2, MOCK_IGNORE);
-
- reset_common_data(FOR_DEVELOPER);
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- ctx->flags &= ~(uint64_t)VB2_CONTEXT_DEV_BOOT_EXTERNAL_ALLOWED;
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen: hide boot external");
- DISPLAYED_EQ("dev mode screen", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x8, MOCK_IGNORE);
-
- /* Dev mode screen */
- reset_common_data(FOR_DEVELOPER); /* Select #2 by default */
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- /* #0: Language menu */
- add_mock_keypress(VB_KEY_UP);
- add_mock_keypress(VB_KEY_UP);
- add_mock_keypress(VB_KEY_ENTER);
- /* #1: Return to secure mode */
- add_mock_keypress(VB_KEY_ESC);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_ENTER);
- /* #2: Boot internal */
- add_mock_keypress(VB_KEY_ESC);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen");
- /* #0: Language menu */
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- DISPLAYED_EQ("dev mode", VB2_SCREEN_DEVELOPER_MODE,
- 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: Return to secure mode */
- DISPLAYED_PASS();
- DISPLAYED_EQ("dev mode", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, 1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
- DISPLAYED_EQ("#1: return to secure mode", VB2_SCREEN_DEVELOPER_TO_NORM,
- MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE,
- MOCK_IGNORE);
- /* #2: Boot internal */
- DISPLAYED_PASS();
- DISPLAYED_EQ("dev mode", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
- VB2_DEBUG("#2: boot internal (no extra screen)\n");
- DISPLAYED_NO_EXTRA();
-
- reset_common_data(FOR_DEVELOPER); /* Select #3 by default */
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_REMOVABLE);
- mock_default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL;
- /* #3: Boot external */
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_SUCCESS,
- "dev mode screen");
- /* #3: Boot external */
- DISPLAYED_EQ("dev mode", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, 3, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
- VB2_DEBUG("#3: boot external (no extra screen)\n");
- DISPLAYED_NO_EXTRA();
-
- reset_common_data(FOR_DEVELOPER); /* Select #2 by default */
- ctx->flags |= VB2_CONTEXT_DEV_BOOT_ALTFW_ALLOWED;
- /* #4: Alternate boot */
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_ENTER);
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "dev mode screen");
- TEST_EQ(mock_run_altfw_called, 1, " vb2ex_run_altfw called");
-
- reset_common_data(FOR_DEVELOPER); /* Select #2 by default */
- add_mock_vbtlk(VB2_SUCCESS, VB_DISK_FLAG_FIXED);
- /* #5: Advanced options */
- add_mock_keypress(VB_KEY_DOWN);
- 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 */
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "dev mode screen");
- /* #5: Advanced options */
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- DISPLAYED_EQ("dev mode", VB2_SCREEN_DEVELOPER_MODE,
- MOCK_IGNORE, 5, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
- DISPLAYED_EQ("#4: 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_DEVELOPER_MODE,
- MOCK_IGNORE, 6, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE);
- DISPLAYED_NO_EXTRA();
-
- /* Advanced options screen: disabled and hidden item mask */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_ENTER);
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "advanced options screen: hide to_dev");
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS,
- MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x2, MOCK_IGNORE);
-
- /* Advanced options screen */
- reset_common_data(FOR_DEVELOPER);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_DOWN);
- add_mock_keypress(VB_KEY_ENTER);
- /* #0: Language menu */
- add_mock_keypress(VB_KEY_UP);
- add_mock_keypress(VB_KEY_ENTER);
- /* #1: (Hidden) */
- /* #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);
- extend_calls_until_shutdown();
- TEST_EQ(vb2_developer_menu(ctx), VB2_REQUEST_SHUTDOWN,
- "advanced options screen");
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- DISPLAYED_PASS();
- /* #0: Language menu */
- 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: (Hidden) */
- /* #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_DEVELOPER_MODE,
- MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE,
- MOCK_IGNORE);
- /* End of menu */
- 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");
@@ -1146,11 +648,7 @@ static void diagnostics_screen_tests(void)
int main(void)
{
- developer_tests();
- debug_info_tests();
-
/* Screen displayed */
- developer_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 2e4026df..14c6ea34 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -137,7 +137,7 @@ static vb2_error_t boot_dev(struct vb2_context *c)
return vbboot_retval;
}
-vb2_error_t vb2_developer_menu(struct vb2_context *c)
+vb2_error_t vb2ex_developer_ui(struct vb2_context *c)
{
return boot_dev(c);
}