vboot: deprecate and remove legacy UI code

BUG=b:146399181, b:167643628
TEST=make clean && make runtests
TEST=Build and flash to device
BRANCH=none

Cq-Depend: chromium:2512739
Signed-off-by: Joel Kitching <kitching@google.com>
Change-Id: Ia8d95451d55142fbe9acaa6e49de9b5abe134083
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2512740
Reviewed-by: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
Commit-Queue: Yu-Ping Wu <yupingso@chromium.org>
diff --git a/Makefile b/Makefile
index df7e404..3a72d3d 100644
--- a/Makefile
+++ b/Makefile
@@ -220,22 +220,6 @@
 CFLAGS += -DDETACHABLE=0
 endif
 
-# Enable the menu-based user interface.
-ifneq ($(filter-out 0,${MENU_UI}),)
-CFLAGS += -DMENU_UI=1
-else
-CFLAGS += -DMENU_UI=0
-endif
-
-# LEGACY_MENU_UI controls whether to enable legacy menu UI, which is used with
-# devices that don't have a keyboard (detachables).
-# Pass LEGACY_MENU_UI= (or =0) to make to disable feature.
-ifneq ($(filter-out 0,${LEGACY_MENU_UI}),)
-CFLAGS += -DLEGACY_MENU_UI=1
-else
-CFLAGS += -DLEGACY_MENU_UI=0
-endif
-
 # pass DIAGNOSTIC_UI= (or =0) to make to disable feature
 ifneq ($(filter-out 0,${DIAGNOSTIC_UI}),)
 CFLAGS += -DDIAGNOSTIC_UI=1
@@ -424,11 +408,7 @@
 $(if ${FIRMWARE_ARCH},FWLIB_SRCS,TESTLIB_SRCS) += \
 	firmware/2lib/2ui.c \
 	firmware/2lib/2ui_screens.c \
-	firmware/lib/vboot_audio.c \
-	firmware/lib/vboot_ui_legacy.c \
-	firmware/lib/vboot_ui_legacy_clamshell.c \
-	firmware/lib/vboot_ui_legacy_menu.c \
-	firmware/lib/vboot_ui_legacy_wilco.c
+	firmware/lib/vboot_audio.c
 
 # TPM lightweight command library
 ifeq (${TPM2_MODE},)
@@ -447,14 +427,6 @@
 	firmware/lib/tpm_lite/mocked_tlcl.c
 endif
 
-ifneq (${VENDOR_DATA_LENGTH},)
-CFLAGS += -DVENDOR_DATA_LENGTH=${VENDOR_DATA_LENGTH}
-else ifeq (${FIRMWARE_ARCH},)
-CFLAGS += -DVENDOR_DATA_LENGTH=4
-else
-CFLAGS += -DVENDOR_DATA_LENGTH=0
-endif
-
 ifeq (${FIRMWARE_ARCH},)
 # Include BIOS stubs in the firmware library when compiling for host
 # TODO: split out other stub funcs too
@@ -720,10 +692,6 @@
 	tests/vboot_api_kernel4_tests \
 	tests/vboot_api_kernel_tests \
 	tests/vboot_kernel_tests \
-	tests/vboot_ui_legacy_clamshell_beep_tests \
-	tests/vboot_ui_legacy_clamshell_tests \
-	tests/vboot_ui_legacy_menu_tests \
-	tests/vboot_ui_legacy_tests \
 	tests/verify_kernel
 
 ifeq (${MOCK_TPM}${TPM2_MODE},)
@@ -1268,10 +1236,6 @@
 	${RUNTEST} ${BUILD_RUN}/tests/vboot_api_kernel4_tests
 	${RUNTEST} ${BUILD_RUN}/tests/vboot_api_kernel_tests
 	${RUNTEST} ${BUILD_RUN}/tests/vboot_kernel_tests
-	${RUNTEST} ${BUILD_RUN}/tests/vboot_ui_legacy_clamshell_beep_tests
-	${RUNTEST} ${BUILD_RUN}/tests/vboot_ui_legacy_clamshell_tests
-	${RUNTEST} ${BUILD_RUN}/tests/vboot_ui_legacy_menu_tests
-	${RUNTEST} ${BUILD_RUN}/tests/vboot_ui_legacy_tests
 
 .PHONY: run2tests
 run2tests: install_for_test
diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h
index 9448e12..94f0df5 100644
--- a/firmware/2lib/include/2api.h
+++ b/firmware/2lib/include/2api.h
@@ -182,8 +182,12 @@
 	 */
 	VB2_CONTEXT_NVDATA_V2 = (1 << 18),
 
-	/* Allow vendor data to be set via the vendor data ui. */
-	VB2_CONTEXT_VENDOR_DATA_SETTABLE = (1 << 19),
+	/*
+	 * Allow vendor data to be set via the vendor data ui.
+	 *
+	 * Deprecated with CL:2512740.
+	 */
+	VB2_CONTEXT_DEPRECATED_VENDOR_DATA_SETTABLE = (1 << 19),
 
 	/*
 	 * Caller may set this before running vb2api_fw_phase1.  In this case,
diff --git a/firmware/2lib/include/2return_codes.h b/firmware/2lib/include/2return_codes.h
index 4abe16a..49f9935 100644
--- a/firmware/2lib/include/2return_codes.h
+++ b/firmware/2lib/include/2return_codes.h
@@ -728,8 +728,9 @@
 	/* AUXFW peripheral busy. Cannot upgrade firmware at present. */
 	VB2_ERROR_EX_AUXFW_PERIPHERAL_BUSY,
 
-	/* Error setting vendor data (see: VbExSetVendorData). */
-	VB2_ERROR_EX_SET_VENDOR_DATA,
+	/* Error setting vendor data (see: VbExSetVendorData).
+	 * Deprecated: functionality removed with legacy UI (b/167643628) */
+	VB2_ERROR_DEPRECATED_EX_SET_VENDOR_DATA,
 
 	/* The memory test is running but the output buffer was unchanged. */
 	VB2_ERROR_EX_DIAG_TEST_RUNNING,
diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h
index d55fde2..739019a 100644
--- a/firmware/include/vboot_api.h
+++ b/firmware/include/vboot_api.h
@@ -252,146 +252,6 @@
  */
 void VbExStreamClose(VbExStream_t stream);
 
-
-/*****************************************************************************/
-/* Display */
-
-/* Predefined (default) screens for VbExDisplayScreen(). */
-enum VbScreenType_t {
-	/* Blank (clear) screen */
-	VB_SCREEN_BLANK = 0,
-	/* Developer - warning */
-	VB_SCREEN_DEVELOPER_WARNING = 0x101,
-	/* REMOVED: Developer - easter egg (0x102) */
-	/* REMOVED: Recovery - remove inserted devices (0x201) */
-	/* Recovery - insert recovery image */
-	VB_SCREEN_RECOVERY_INSERT   = 0x202,
-	/* Recovery - inserted image invalid */
-	VB_SCREEN_RECOVERY_NO_GOOD  = 0x203,
-	/* Recovery - confirm dev mode */
-	VB_SCREEN_RECOVERY_TO_DEV   = 0x204,
-	/* Developer - confirm normal mode */
-	VB_SCREEN_DEVELOPER_TO_NORM = 0x205,
-	/* Please wait - programming EC */
-	VB_SCREEN_WAIT              = 0x206,
-	/* Confirm after DEVELOPER_TO_NORM */
-	VB_SCREEN_TO_NORM_CONFIRMED = 0x207,
-	/* Broken screen shown after verification failure */
-	VB_SCREEN_OS_BROKEN         = 0x208,
-	/* REMOVED: Display base screen (no icons, no text) (0x209) */
-	/* Detachable Menu - Developer Warning */
-	VB_SCREEN_DEVELOPER_WARNING_MENU = 0x20a,
-	/* Detachable Menu - Developer Boot */
-	VB_SCREEN_DEVELOPER_MENU = 0x20b,
-	/* REMOVED: Detachable Menu - Recovery (0x20c) */
-	/* Detachable Menu - Confirm Dev Mode */
-	VB_SCREEN_RECOVERY_TO_DEV_MENU = 0x20d,
-	/* Detachable Menu - Confirm Normal Mode */
-	VB_SCREEN_DEVELOPER_TO_NORM_MENU = 0x20e,
-	/* Detachable Menu - Languages */
-	VB_SCREEN_LANGUAGES_MENU = 0x20f,
-	/* Detachable Menu - Options */
-	VB_SCREEN_OPTIONS_MENU = 0x210,
-	/* REMOVED: Alt OS picker screen (0x211) */
-	/* Alt firmware picker screen (for keyboard UI) */
-	VB_SCREEN_ALT_FW_PICK = 0x212,
-	/* Alt firmware menu screen (for detachable UI ) */
-	VB_SCREEN_ALT_FW_MENU = 0x213,
-	/* 0x300-0x350 reserved for device-specific screens */
-	/* Vendor data not set warning screen */
-	VB_COMPLETE_VENDOR_DATA = 0x300,
-	/* Set vendor data menu screen */
-	VB_SCREEN_SET_VENDOR_DATA = 0x301,
-	/* Confirm vendor data menu screen */
-	VB_SCREEN_CONFIRM_VENDOR_DATA = 0x302,
-	/* Confirm reboot for running diagnostics rom */
-	VB_SCREEN_CONFIRM_DIAG = 0x303,
-};
-
-/* Flags to control behavior of device-specific screens. */
-enum VbVendorDataFlags_t {
-	/* When set display a cursor after the prompt */
-	VB_VENDOR_DATA_SHOW_CURSOR = 1 << 0,
-	/* When set only redraw the cursor */
-	VB_VENDOR_DATA_ONLY_DRAW_CURSOR = 1 << 1,
-};
-
-/**
- * Extra data needed when displaying vendor data screens
- */
-typedef struct VbVendorData
-{
-	/* Current state of the the vendor data input */
-	const char *input_text;
-	/* Flags (See VbVendorDataFlags_t) */
-	uint32_t flags;
-	/* Current confirmation selection for new vendor data */
-	uint32_t selected_index;
-} VbVendorData;
-
-/**
- * Extra data that may be used when displaying a screen
- */
-typedef struct VbScreenData
-{
-	union {
-		VbVendorData vendor_data;
-	};
-} VbScreenData;
-
-/**
- * Display a predefined screen; see VB_SCREEN_* for valid screens.
- *
- * This is a backup method of screen display, intended for use if the GBB does
- * not contain a full set of bitmaps.  It is acceptable for the backup screen
- * to be simple ASCII text such as "NO GOOD" or "INSERT"; these screens should
- * only be seen during development.
- */
-vb2_error_t VbExDisplayScreen(uint32_t screen_type, uint32_t locale,
-			    const VbScreenData *data);
-
-/**
- * Display a predefined menu screen; see VB_SCREEN_* for valid screens.
- *
- * @param screen_type       ID of screen to draw
- * @param locale            language to display
- * @param selected_index    Index of menu item that is currently selected.
- * @param disabled_idx_mask Bitmap for enabling/disabling certain menu items.
- *                          each bit corresponds to the menu item's index.
- * @param redraw_base       Setting 1 will force a full redraw of the screen
- *
- * @return VB2_SUCCESS or error code on error.
- */
-vb2_error_t VbExDisplayMenu(uint32_t screen_type, uint32_t locale,
-			  uint32_t selected_index, uint32_t disabled_idx_mask,
-			  uint32_t redraw_base);
-
-/**
- * Display a string containing debug information on the screen, rendered in a
- * platform-dependent font.  Should be able to handle newlines '\n' in the
- * string.  Firmware must support displaying at least 20 lines of text, where
- * each line may be at least 80 characters long.  If the firmware has its own
- * debug state, it may display it to the screen below this information if the
- * full_info parameter is set.
- *
- * @param info_str	The debug string to display
- * @param full_info	1 if firmware should append its own info, 0 if not
- *
- * @return VB2_SUCCESS or error code on error.
- */
-vb2_error_t VbExDisplayDebugInfo(const char *info_str, int full_info);
-
-/**
- * Write vendor data to read-only VPD
- *
- * @param vendor_data_value   The value of vendor data to write to VPD. The
- *                            string length will be exactly VENDOR_DATA_LENGTH
- *                            characters and null-terminated.
- *
- * @return VB2_SUCCESS or error code on error.
- */
-vb2_error_t VbExSetVendorData(const char *vendor_data_value);
-
 /*****************************************************************************/
 /* Keyboard and switches */
 
@@ -522,21 +382,6 @@
  */
 vb2_error_t VbExLegacy(enum VbAltFwIndex_t altfw_num);
 
-enum vb_altfw {
-	VB_ALTFW_COUNT	= 9,	/* We allow 9 bootloaders, numbered 1-9 */
-};
-
-/**
- * Get a mask of available alternative firmware options
- *
- * There are up to 9 bootloaders, numbered 1 to 9, using bits 1 to 9 of this
- * mask. Bit 0 is unused.
- *
- * @return Bit mask indicating which bootloaders are present (bit n indicates
- *	bootloader n is present)
- */
-uint32_t VbExGetAltFwIdxMask(void);
-
 #ifdef __cplusplus
 }
 #endif  /* __cplusplus */
diff --git a/firmware/lib/include/vboot_kernel.h b/firmware/lib/include/vboot_kernel.h
index 81e523d..661f0c4 100644
--- a/firmware/lib/include/vboot_kernel.h
+++ b/firmware/lib/include/vboot_kernel.h
@@ -106,49 +106,4 @@
  */
 vb2_error_t VbTryLoadKernel(struct vb2_context *ctx, uint32_t get_info_flags);
 
-/* Flags for VbUserConfirms() */
-#define VB_CONFIRM_MUST_TRUST_KEYBOARD (1 << 0)
-#define VB_CONFIRM_SPACE_MEANS_NO      (1 << 1)
-
-/**
- * Ask the user to confirm something.
- *
- * We should display whatever the question is first, then call this. ESC is
- * always "no", ENTER is always "yes", and we'll specify what SPACE means. We
- * don't return until one of those keys is pressed, or until asked to shut
- * down.
- *
- * Additionally, in some situations we don't accept confirmations from an
- * untrusted keyboard (such as a USB device).  In those cases, a recovery
- * button press is needed for confirmation, instead of ENTER.
- *
- * Returns: 1=yes, 0=no, -1 = shutdown.
- */
-int VbUserConfirms(struct vb2_context *ctx, uint32_t confirm_flags);
-
-/**
- * Handle a developer-mode boot using legacy clamshell UI.
- */
-vb2_error_t VbBootDeveloperLegacyClamshell(struct vb2_context *ctx);
-
-/**
- * Handle a diagnostic-mode boot using legacy clamshell UI.
- */
-vb2_error_t VbBootDiagnosticLegacyClamshell(struct vb2_context *ctx);
-
-/**
- * Handle a recovery-mode boot using legacy clamshell UI.
- */
-vb2_error_t VbBootRecoveryLegacyClamshell(struct vb2_context *ctx);
-
-/**
- * Handle a developer-mode boot using legacy menu UI.
- */
-vb2_error_t VbBootDeveloperLegacyMenu(struct vb2_context *ctx);
-
-/**
- * Handle a recovery-mode boot using legacy menu UI.
- */
-vb2_error_t VbBootRecoveryLegacyMenu(struct vb2_context *ctx);
-
 #endif  /* VBOOT_REFERENCE_VBOOT_KERNEL_H_ */
diff --git a/firmware/lib/include/vboot_ui_legacy.h b/firmware/lib/include/vboot_ui_legacy.h
deleted file mode 100644
index a0f6f12..0000000
--- a/firmware/lib/include/vboot_ui_legacy.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Copyright 2018 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Common code used by both legacy_clamshell_ui and legacy_menu_ui.
- */
-
-#ifndef VBOOT_REFERENCE_VBOOT_UI_LEGACY_H_
-#define VBOOT_REFERENCE_VBOOT_UI_LEGACY_H_
-
-extern const char dev_disable_msg[];
-
-vb2_error_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force,
-			    const VbScreenData *data);
-vb2_error_t VbDisplayMenu(struct vb2_context *ctx,
-			uint32_t screen, int force, uint32_t selected_index,
-			uint32_t disabled_idx_mask);
-vb2_error_t VbDisplayDebugInfo(struct vb2_context *ctx);
-vb2_error_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key,
-			      uint32_t screen, const VbScreenData *data);
-
-#define KEY_DELAY_MS	20	/* Delay between key scans in UI loops */
-
-enum vb2_beep_type {
-	VB_BEEP_FAILED,		/* Permitted but the operation failed */
-	VB_BEEP_NOT_ALLOWED,	/* Operation disabled by user setting */
-};
-
-/**
- * Reinitialize global state. This should only need to be called
- * by vboot_ui::vb2_init_ui() for init tests.
- */
-void vb2_reset_power_button(void);
-
-/**
- * Emit beeps to indicate an error
- */
-void vb2_error_beep(enum vb2_beep_type beep);
-
-/**
- * Prints a message to screen, logs a possibly different message to log,
- * and beeps to notify user.
- *
- * @print_msg	Display message. NULL message will be ignored.
- * @log_msg	Log message. If NULL, uses @print_msg (if that's not NULL).
- * @beep	Type of beep sound.
- */
-void vb2_error_notify(const char *print_msg,
-		      const char *log_msg,
-		      enum vb2_beep_type beep);
-
-/** Display an error and beep to indicate that altfw is not available */
-void vb2_error_no_altfw(void);
-
-/**
- * Jump to a bootloader if possible
- *
- * This checks if the operation is permitted. If it is, then it jumps to the
- * selected bootloader and execution continues there, never returning.
- *
- * Will beep and return if one of the following is true:
- *   - operation is not permitted (allowed == 0)
- *   - vboot data fails to commit
- *   - secdata_kernel fails to lock
- *   - bootloader cannot be found
- *   - bootloader fails to start
- *
- * @param ctx		Context pointer
- * @param allowed	1 if allowed, 0 if not allowed
- * @param altfw_num	Number of bootloader to start (0=any, 1=first, etc.)
- */
-void vb2_try_altfw(struct vb2_context *ctx, int allowed,
-		   enum VbAltFwIndex_t altfw_num);
-
-/**
- * Checks GBB flags against VbExIsShutdownRequested() shutdown request to
- * determine if a shutdown is required.
- *
- * Returns zero or more of the following flags (if any are set then typically
- * shutdown is required):
- * VB_SHUTDOWN_REQUEST_LID_CLOSED
- * VB_SHUTDOWN_REQUEST_POWER_BUTTON
- */
-int vb2_want_shutdown(struct vb2_context *ctx, uint32_t key);
-
-#endif  /* VBOOT_REFERENCE_VBOOT_UI_LEGACY_H_ */
diff --git a/firmware/lib/include/vboot_ui_legacy_menu_private.h b/firmware/lib/include/vboot_ui_legacy_menu_private.h
deleted file mode 100644
index 9c1a6b4..0000000
--- a/firmware/lib/include/vboot_ui_legacy_menu_private.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Private declarations for vboot_ui_legacy_menu.c. Defined here for easier
- * testing.
- */
-
-#ifndef VBOOT_REFERENCE_VBOOT_UI_LEGACY_MENU_PRIVATE_H_
-#define VBOOT_REFERENCE_VBOOT_UI_LEGACY_MENU_PRIVATE_H_
-
-#include "2api.h"
-
-struct vb2_menu_item {
-	const char *text;
-	vb2_error_t (*action)(struct vb2_context *ctx);
-};
-
-struct vb2_menu {
-	const char *name;
-	uint16_t size;
-	uint16_t screen;
-	struct vb2_menu_item *items;
-};
-
-typedef enum _VB_MENU {
-	VB_MENU_DEV_WARNING,
-	VB_MENU_DEV,
-	VB_MENU_TO_NORM,
-	VB_MENU_TO_DEV,
-	VB_MENU_LANGUAGES,
-	VB_MENU_OPTIONS,
-	VB_MENU_RECOVERY_INSERT,
-	VB_MENU_RECOVERY_NO_GOOD,
-	VB_MENU_RECOVERY_BROKEN,
-	VB_MENU_TO_NORM_CONFIRMED,
-	VB_MENU_ALT_FW,
-	VB_MENU_COUNT,
-} VB_MENU;
-
-typedef enum _VB_DEV_WARNING_MENU {
-	VB_WARN_OPTIONS,
-	VB_WARN_DBG_INFO,
-	VB_WARN_ENABLE_VER,
-	VB_WARN_POWER_OFF,
-	VB_WARN_LANGUAGE,
-	VB_WARN_COUNT,
-} VB_DEV_WARNING_MENU;
-
-typedef enum _VB_DEV_MENU {
-	VB_DEV_NETWORK,
-	VB_DEV_LEGACY,
-	VB_DEV_USB,
-	VB_DEV_DISK,
-	VB_DEV_CANCEL,
-	VB_DEV_POWER_OFF,
-	VB_DEV_LANGUAGE,
-	VB_DEV_COUNT,
-} VB_DEV_MENU;
-
-typedef enum _VB_TO_NORM_MENU {
-	VB_TO_NORM_CONFIRM,
-	VB_TO_NORM_CANCEL,
-	VB_TO_NORM_POWER_OFF,
-	VB_TO_NORM_LANGUAGE,
-	VB_TO_NORM_COUNT,
-} VB_TO_NORM_MENU;
-
-typedef enum _VB_TO_DEV_MENU {
-	VB_TO_DEV_CONFIRM,
-	VB_TO_DEV_CANCEL,
-	VB_TO_DEV_POWER_OFF,
-	VB_TO_DEV_LANGUAGE,
-	VB_TO_DEV_COUNT,
-} VB_TO_DEV_MENU;
-
-// TODO: currently we're only supporting
-// english.  Will need to somehow find mapping
-// from language to localization index.
-typedef enum _VB_LANGUAGES_MENU {
-	VB_LANGUAGES_EN_US,
-	VB_LANGUAGES_COUNT,
-} VB_LANGUAGES_MENU;
-
-typedef enum _VB_OPTIONS_MENU {
-	VB_OPTIONS_DBG_INFO,
-	VB_OPTIONS_CANCEL,
-	VB_OPTIONS_POWER_OFF,
-	VB_OPTIONS_LANGUAGE,
-	VB_OPTIONS_COUNT,
-} VB_OPTIONS_MENU;
-
-#endif  /* VBOOT_REFERENCE_VBOOT_UI_LEGACY_MENU_PRIVATE_H_ */
diff --git a/firmware/lib/include/vboot_ui_legacy_wilco.h b/firmware/lib/include/vboot_ui_legacy_wilco.h
deleted file mode 100644
index 397777e..0000000
--- a/firmware/lib/include/vboot_ui_legacy_wilco.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Wilco-specific feature support for vboot_ui
- */
-
-#ifndef VBOOT_REFERENCE_VBOOT_UI_WILCO_H_
-#define VBOOT_REFERENCE_VBOOT_UI_WILCO_H_
-
-#define CURSOR_BLINK_MS 400	/* Speed that the vendor data cursor blinks */
-
-/*
- * User interface for setting the vendor data in VPD
- */
-vb2_error_t vb2_vendor_data_ui(struct vb2_context *ctx);
-
-/*
- * Determine whether the user has pressed the keys to enter diagnostics mode
- */
-vb2_error_t vb2_check_diagnostic_key(struct vb2_context *ctx, uint32_t key);
-
-/*
- * User interface for confirming launch of diagnostics rom
- *
- * This asks the user to confirm the launch of the diagnostics rom. The user
- * can press the power button to confirm or press escape. There is a 30-second
- * timeout which acts the same as escape.
- */
-vb2_error_t vb2_diagnostics_ui(struct vb2_context *ctx);
-
-#endif  /* VBOOT_REFERENCE_VBOOT_UI_WILCO_H_ */
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index a910b55..e2d1431 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -230,30 +230,16 @@
 			VB2_DEBUG("NO_BOOT in RECOVERY mode\n");
 
 		/* Recovery boot.  This has UI. */
-		if (MENU_UI) {
-			if (vb2_allow_recovery(ctx))
-				VB2_TRY(vb2_manual_recovery_menu(ctx));
-			else
-				VB2_TRY(vb2_broken_recovery_menu(ctx));
-		} else if (LEGACY_MENU_UI) {
-			VB2_TRY(VbBootRecoveryLegacyMenu(ctx));
-		} else {
-			VB2_TRY(VbBootRecoveryLegacyClamshell(ctx));
-		}
+		if (vb2_allow_recovery(ctx))
+			VB2_TRY(vb2_manual_recovery_menu(ctx));
+		else
+			VB2_TRY(vb2_broken_recovery_menu(ctx));
 	} else if (DIAGNOSTIC_UI && vb2api_diagnostic_ui_enabled(ctx) &&
 		   vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST)) {
 		vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 0);
 
 		/* Diagnostic boot.  This has UI. */
-		if (MENU_UI)
-			VB2_TRY(vb2_diagnostic_menu(ctx));
-		else
-			/*
-			 * Only power button is used for input so no
-			 * detachable-specific UI is needed.  This mode is also
-			 * 1-shot so it's placed before developer mode.
-			 */
-			VB2_TRY(VbBootDiagnosticLegacyClamshell(ctx));
+		VB2_TRY(vb2_diagnostic_menu(ctx));
 		/*
 		 * The diagnostic menu should either boot a rom, or
 		 * return either of reboot or shutdown.
@@ -261,12 +247,7 @@
 		return VB2_REQUEST_REBOOT;
 	} else if (ctx->flags & VB2_CONTEXT_DEVELOPER_MODE) {
 		/* Developer boot.  This has UI. */
-		if (MENU_UI)
-			VB2_TRY(vb2_developer_menu(ctx));
-		else if (LEGACY_MENU_UI)
-			VB2_TRY(VbBootDeveloperLegacyMenu(ctx));
-		else
-			VB2_TRY(VbBootDeveloperLegacyClamshell(ctx));
+		VB2_TRY(vb2_developer_menu(ctx));
 	} else {
 		/* Normal boot */
 		VB2_TRY(vb2_normal_boot(ctx));
diff --git a/firmware/lib/vboot_ui_legacy.c b/firmware/lib/vboot_ui_legacy.c
deleted file mode 100644
index 5f84716..0000000
--- a/firmware/lib/vboot_ui_legacy.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/* Copyright 2018 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * High-level firmware wrapper API - user interface for RW firmware
- */
-
-#include "2api.h"
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2sysincludes.h"
-#include "vboot_api.h"
-#include "vboot_kernel.h"
-#include "vboot_test.h"
-#include "vboot_ui_legacy.h"
-
-const char dev_disable_msg[] =
-	"Developer mode is disabled on this device by system policy.\n"
-	"For more information, see http://dev.chromium.org/chromium-os/fwmp\n"
-	"\n";
-
-static void Uint8ToString(char *buf, uint8_t val)
-{
-	const char *trans = "0123456789abcdef";
-	*buf++ = trans[val >> 4];
-	*buf = trans[val & 0xF];
-}
-
-static void FillInSha1Sum(char *outbuf, struct vb2_packed_key *key)
-{
-	uint8_t *buf = ((uint8_t *)key) + key->key_offset;
-	uint64_t buflen = key->key_size;
-	uint8_t digest[VB2_SHA1_DIGEST_SIZE];
-	int i;
-
-	vb2_digest_buffer(buf, buflen, VB2_HASH_SHA1, digest, sizeof(digest));
-	for (i = 0; i < sizeof(digest); i++) {
-		Uint8ToString(outbuf, digest[i]);
-		outbuf += 2;
-	}
-	*outbuf = '\0';
-}
-
-#define DEBUG_INFO_SIZE 1024
-#define DEBUG_INFO_APPEND(format, args...) do { \
-	if (used < DEBUG_INFO_SIZE) \
-		used += snprintf(buf + used, DEBUG_INFO_SIZE - used, format, \
-				 ## args); \
-} while (0)
-
-vb2_error_t VbDisplayDebugInfo(struct vb2_context *ctx)
-{
-	struct vb2_shared_data *sd = vb2_get_sd(ctx);
-	struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
-	struct vb2_workbuf wb;
-	char buf[DEBUG_INFO_SIZE] = "";
-	char sha1sum[VB2_SHA1_DIGEST_SIZE * 2 + 1];
-	int32_t used = 0;
-	vb2_error_t ret;
-	uint32_t i;
-
-	vb2_workbuf_from_ctx(ctx, &wb);
-
-	/* Add hardware ID */
-	{
-		char hwid[VB2_GBB_HWID_MAX_SIZE];
-		uint32_t size = sizeof(hwid);
-		ret = vb2api_gbb_read_hwid(ctx, hwid, &size);
-		if (ret)
-			strcpy(hwid, "{INVALID}");
-		DEBUG_INFO_APPEND("HWID: %s", hwid);
-	}
-
-	/* Add recovery reason and subcode */
-	i = vb2_nv_get(ctx, VB2_NV_RECOVERY_SUBCODE);
-	DEBUG_INFO_APPEND("\nrecovery_reason: %#.2x / %#.2x  %s",
-			  sd->recovery_reason, i,
-			  vb2_get_recovery_reason_string(sd->recovery_reason));
-
-	/* Add vb2_context and vb2_shared_data flags */
-	DEBUG_INFO_APPEND("\ncontext.flags: %#.16" PRIx64, ctx->flags);
-	DEBUG_INFO_APPEND("\nshared_data.flags: %#.8x", sd->flags);
-	DEBUG_INFO_APPEND("\nshared_data.status: %#.8x", sd->status);
-
-	/* Add raw contents of nvdata */
-	DEBUG_INFO_APPEND("\nnvdata:");
-	if (vb2_nv_get_size(ctx) > 16)  /* Multi-line starts on next line */
-		DEBUG_INFO_APPEND("\n  ");
-	for (i = 0; i < vb2_nv_get_size(ctx); i++) {
-		/* Split into 16-byte blocks */
-		if (i > 0 && i % 16 == 0)
-			DEBUG_INFO_APPEND("\n  ");
-		DEBUG_INFO_APPEND(" %02x", ctx->nvdata[i]);
-	}
-
-	/* Add dev_boot_usb flag */
-	i = vb2_nv_get(ctx, VB2_NV_DEV_BOOT_EXTERNAL);
-	DEBUG_INFO_APPEND("\ndev_boot_usb: %d", i);
-
-	/* Add dev_boot_legacy flag */
-	i = vb2_nv_get(ctx, VB2_NV_DEV_BOOT_LEGACY);
-	DEBUG_INFO_APPEND("\ndev_boot_legacy: %d", i);
-
-	/* Add dev_default_boot flag */
-	i = vb2_nv_get(ctx, VB2_NV_DEV_DEFAULT_BOOT);
-	DEBUG_INFO_APPEND("\ndev_default_boot: %d", i);
-
-	/* Add dev_boot_signed_only flag */
-	i = vb2_nv_get(ctx, VB2_NV_DEV_BOOT_SIGNED_ONLY);
-	DEBUG_INFO_APPEND("\ndev_boot_signed_only: %d", i);
-
-	/* Add TPM versions */
-	DEBUG_INFO_APPEND("\nTPM: fwver=%#.8x kernver=%#.8x",
-			  sd->fw_version_secdata, sd->kernel_version_secdata);
-
-	/* Add GBB flags */
-	DEBUG_INFO_APPEND("\ngbb.flags: %#.8x", gbb->flags);
-
-	/* Add sha1sum for Root & Recovery keys */
-	{
-		struct vb2_packed_key *key;
-		struct vb2_workbuf wblocal = wb;
-		ret = vb2_gbb_read_root_key(ctx, &key, NULL, &wblocal);
-		if (!ret) {
-			FillInSha1Sum(sha1sum, key);
-			DEBUG_INFO_APPEND("\ngbb.rootkey: %s", sha1sum);
-		}
-	}
-
-	{
-		struct vb2_packed_key *key;
-		struct vb2_workbuf wblocal = wb;
-		ret = vb2_gbb_read_recovery_key(ctx, &key, NULL, &wblocal);
-		if (!ret) {
-			FillInSha1Sum(sha1sum, key);
-			DEBUG_INFO_APPEND("\ngbb.recovery_key: %s", sha1sum);
-		}
-	}
-
-	/* If we're in dev-mode, show the kernel subkey that we expect, too. */
-	if (!(ctx->flags & VB2_CONTEXT_RECOVERY_MODE) &&
-	    sd->kernel_key_offset) {
-		struct vb2_packed_key *key =
-			vb2_member_of(sd, sd->kernel_key_offset);
-		FillInSha1Sum(sha1sum, key);
-		DEBUG_INFO_APPEND("\nkernel_subkey: %s", sha1sum);
-	}
-
-	/* Make sure we finish with a newline */
-	DEBUG_INFO_APPEND("\n");
-
-	/* TODO: add more interesting data:
-	 * - Information on current disks */
-
-	buf[DEBUG_INFO_SIZE - 1] = '\0';
-	VB2_DEBUG("[TAB] Debug Info:\n%s", buf);
-	return VbExDisplayDebugInfo(buf, 1);
-}
-
-vb2_error_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key,
-			      uint32_t screen, const VbScreenData *data)
-{
-	uint32_t loc = 0;
-	uint32_t count = 0;
-
-	switch (key) {
-	case '\t':
-		/* Tab = display debug info */
-		return VbDisplayDebugInfo(ctx);
-	case VB_KEY_ESC:
-		/* Force redraw current screen (to clear Tab debug output) */
-		return VbDisplayScreen(ctx, screen, 1, data);
-	case VB_KEY_LEFT:
-	case VB_KEY_RIGHT:
-	case VB_KEY_UP:
-	case VB_KEY_DOWN:
-		/* Arrow keys = change localization */
-		loc = vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
-		count = vb2ex_get_locale_count();
-		if (count == 0)
-			loc = 0;  /* No localization count (bad GBB?) */
-		else if (VB_KEY_RIGHT == key || VB_KEY_UP == key)
-			loc = (loc < count - 1 ? loc + 1 : 0);
-		else
-			loc = (loc > 0 ? loc - 1 : count - 1);
-		VB2_DEBUG("VbCheckDisplayKey() - change localization to %d\n",
-			  (int)loc);
-		vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, loc);
-		vb2_nv_set(ctx, VB2_NV_BACKUP_NVRAM_REQUEST, 1);
-
-		/*
-		 * Non-manual recovery mode is meant to be left via three-finger
-		 * salute (into manual recovery mode). Need to commit nvdata
-		 * changes immediately.  Ignore commit errors in recovery mode.
-		 */
-		if ((ctx->flags & VB2_CONTEXT_RECOVERY_MODE) &&
-		    !vb2_allow_recovery(ctx))
-			 vb2ex_commit_data(ctx);
-
-		/* Force redraw of current screen */
-		return VbDisplayScreen(ctx, screen, 1, data);
-	}
-
-	return VB2_SUCCESS;
-}
-
-static enum {
-	POWER_BUTTON_HELD_SINCE_BOOT = 0,
-	POWER_BUTTON_RELEASED,
-	POWER_BUTTON_PRESSED,  /* Must have been previously released */
-} power_button_state;
-
-void vb2_reset_power_button(void) {
-	power_button_state = POWER_BUTTON_HELD_SINCE_BOOT;
-}
-
-void vb2_error_beep(enum vb2_beep_type beep)
-{
-	switch (beep) {
-	case VB_BEEP_FAILED:
-		vb2ex_beep(250, 200);
-		break;
-	default:
-	case VB_BEEP_NOT_ALLOWED:
-		vb2ex_beep(120, 400);
-		vb2ex_msleep(120);
-		vb2ex_beep(120, 400);
-		break;
-	}
-}
-
-void vb2_error_notify(const char *print_msg,
-		      const char *log_msg,
-		      enum vb2_beep_type beep)
-{
-	if (print_msg)
-		VbExDisplayDebugInfo(print_msg, 0);
-	if (!log_msg)
-		log_msg = print_msg;
-	if (log_msg)
-		VB2_DEBUG(log_msg);
-	vb2_error_beep(beep);
-}
-
-void vb2_error_no_altfw(void)
-{
-	VB2_DEBUG("Legacy boot is disabled\n");
-	VbExDisplayDebugInfo("WARNING: Booting legacy BIOS has not been "
-			     "enabled. Refer to the developer-mode "
-			     "documentation for details.\n", 0);
-	vb2_error_beep(VB_BEEP_NOT_ALLOWED);
-}
-
-void vb2_try_altfw(struct vb2_context *ctx, int allowed,
-		   enum VbAltFwIndex_t altfw_num)
-{
-	if (!allowed) {
-		vb2_error_no_altfw();
-		return;
-	}
-
-	if (vb2ex_commit_data(ctx)) {
-		vb2_error_notify("Error committing data on legacy boot.\n",
-				 NULL, VB_BEEP_FAILED);
-		return;
-	}
-
-	/* Will not return if successful */
-	VbExLegacy(altfw_num);
-
-	vb2_error_notify("Legacy boot failed. Missing BIOS?\n", NULL,
-			 VB_BEEP_FAILED);
-}
-
-int vb2_want_shutdown(struct vb2_context *ctx, uint32_t key)
-{
-	struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
-	uint32_t shutdown_request = VbExIsShutdownRequested();
-
-	/*
-	 * Ignore power button push until after we have seen it released.
-	 * This avoids shutting down immediately if the power button is still
-	 * being held on startup. After we've recognized a valid power button
-	 * push then don't report the event until after the button is released.
-	 */
-	if (shutdown_request & VB_SHUTDOWN_REQUEST_POWER_BUTTON) {
-		shutdown_request &= ~VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-		if (power_button_state == POWER_BUTTON_RELEASED)
-			power_button_state = POWER_BUTTON_PRESSED;
-	} else {
-		if (power_button_state == POWER_BUTTON_PRESSED)
-			shutdown_request |= VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-		power_button_state = POWER_BUTTON_RELEASED;
-	}
-
-	if (key == VB_BUTTON_POWER_SHORT_PRESS)
-		shutdown_request |= VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-
-	/* If desired, ignore shutdown request due to lid closure. */
-	if (gbb->flags & VB2_GBB_FLAG_DISABLE_LID_SHUTDOWN)
-		shutdown_request &= ~VB_SHUTDOWN_REQUEST_LID_CLOSED;
-
-	return shutdown_request;
-}
diff --git a/firmware/lib/vboot_ui_legacy_clamshell.c b/firmware/lib/vboot_ui_legacy_clamshell.c
deleted file mode 100644
index 027b49e..0000000
--- a/firmware/lib/vboot_ui_legacy_clamshell.c
+++ /dev/null
@@ -1,545 +0,0 @@
-/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * High-level firmware wrapper API - user interface for RW firmware
- */
-
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2rsa.h"
-#include "2secdata.h"
-#include "2sysincludes.h"
-#include "load_kernel_fw.h"
-#include "tlcl.h"
-#include "vb2_common.h"
-#include "vboot_api.h"
-#include "vboot_audio.h"
-#include "vboot_kernel.h"
-#include "vboot_struct.h"
-#include "vboot_test.h"
-#include "vboot_ui_legacy.h"
-#include "vboot_ui_legacy_wilco.h"
-
-static uint32_t disp_current_screen = VB_SCREEN_BLANK;
-
-test_mockable
-vb2_error_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force,
-			    const VbScreenData *data)
-{
-	uint32_t locale;
-
-	/* If requested screen is the same as the current one, we're done. */
-	if (disp_current_screen == screen && !force)
-		return VB2_SUCCESS;
-
-	/* Keep track of the currently displayed screen */
-	disp_current_screen = screen;
-
-	/* Read the locale last saved */
-	locale = vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
-
-	return VbExDisplayScreen(screen, locale, data);
-}
-
-static vb2_error_t VbTryUsb(struct vb2_context *ctx)
-{
-	int retval = VbTryLoadKernel(ctx, VB_DISK_FLAG_REMOVABLE);
-	if (VB2_SUCCESS == retval) {
-		VB2_DEBUG("developer UI - booting USB\n");
-	} else {
-		vb2_error_notify("Could not boot from USB\n",
-				 "developer UI - no kernel found on USB\n",
-				 VB_BEEP_FAILED);
-	}
-	return retval;
-}
-
-int VbUserConfirms(struct vb2_context *ctx, uint32_t confirm_flags)
-{
-	uint32_t key;
-	uint32_t key_flags;
-	uint32_t btn;
-	int button_pressed = 0;
-	int shutdown_requested = 0;
-
-	VB2_DEBUG("Entering(%x)\n", confirm_flags);
-
-	/* Await further instructions */
-	do {
-		key = VbExKeyboardReadWithFlags(&key_flags);
-		shutdown_requested = vb2_want_shutdown(ctx, key);
-		switch (key) {
-		case VB_KEY_ENTER:
-			/* If we are using a trusted keyboard or a trusted
-			 * keyboard is not required then return yes, otherwise
-			 * keep waiting (for instance if the user is using a
-			 * USB keyboard).
-			 */
-			if (!(confirm_flags & VB_CONFIRM_MUST_TRUST_KEYBOARD) ||
-			     (key_flags & VB_KEY_FLAG_TRUSTED_KEYBOARD)) {
-				VB2_DEBUG("Yes (1)\n");
-				return 1;
-			}
-
-			/*
-			 * If physical presence is confirmed using the keyboard,
-			 * beep and notify the user when the ENTER key comes
-			 * from an untrusted keyboard.
-			 *
-			 * If physical presence is confirmed using a physical
-			 * button, the existing message on the screen will
-			 * instruct the user which button to push.  Silently
-			 * ignore any ENTER presses.
-			 */
-			if (PHYSICAL_PRESENCE_KEYBOARD)
-				vb2_error_notify("Please use internal keyboard "
-					"to confirm\n",
-					"VbUserConfirms() - "
-					"Trusted keyboard is required\n",
-					VB_BEEP_NOT_ALLOWED);
-
-			break;
-		case ' ':
-			VB2_DEBUG("Space (%d)\n",
-				  confirm_flags & VB_CONFIRM_SPACE_MEANS_NO);
-			if (confirm_flags & VB_CONFIRM_SPACE_MEANS_NO)
-				return 0;
-			break;
-		case VB_KEY_ESC:
-			VB2_DEBUG("No (0)\n");
-			return 0;
-		default:
-			/*
-			 * If the physical presence button is separate from the
-			 * keyboard, and is pressed, this is also a YES, but
-			 * must wait for release.
-			 */
-			if (!PHYSICAL_PRESENCE_KEYBOARD) {
-				btn = vb2ex_physical_presence_pressed();
-				if (btn) {
-					VB2_DEBUG("Presence button pressed, "
-						  "awaiting release\n");
-					button_pressed = 1;
-				} else if (button_pressed) {
-					VB2_DEBUG("Presence button released "
-						  "(1)\n");
-					return 1;
-				}
-			}
-			VbCheckDisplayKey(ctx, key, disp_current_screen, NULL);
-		}
-		vb2ex_msleep(KEY_DELAY_MS);
-	} while (!shutdown_requested);
-
-	return -1;
-}
-
-/*
- * User interface for selecting alternative firmware
- *
- * This shows the user a list of bootloaders and allows selection of one of
- * them. We loop forever until something is chosen or Escape is pressed.
- */
-static vb2_error_t vb2_altfw_ui(struct vb2_context *ctx)
-{
-	int active = 1;
-
-	VbDisplayScreen(ctx, VB_SCREEN_ALT_FW_PICK, 0, NULL);
-
-	/* We'll loop until the user decides what to do */
-	do {
-		uint32_t key = VbExKeyboardRead();
-
-		if (vb2_want_shutdown(ctx, key)) {
-			VB2_DEBUG("developer UI - shutdown requested!\n");
-			return VB2_REQUEST_SHUTDOWN;
-		}
-		switch (key) {
-		case 0:
-			/* nothing pressed */
-			break;
-		case VB_KEY_ESC:
-			/* Escape pressed - return to developer screen */
-			VB2_DEBUG("developer UI - user pressed Esc; "
-				  "exit to Developer screen\n");
-			active = 0;
-			break;
-		/* We allow selection of the default '0' bootloader here */
-		case '0'...'9':
-			VB2_DEBUG("developer UI - user pressed key '%c';"
-				  "Boot alternative firmware\n", key);
-			/*
-			 * This will not return if successful. Drop out to
-			 * developer mode on failure.
-			 */
-			vb2_try_altfw(ctx, 1, key - '0');
-			active = 0;
-			break;
-		default:
-			VB2_DEBUG("developer UI - pressed key %#x\n", key);
-			VbCheckDisplayKey(ctx, key, disp_current_screen, NULL);
-			break;
-		}
-		vb2ex_msleep(KEY_DELAY_MS);
-	} while (active);
-
-	/* Back to developer screen */
-	VbDisplayScreen(ctx, VB_SCREEN_DEVELOPER_WARNING, 0, NULL);
-
-	return 0;
-}
-
-static vb2_error_t vb2_developer_ui(struct vb2_context *ctx)
-{
-	struct vb2_shared_data *sd = vb2_get_sd(ctx);
-	struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
-
-	uint32_t disable_dev_boot = 0;
-	uint32_t use_usb = 0;
-	uint32_t use_legacy = 0;
-	uint32_t ctrl_d_pressed = 0;
-
-	VB2_DEBUG("Entering\n");
-
-	/* Check if booting from external disk is allowed */
-	uint32_t allow_usb = vb2_nv_get(ctx, VB2_NV_DEV_BOOT_EXTERNAL);
-	uint32_t allow_legacy = vb2_nv_get(ctx, VB2_NV_DEV_BOOT_LEGACY);
-
-	/* Check if the default boot target: internal/external disk or legacy */
-	uint32_t default_boot = vb2_nv_get(ctx, VB2_NV_DEV_DEFAULT_BOOT);
-
-	if (default_boot == VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL)
-		use_usb = 1;
-	if (default_boot == VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY)
-		use_legacy = 1;
-
-	/* Handle GBB flag override */
-	if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_USB)
-		allow_usb = 1;
-	if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY)
-		allow_legacy = 1;
-	if (gbb->flags & VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY) {
-		use_legacy = 1;
-		use_usb = 0;
-	}
-
-	/* Handle FWMP override */
-	if (vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_ENABLE_EXTERNAL))
-		allow_usb = 1;
-	if (vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_ENABLE_LEGACY))
-		allow_legacy = 1;
-	if (vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_DISABLE_BOOT)) {
-		if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
-			VB2_DEBUG("FWMP_DEV_DISABLE_BOOT rejected by "
-				  "FORCE_DEV_SWITCH_ON\n");
-		} else {
-			disable_dev_boot = 1;
-		}
-	}
-
-	/* If dev mode is disabled, only allow TONORM */
-	while (disable_dev_boot) {
-		VB2_DEBUG("dev_disable_boot is set\n");
-		VbDisplayScreen(ctx,
-				VB_SCREEN_DEVELOPER_TO_NORM, 0, NULL);
-		VbExDisplayDebugInfo(dev_disable_msg, 0);
-
-		/* Ignore space in VbUserConfirms()... */
-		switch (VbUserConfirms(ctx, 0)) {
-		case 1:
-			VB2_DEBUG("leaving dev-mode\n");
-			vb2_nv_set(ctx, VB2_NV_DISABLE_DEV_REQUEST, 1);
-			VbDisplayScreen(ctx,
-				VB_SCREEN_TO_NORM_CONFIRMED, 0, NULL);
-			vb2ex_msleep(5 * VB2_MSEC_PER_SEC);
-			return VB2_REQUEST_REBOOT;
-		case -1:
-			VB2_DEBUG("shutdown requested\n");
-			return VB2_REQUEST_SHUTDOWN;
-		default:
-			/* Ignore user attempt to cancel */
-			VB2_DEBUG("ignore cancel TONORM\n");
-		}
-	}
-
-	if ((ctx->flags & VB2_CONTEXT_VENDOR_DATA_SETTABLE) &&
-		VENDOR_DATA_LENGTH > 0) {
-		vb2_error_t ret;
-		VB2_DEBUG("developer UI - Vendor data not set\n");
-		ret = vb2_vendor_data_ui(ctx);
-		if (ret)
-			return ret;
-        }
-
-        /* Show the dev mode warning screen */
-        VbDisplayScreen(ctx, VB_SCREEN_DEVELOPER_WARNING, 0, NULL);
-
-	/* Initialize audio/delay context */
-	vb2_audio_start(ctx);
-
-	/* We'll loop until we finish the delay or are interrupted */
-	do {
-		uint32_t key = VbExKeyboardRead();
-		if (vb2_want_shutdown(ctx, key)) {
-			VB2_DEBUG("developer UI - shutdown requested!\n");
-			return VB2_REQUEST_SHUTDOWN;
-		}
-
-		switch (key) {
-		case 0:
-			/* nothing pressed */
-			break;
-		case VB_KEY_ENTER:
-			/* Only disable virtual dev switch if allowed by GBB */
-			if (!(gbb->flags & VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM))
-				break;
-			VBOOT_FALLTHROUGH;
-		case ' ':
-			/* See if we should disable virtual dev-mode switch. */
-			VB2_DEBUG("sd->flags=%#x\n", sd->flags);
-
-			/* Validity check, should never fail. */
-			VB2_ASSERT(sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED);
-
-			/* Stop the countdown while we go ask... */
-			if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
-				/*
-				 * TONORM won't work (only for
-				 * non-shipping devices).
-				 */
-				vb2_error_notify(
-					"WARNING: TONORM prohibited by "
-					"GBB FORCE_DEV_SWITCH_ON.\n",
-					NULL, VB_BEEP_NOT_ALLOWED);
-				break;
-			}
-			VbDisplayScreen(ctx, VB_SCREEN_DEVELOPER_TO_NORM,
-					0, NULL);
-			/* Ignore space in VbUserConfirms()... */
-			switch (VbUserConfirms(ctx, 0)) {
-			case 1:
-				VB2_DEBUG("leaving dev-mode\n");
-				vb2_nv_set(ctx, VB2_NV_DISABLE_DEV_REQUEST, 1);
-				VbDisplayScreen(ctx,
-					VB_SCREEN_TO_NORM_CONFIRMED, 0, NULL);
-				vb2ex_msleep(5 * VB2_MSEC_PER_SEC);
-				return VB2_REQUEST_REBOOT;
-			case -1:
-				VB2_DEBUG("shutdown requested\n");
-				return VB2_REQUEST_SHUTDOWN;
-			default:
-				/* Stay in dev-mode */
-				VB2_DEBUG("stay in dev-mode\n");
-				VbDisplayScreen(ctx,
-					VB_SCREEN_DEVELOPER_WARNING, 0, NULL);
-				/* Start new countdown */
-				vb2_audio_start(ctx);
-			}
-			break;
-		case VB_KEY_CTRL('D'):
-			/* Ctrl+D = dismiss warning; advance to timeout */
-			VB2_DEBUG("developer UI - user pressed Ctrl+D; "
-				  "skip delay\n");
-			ctrl_d_pressed = 1;
-			goto fallout;
-		case VB_KEY_CTRL('L'):
-			VB2_DEBUG("developer UI - user pressed Ctrl+L; "
-				  "Try alt firmware\n");
-			if (allow_legacy) {
-				vb2_error_t ret;
-
-				ret = vb2_altfw_ui(ctx);
-				if (ret)
-					return ret;
-			} else {
-				vb2_error_no_altfw();
-			}
-			break;
-		case VB_KEY_CTRL_ENTER:
-			/*
-			 * The Ctrl-Enter is special for Lumpy test purpose;
-			 * fall through to Ctrl+U handler.
-			 */
-		case VB_KEY_CTRL('U'):
-			/* Ctrl+U = try USB boot, or beep if failure */
-			VB2_DEBUG("developer UI - user pressed Ctrl+U; "
-				  "try USB\n");
-			if (!allow_usb) {
-				vb2_error_notify(
-					"WARNING: Booting from external media "
-					"(USB/SD) has not been enabled. Refer "
-					"to the developer-mode documentation "
-					"for details.\n",
-					"developer UI - "
-					"USB booting is disabled\n",
-					VB_BEEP_NOT_ALLOWED);
-			} else {
-				/*
-				 * Clear the screen to show we get the Ctrl+U
-				 * key press.
-				 */
-				VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0, NULL);
-				if (VB2_SUCCESS == VbTryUsb(ctx)) {
-					return VB2_SUCCESS;
-				} else {
-					/* Show dev mode warning screen again */
-					VbDisplayScreen(ctx,
-						VB_SCREEN_DEVELOPER_WARNING,
-						0, NULL);
-				}
-			}
-			break;
-		/* We allow selection of the default '0' bootloader here */
-		case '0'...'9':
-			VB2_DEBUG("developer UI - user pressed key '%c'; "
-				  "Boot alternative firmware\n", key);
-			vb2_try_altfw(ctx, allow_legacy, key - '0');
-			break;
-		default:
-			VB2_DEBUG("developer UI - pressed key %#x\n", key);
-			VbCheckDisplayKey(ctx, key, disp_current_screen, NULL);
-			break;
-		}
-
-		vb2ex_msleep(KEY_DELAY_MS);
-	} while(vb2_audio_looping());
-
- fallout:
-
-	/* If defaulting to legacy boot, try that unless Ctrl+D was pressed */
-	if (use_legacy && !ctrl_d_pressed) {
-		VB2_DEBUG("developer UI - defaulting to legacy\n");
-		vb2_try_altfw(ctx, allow_legacy, 0);
-	}
-
-	if ((use_usb && !ctrl_d_pressed) && allow_usb) {
-		if (VB2_SUCCESS == VbTryUsb(ctx)) {
-			return VB2_SUCCESS;
-		}
-	}
-
-	/* Timeout or Ctrl+D; attempt loading from fixed disk */
-	VB2_DEBUG("developer UI - trying fixed disk\n");
-	return VbTryLoadKernel(ctx, VB_DISK_FLAG_FIXED);
-}
-
-vb2_error_t VbBootDeveloperLegacyClamshell(struct vb2_context *ctx)
-{
-	vb2_reset_power_button();
-	vb2_error_t retval = vb2_developer_ui(ctx);
-	VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0, NULL);
-	return retval;
-}
-
-vb2_error_t VbBootDiagnosticLegacyClamshell(struct vb2_context *ctx)
-{
-	vb2_reset_power_button();
-	vb2_error_t retval = vb2_diagnostics_ui(ctx);
-	VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0, NULL);
-	return retval;
-}
-
-static vb2_error_t recovery_ui(struct vb2_context *ctx)
-{
-	struct vb2_shared_data *sd = vb2_get_sd(ctx);
-	uint32_t retval;
-	uint32_t key;
-	const char release_button_msg[] =
-		"Release the recovery button and try again\n";
-	const char recovery_pressed_msg[] =
-		"^D but recovery switch is pressed\n";
-
-	VB2_DEBUG("recovery UI - start\n");
-
-	if (!vb2_allow_recovery(ctx)) {
-		VbDisplayScreen(ctx, VB_SCREEN_OS_BROKEN, 0, NULL);
-		VB2_DEBUG("recovery UI - waiting for manual recovery\n");
-		while (1) {
-			key = VbExKeyboardRead();
-			VbCheckDisplayKey(ctx, key, disp_current_screen, NULL);
-			if (vb2_want_shutdown(ctx, key))
-				return VB2_REQUEST_SHUTDOWN;
-			else if ((retval =
-				  vb2_check_diagnostic_key(ctx, key)) !=
-				  VB2_SUCCESS)
-				return retval;
-			vb2ex_msleep(KEY_DELAY_MS);
-		}
-	}
-
-	/* Loop and wait for a recovery image */
-	VB2_DEBUG("recovery UI - waiting for a recovery image\n");
-	while (1) {
-		retval = VbTryLoadKernel(ctx, VB_DISK_FLAG_REMOVABLE);
-
-		if (VB2_SUCCESS == retval)
-			break; /* Found a recovery kernel */
-
-		enum VbScreenType_t next_screen =
-			retval == VB2_ERROR_LK_NO_DISK_FOUND ?
-			VB_SCREEN_RECOVERY_INSERT : VB_SCREEN_RECOVERY_NO_GOOD;
-		VbDisplayScreen(ctx, next_screen, 0, NULL);
-
-		key = VbExKeyboardRead();
-		/*
-		 * We might want to enter dev-mode from the Insert
-		 * screen if all of the following are true:
-		 *   - user pressed Ctrl-D
-		 *   - we can honor the virtual dev switch
-		 *   - not already in dev mode
-		 *   - user forced recovery mode
-		 */
-		if (key == VB_KEY_CTRL('D') &&
-		    !(sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) &&
-		    (sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY)) {
-			if (!PHYSICAL_PRESENCE_KEYBOARD &&
-			    vb2ex_physical_presence_pressed()) {
-				/*
-				 * Is the presence button stuck?  In any case
-				 * we don't like this.  Beep and ignore.
-				 */
-				vb2_error_notify(release_button_msg,
-						 recovery_pressed_msg,
-						 VB_BEEP_NOT_ALLOWED);
-				continue;
-			}
-
-			/* Ask the user to confirm entering dev-mode */
-			VbDisplayScreen(ctx, VB_SCREEN_RECOVERY_TO_DEV,
-					0, NULL);
-			/* SPACE means no... */
-			uint32_t vbc_flags = VB_CONFIRM_SPACE_MEANS_NO |
-					     VB_CONFIRM_MUST_TRUST_KEYBOARD;
-			switch (VbUserConfirms(ctx, vbc_flags)) {
-			case 1:
-				vb2_enable_developer_mode(ctx);
-				return VB2_REQUEST_REBOOT_EC_TO_RO;
-			case -1:
-				VB2_DEBUG("Shutdown requested\n");
-				return VB2_REQUEST_SHUTDOWN;
-			default: /* zero, actually */
-				VB2_DEBUG("Not enabling dev-mode\n");
-				break;
-			}
-		} else if ((retval = vb2_check_diagnostic_key(ctx, key)) !=
-			   VB2_SUCCESS) {
-			return retval;
-		} else {
-			VbCheckDisplayKey(ctx, key, disp_current_screen, NULL);
-		}
-		if (vb2_want_shutdown(ctx, key))
-			return VB2_REQUEST_SHUTDOWN;
-		vb2ex_msleep(KEY_DELAY_MS);
-	}
-
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbBootRecoveryLegacyClamshell(struct vb2_context *ctx)
-{
-	vb2_error_t retval = recovery_ui(ctx);
-	VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0, NULL);
-	return retval;
-}
diff --git a/firmware/lib/vboot_ui_legacy_menu.c b/firmware/lib/vboot_ui_legacy_menu.c
deleted file mode 100644
index 4bad564..0000000
--- a/firmware/lib/vboot_ui_legacy_menu.c
+++ /dev/null
@@ -1,935 +0,0 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * High-level firmware wrapper API - user interface for RW firmware
- */
-
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2rsa.h"
-#include "2secdata.h"
-#include "2sysincludes.h"
-#include "load_kernel_fw.h"
-#include "vb2_common.h"
-#include "vboot_api.h"
-#include "vboot_audio.h"
-#include "vboot_kernel.h"
-#include "vboot_struct.h"
-#include "vboot_ui_legacy.h"
-#include "vboot_ui_legacy_menu_private.h"
-
-static VB_MENU current_menu, prev_menu;
-static int current_menu_idx, cur_disabled_idx_mask, usb_nogood, force_redraw;
-static uint32_t default_boot;
-static uint32_t disable_dev_boot;
-static uint32_t altfw_allowed;
-static struct vb2_menu menus[];
-static const char no_legacy[] = "Legacy boot failed. Missing BIOS?\n";
-
-static uint32_t disp_current_screen = VB_SCREEN_BLANK;
-static uint32_t disp_current_index = 0;
-static uint32_t disp_disabled_idx_mask = 0;
-
-test_mockable
-vb2_error_t VbDisplayMenu(struct vb2_context *ctx, uint32_t screen, int force,
-			  uint32_t selected_index, uint32_t disabled_idx_mask)
-{
-	uint32_t locale;
-	uint32_t redraw_base_screen = 0;
-
-	/*
-	 * If requested screen/selected_index is the same as the current one,
-	 * we're done.
-	 */
-	if (disp_current_screen == screen &&
-	    disp_current_index == selected_index &&
-	    !force)
-		return VB2_SUCCESS;
-
-	/*
-	 * If current screen is not the same, make sure we redraw the base
-	 * screen as well to avoid having artifacts from the menu.
-	 */
-	if (disp_current_screen != screen || force)
-		redraw_base_screen = 1;
-
-	/*
-	 * Keep track of the currently displayed screen and
-	 * selected_index
-	 */
-	disp_current_screen = screen;
-	disp_current_index = selected_index;
-	disp_disabled_idx_mask = disabled_idx_mask;
-
-	/* Read the locale last saved */
-	locale = vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
-
-	return VbExDisplayMenu(screen, locale, selected_index,
-			       disabled_idx_mask, redraw_base_screen);
-}
-
-/**
- * Checks GBB flags against VbExIsShutdownRequested() shutdown request to
- * determine if a shutdown is required.
- *
- * Returns true if a shutdown is required and false if no shutdown is required.
- */
-static int VbWantShutdownMenu(struct vb2_context *ctx)
-{
-	struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
-	uint32_t shutdown_request = VbExIsShutdownRequested();
-
-	/* If desired, ignore shutdown request due to lid closure. */
-	if (gbb->flags & VB2_GBB_FLAG_DISABLE_LID_SHUTDOWN)
-		shutdown_request &= ~VB_SHUTDOWN_REQUEST_LID_CLOSED;
-
-	/*
-	 * In detachables, disabling shutdown due to power button.
-	 * We are using it for selection instead.
-	 */
-	shutdown_request &= ~VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-
-	return !!shutdown_request;
-}
-
-/* (Re-)Draw the menu identified by current_menu[_idx] to the screen. */
-static vb2_error_t vb2_draw_current_screen(struct vb2_context *ctx) {
-	vb2_error_t ret = VbDisplayMenu(ctx, menus[current_menu].screen,
-			force_redraw, current_menu_idx, cur_disabled_idx_mask);
-	force_redraw = 0;
-	return ret;
-}
-
-/* Flash the screen to black to catch user awareness, then redraw menu. */
-static void vb2_flash_screen(struct vb2_context *ctx)
-{
-	VbDisplayMenu(ctx, VB_SCREEN_BLANK, 0, 0, 0);
-	vb2ex_msleep(50);
-	vb2_draw_current_screen(ctx);
-}
-
-static void vb2_log_menu_change(void)
-{
-	if (menus[current_menu].size)
-		VB2_DEBUG("================ %s Menu ================ [ %s ]\n",
-			  menus[current_menu].name,
-			  menus[current_menu].items[current_menu_idx].text);
-	else
-		VB2_DEBUG("=============== %s Screen ===============\n",
-			  menus[current_menu].name);
-}
-
-/**
- * Switch to a new menu (but don't draw it yet).
- *
- * @param new_current_menu:	new menu to set current_menu to
- * @param new_current_menu_idx: new idx to set current_menu_idx to
- */
-static void vb2_change_menu(VB_MENU new_current_menu,
-			    int new_current_menu_idx)
-{
-	prev_menu = current_menu;
-	current_menu = new_current_menu;
-
-	/* Reconfigure cur_disabled_idx_mask for the new menu */
-	cur_disabled_idx_mask = 0;
-	/* Disable Network Boot Option */
-	if (current_menu == VB_MENU_DEV)
-		cur_disabled_idx_mask |= 1 << VB_DEV_NETWORK;
-	/* Disable cancel option if enterprise disabled dev mode */
-	if (current_menu == VB_MENU_TO_NORM &&
-	    disable_dev_boot == 1)
-		cur_disabled_idx_mask |= 1 << VB_TO_NORM_CANCEL;
-
-	/* Enable menu items for the selected bootloaders */
-	if (current_menu == VB_MENU_ALT_FW) {
-		cur_disabled_idx_mask = ~(VbExGetAltFwIdxMask() >> 1);
-
-		/* Make sure 'cancel' is shown even with an invalid mask */
-		cur_disabled_idx_mask &= (1 << VB_ALTFW_COUNT) - 1;
-	}
-	/* We assume that there is at least one enabled item */
-	while ((1 << new_current_menu_idx) & cur_disabled_idx_mask)
-		new_current_menu_idx++;
-	if (new_current_menu_idx < menus[current_menu].size)
-		current_menu_idx = new_current_menu_idx;
-
-	vb2_log_menu_change();
-}
-
-/************************
- *    Menu Actions      *
- ************************/
-
-/* Boot from internal disk if allowed. */
-static vb2_error_t boot_disk_action(struct vb2_context *ctx)
-{
-	if (disable_dev_boot) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify("Developer mode disabled\n", NULL,
-				 VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-	VB2_DEBUG("trying fixed disk\n");
-	return VbTryLoadKernel(ctx, VB_DISK_FLAG_FIXED);
-}
-
-/* Boot legacy BIOS if allowed and available. */
-static vb2_error_t boot_legacy_action(struct vb2_context *ctx)
-{
-	if (disable_dev_boot) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify("Developer mode disabled\n", NULL,
-				 VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-
-	if (!altfw_allowed) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify("WARNING: Booting legacy BIOS has not "
-				 "been enabled. Refer to the developer"
-				 "-mode documentation for details.\n",
-				 "Legacy boot is disabled\n",
-				 VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-
-	vb2_try_altfw(ctx, 1, VB_ALTFW_DEFAULT);
-	vb2_flash_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-/* Boot from USB or SD card if allowed and available. */
-static vb2_error_t boot_usb_action(struct vb2_context *ctx)
-{
-	const char no_kernel[] = "No bootable kernel found on USB/SD.\n";
-
-	if (disable_dev_boot) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify("Developer mode disabled\n", NULL,
-				 VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-
-	if (!vb2_nv_get(ctx, VB2_NV_DEV_BOOT_EXTERNAL) &&
-	    !(vb2_get_gbb(ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_USB) &&
-	    !vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_ENABLE_EXTERNAL)) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify("WARNING: Booting from external media "
-				 "(USB/SD) has not been enabled. Refer "
-				 "to the developer-mode documentation "
-				 "for details.\n",
-				 "USB booting is disabled\n",
-				 VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-
-	if (VB2_SUCCESS == VbTryLoadKernel(ctx, VB_DISK_FLAG_REMOVABLE)) {
-		VB2_DEBUG("booting USB\n");
-		return VB2_SUCCESS;
-	}
-
-	vb2_flash_screen(ctx);
-	vb2_error_notify(no_kernel, NULL, VB_BEEP_FAILED);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_developer_menu(struct vb2_context *ctx)
-{
-	int menu_idx;
-	switch(default_boot) {
-	default:
-	case VB2_DEV_DEFAULT_BOOT_TARGET_INTERNAL:
-		menu_idx = VB_DEV_DISK;
-		break;
-	case VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL:
-		menu_idx = VB_DEV_USB;
-		break;
-	case VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY:
-		menu_idx = VB_DEV_LEGACY;
-		break;
-	}
-	vb2_change_menu(VB_MENU_DEV, menu_idx);
-	vb2_draw_current_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_dev_warning_menu(struct vb2_context *ctx)
-{
-	vb2_change_menu(VB_MENU_DEV_WARNING, VB_WARN_POWER_OFF);
-	vb2_draw_current_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_language_menu(struct vb2_context *ctx)
-{
-	vb2_change_menu(VB_MENU_LANGUAGES,
-			vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX));
-	vb2_draw_current_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_recovery_base_screen(struct vb2_context *ctx)
-{
-	if (!vb2_allow_recovery(ctx))
-		vb2_change_menu(VB_MENU_RECOVERY_BROKEN, 0);
-	else if (usb_nogood)
-		vb2_change_menu(VB_MENU_RECOVERY_NO_GOOD, 0);
-	else
-		vb2_change_menu(VB_MENU_RECOVERY_INSERT, 0);
-	vb2_draw_current_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_options_menu(struct vb2_context *ctx)
-{
-	vb2_change_menu(VB_MENU_OPTIONS, VB_OPTIONS_CANCEL);
-	vb2_draw_current_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_to_dev_menu(struct vb2_context *ctx)
-{
-	const char dev_already_on[] =
-		"WARNING: TODEV rejected, developer mode is already on.\n";
-	if (vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify(dev_already_on, NULL, VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-	vb2_change_menu(VB_MENU_TO_DEV, VB_TO_DEV_CANCEL);
-	vb2_draw_current_screen(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t enter_to_norm_menu(struct vb2_context *ctx)
-{
-	vb2_change_menu(VB_MENU_TO_NORM, VB_TO_NORM_CONFIRM);
-	vb2_draw_current_screen(ctx);
-	/* Make sure user knows dev mode disabled */
-	if (disable_dev_boot)
-		VbExDisplayDebugInfo(dev_disable_msg, 0);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-/* Boot alternative bootloader if allowed and available. */
-static vb2_error_t enter_altfw_menu(struct vb2_context *ctx)
-{
-	VB2_DEBUG("enter_altfw_menu()\n");
-	if (disable_dev_boot) {
-		vb2_flash_screen(ctx);
-		vb2_error_beep(VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-	if (!altfw_allowed) {
-		vb2_flash_screen(ctx);
-		vb2_error_no_altfw();
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-	vb2_change_menu(VB_MENU_ALT_FW, 0);
-	vb2_draw_current_screen(ctx);
-
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t debug_info_action(struct vb2_context *ctx)
-{
-	force_redraw = 1;
-	VbDisplayDebugInfo(ctx);
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-/* Action when selecting a language entry in the language menu. */
-static vb2_error_t language_action(struct vb2_context *ctx)
-{
-	/* Write selected language ID back to NVRAM. */
-	vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, current_menu_idx);
-
-	/*
-	 * Non-manual recovery mode is meant to be left via three-finger
-	 * salute (into manual recovery mode). Need to commit nvdata
-	 * changes immediately.  Ignore commit errors in recovery mode.
-	 */
-	if ((ctx->flags & VB2_CONTEXT_RECOVERY_MODE) &&
-	    !vb2_allow_recovery(ctx))
-		vb2ex_commit_data(ctx);
-
-	/* Return to previous menu. */
-	switch (prev_menu) {
-	case VB_MENU_DEV_WARNING:
-		return enter_dev_warning_menu(ctx);
-	case VB_MENU_DEV:
-		return enter_developer_menu(ctx);
-	case VB_MENU_TO_NORM:
-		return enter_to_norm_menu(ctx);
-	case VB_MENU_TO_DEV:
-		return enter_to_dev_menu(ctx);
-	case VB_MENU_OPTIONS:
-		return enter_options_menu(ctx);
-	default:
-		/* This should never happen. */
-		VB2_DEBUG("ERROR: prev_menu state corrupted, force shutdown\n");
-		return VB2_REQUEST_SHUTDOWN;
-	}
-}
-
-/* Action when selecting a bootloader in the alternative firmware menu. */
-static vb2_error_t altfw_action(struct vb2_context *ctx)
-{
-	vb2_try_altfw(ctx, 1, current_menu_idx + 1);
-	vb2_flash_screen(ctx);
-	VB2_DEBUG(no_legacy);
-	VbExDisplayDebugInfo(no_legacy, 0);
-
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-/* Action that enables developer mode and reboots. */
-static vb2_error_t to_dev_action(struct vb2_context *ctx)
-{
-	/* Validity check, should never happen. */
-	if ((vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) ||
-	    !vb2_allow_recovery(ctx))
-		return VB2_REQUEST_UI_CONTINUE;
-
-	vb2_enable_developer_mode(ctx);
-
-	return VB2_REQUEST_REBOOT_EC_TO_RO;
-}
-
-/* Action that disables developer mode, shows TO_NORM_CONFIRMED and reboots. */
-static vb2_error_t to_norm_action(struct vb2_context *ctx)
-{
-	if (vb2_get_gbb(ctx)->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
-		vb2_flash_screen(ctx);
-		vb2_error_notify("WARNING: TONORM prohibited by "
-				 "GBB FORCE_DEV_SWITCH_ON.\n", NULL,
-				 VB_BEEP_NOT_ALLOWED);
-		return VB2_REQUEST_UI_CONTINUE;
-	}
-
-	VB2_DEBUG("leaving dev-mode.\n");
-	vb2_nv_set(ctx, VB2_NV_DISABLE_DEV_REQUEST, 1);
-	vb2_change_menu(VB_MENU_TO_NORM_CONFIRMED, 0);
-	vb2_draw_current_screen(ctx);
-	vb2ex_msleep(5 * VB2_MSEC_PER_SEC);
-	return VB2_REQUEST_REBOOT;
-}
-
-/* Action that will power off the system. */
-static vb2_error_t power_off_action(struct vb2_context *ctx)
-{
-	VB2_DEBUG("Power off requested from screen %#x\n",
-		  menus[current_menu].screen);
-	return VB2_REQUEST_SHUTDOWN;
-}
-
-/**
- * Updates current_menu_idx upon an up/down key press, taking into
- * account disabled indices (from cur_disabled_idx_mask).  The cursor
- * will not wrap, meaning that we block on the 0 or max index when
- * we hit the ends of the menu.
- *
- * @param  key      VOL_KEY_UP = increase index selection
- *                  VOL_KEY_DOWN = decrease index selection.
- *                  Every other key has no effect now.
- */
-static void vb2_update_selection(uint32_t key) {
-	int idx;
-
-	switch (key) {
-	case VB_BUTTON_VOL_UP_SHORT_PRESS:
-	case VB_KEY_UP:
-		idx = current_menu_idx - 1;
-		while (idx >= 0 &&
-		       ((1 << idx) & cur_disabled_idx_mask))
-		  idx--;
-		/* Only update if idx is valid */
-		if (idx >= 0)
-			current_menu_idx = idx;
-		break;
-	case VB_BUTTON_VOL_DOWN_SHORT_PRESS:
-	case VB_KEY_DOWN:
-		idx = current_menu_idx + 1;
-		while (idx < menus[current_menu].size &&
-		       ((1 << idx) & cur_disabled_idx_mask))
-		  idx++;
-		/* Only update if idx is valid */
-		if (idx < menus[current_menu].size)
-			current_menu_idx = idx;
-		break;
-	default:
-		VB2_DEBUG("ERROR: %s called with key %#x!\n", __func__, key);
-		break;
-	}
-
-	vb2_log_menu_change();
-}
-
-static vb2_error_t vb2_handle_menu_input(struct vb2_context *ctx,
-					 uint32_t key, uint32_t key_flags)
-{
-	switch (key) {
-	case 0:
-		/* nothing pressed */
-		break;
-	case '\t':
-		/* Tab = display debug info */
-		return debug_info_action(ctx);
-	case VB_KEY_ESC:
-		/* Esc = redraw screen (to clear old debug info) */
-		vb2_draw_current_screen(ctx);
-		break;
-	case VB_KEY_UP:
-	case VB_KEY_DOWN:
-	case VB_BUTTON_VOL_UP_SHORT_PRESS:
-	case VB_BUTTON_VOL_DOWN_SHORT_PRESS:
-		/* Untrusted (USB keyboard) input disabled for TO_DEV menu. */
-		if (current_menu == VB_MENU_TO_DEV &&
-		    !(key_flags & VB_KEY_FLAG_TRUSTED_KEYBOARD)) {
-			vb2_flash_screen(ctx);
-			vb2_error_notify("Please use the on-device volume "
-					 "buttons to navigate\n",
-					 "vb2_handle_menu_input() - Untrusted "
-					 "(USB keyboard) input disabled\n",
-					 VB_BEEP_NOT_ALLOWED);
-			break;
-		}
-
-		/* Menuless screens enter OPTIONS on volume button press. */
-		if (!menus[current_menu].size) {
-			enter_options_menu(ctx);
-			break;
-		}
-
-		vb2_update_selection(key);
-		vb2_draw_current_screen(ctx);
-		break;
-	case VB_BUTTON_POWER_SHORT_PRESS:
-	case VB_KEY_ENTER:
-		/* Menuless screens shut down on power button press. */
-		if (!menus[current_menu].size)
-			return VB2_REQUEST_SHUTDOWN;
-
-		return menus[current_menu].items[current_menu_idx].action(ctx);
-	default:
-		VB2_DEBUG("pressed key %#x\n", key);
-		break;
-	}
-
-	if (VbWantShutdownMenu(ctx)) {
-		VB2_DEBUG("shutdown requested!\n");
-		return VB2_REQUEST_SHUTDOWN;
-	}
-
-	return VB2_REQUEST_UI_CONTINUE;
-}
-
-/* Master table of all menus. Menus with size == 0 count as menuless screens. */
-static struct vb2_menu menus[VB_MENU_COUNT] = {
-	[VB_MENU_DEV_WARNING] = {
-		.name = "Developer Warning",
-		.size = VB_WARN_COUNT,
-		.screen = VB_SCREEN_DEVELOPER_WARNING_MENU,
-		.items = (struct vb2_menu_item[]){
-			[VB_WARN_OPTIONS] = {
-				.text = "Developer Options",
-				.action = enter_developer_menu,
-			},
-			[VB_WARN_DBG_INFO] = {
-				.text = "Show Debug Info",
-				.action = debug_info_action,
-			},
-			[VB_WARN_ENABLE_VER] = {
-				.text = "Enable OS Verification",
-				.action = enter_to_norm_menu,
-			},
-			[VB_WARN_POWER_OFF] = {
-				.text = "Power Off",
-				.action = power_off_action,
-			},
-			[VB_WARN_LANGUAGE] = {
-				.text = "Language",
-				.action = enter_language_menu,
-			},
-		},
-	},
-	[VB_MENU_DEV] = {
-		.name = "Developer Boot Options",
-		.size = VB_DEV_COUNT,
-		.screen = VB_SCREEN_DEVELOPER_MENU,
-		.items = (struct vb2_menu_item[]){
-			[VB_DEV_NETWORK] = {
-				.text = "Boot From Network",
-				.action = NULL,	/* unimplemented */
-			},
-			[VB_DEV_LEGACY] = {
-				.text = "Boot Legacy BIOS",
-				.action = enter_altfw_menu,
-			},
-			[VB_DEV_USB] = {
-				.text = "Boot From USB or SD Card",
-				.action = boot_usb_action,
-			},
-			[VB_DEV_DISK] = {
-				.text = "Boot From Internal Disk",
-				.action = boot_disk_action,
-			},
-			[VB_DEV_CANCEL] = {
-				.text = "Cancel",
-				.action = enter_dev_warning_menu,
-			},
-			[VB_DEV_POWER_OFF] = {
-				.text = "Power Off",
-				.action = power_off_action,
-			},
-			[VB_DEV_LANGUAGE] = {
-				.text = "Language",
-				.action = enter_language_menu,
-			},
-		},
-	},
-	[VB_MENU_TO_NORM] = {
-		.name = "TO_NORM Confirmation",
-		.size = VB_TO_NORM_COUNT,
-		.screen = VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		.items = (struct vb2_menu_item[]){
-			[VB_TO_NORM_CONFIRM] = {
-				.text = "Confirm Enabling OS Verification",
-				.action = to_norm_action,
-			},
-			[VB_TO_NORM_CANCEL] = {
-				.text = "Cancel",
-				.action = enter_dev_warning_menu,
-			},
-			[VB_TO_NORM_POWER_OFF] = {
-				.text = "Power Off",
-				.action = power_off_action,
-			},
-			[VB_TO_NORM_LANGUAGE] = {
-				.text = "Language",
-				.action = enter_language_menu,
-			},
-		},
-	},
-	[VB_MENU_TO_DEV] = {
-		.name = "TO_DEV Confirmation",
-		.size = VB_TO_DEV_COUNT,
-		.screen = VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		.items = (struct vb2_menu_item[]){
-			[VB_TO_DEV_CONFIRM] = {
-				.text = "Confirm Disabling OS Verification",
-				.action = to_dev_action,
-			},
-			[VB_TO_DEV_CANCEL] = {
-				.text = "Cancel",
-				.action = enter_recovery_base_screen,
-			},
-			[VB_TO_DEV_POWER_OFF] = {
-				.text = "Power Off",
-				.action = power_off_action,
-			},
-			[VB_TO_DEV_LANGUAGE] = {
-				.text = "Language",
-				.action = enter_language_menu,
-			},
-		},
-	},
-	[VB_MENU_LANGUAGES] = {
-		.name = "Language Selection",
-		.screen = VB_SCREEN_LANGUAGES_MENU,
-		/* Rest is filled out dynamically by vb2_init_menus() */
-	},
-	[VB_MENU_OPTIONS] = {
-		.name = "Options",
-		.size = VB_OPTIONS_COUNT,
-		.screen = VB_SCREEN_OPTIONS_MENU,
-		.items = (struct vb2_menu_item[]){
-			[VB_OPTIONS_DBG_INFO] = {
-				.text = "Show Debug Info",
-				.action = debug_info_action,
-			},
-			[VB_OPTIONS_CANCEL] = {
-				.text = "Cancel",
-				.action = enter_recovery_base_screen,
-			},
-			[VB_OPTIONS_POWER_OFF] = {
-				.text = "Power Off",
-				.action = power_off_action,
-			},
-			[VB_OPTIONS_LANGUAGE] = {
-				.text = "Language",
-				.action = enter_language_menu,
-			},
-		},
-	},
-	[VB_MENU_RECOVERY_INSERT] = {
-		.name = "Recovery INSERT",
-		.size = 0,
-		.screen = VB_SCREEN_RECOVERY_INSERT,
-		.items = NULL,
-	},
-	[VB_MENU_RECOVERY_NO_GOOD] = {
-		.name = "Recovery NO_GOOD",
-		.size = 0,
-		.screen = VB_SCREEN_RECOVERY_NO_GOOD,
-		.items = NULL,
-	},
-	[VB_MENU_RECOVERY_BROKEN] = {
-		.name = "Non-manual Recovery (BROKEN)",
-		.size = 0,
-		.screen = VB_SCREEN_OS_BROKEN,
-		.items = NULL,
-	},
-	[VB_MENU_TO_NORM_CONFIRMED] = {
-		.name = "TO_NORM Interstitial",
-		.size = 0,
-		.screen = VB_SCREEN_TO_NORM_CONFIRMED,
-		.items = NULL,
-	},
-	[VB_MENU_ALT_FW] = {
-		.name = "Alternative Firmware Selection",
-		.screen = VB_SCREEN_ALT_FW_MENU,
-		.size = VB_ALTFW_COUNT + 1,
-		.items = (struct vb2_menu_item[]) {{
-				.text = "Bootloader 1",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 2",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 3",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 4",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 5",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 6",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 7",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 8",
-				.action = altfw_action,
-			}, {
-				.text = "Bootloader 9",
-				.action = altfw_action,
-			}, {
-				.text = "Cancel",
-				.action = enter_developer_menu,
-			},
-		},
-	},
-};
-
-/* Initialize menu state. Must be called once before displaying any menus. */
-static vb2_error_t vb2_init_menus(struct vb2_context *ctx)
-{
-	struct vb2_menu_item *items;
-	uint32_t count;
-	int i;
-
-	/* Initialize language menu with the correct amount of entries. */
-	count = vb2ex_get_locale_count();
-	if (count == 0)
-		count = 1;  /* Fall back to 1 language entry on failure */
-
-	items = malloc(count * sizeof(struct vb2_menu_item));
-	if (!items)
-		return VB2_ERROR_UNKNOWN;
-
-	for (i = 0; i < count; i++) {
-		/* The actual language is drawn by the bootloader */
-		items[i].text = "Some Language";
-		items[i].action = language_action;
-	}
-	menus[VB_MENU_LANGUAGES].size = count;
-	menus[VB_MENU_LANGUAGES].items = items;
-
-	return VB2_SUCCESS;
-}
-
-/**
- * Main function that handles developer warning menu functionality
- *
- * @param ctx		Vboot2 context
- * @return VB2_SUCCESS, or non-zero error code if error.
- */
-static vb2_error_t vb2_developer_legacy_menu(struct vb2_context *ctx)
-{
-	struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
-	vb2_error_t ret;
-
-	/* Check if the default is to boot using disk, usb, or legacy */
-	default_boot = vb2_nv_get(ctx, VB2_NV_DEV_DEFAULT_BOOT);
-	if (gbb->flags & VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY)
-		default_boot = VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY;
-
-	/* Check if developer mode is disabled by FWMP */
-	disable_dev_boot = 0;
-	if (vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_DISABLE_BOOT)) {
-		if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
-			VB2_DEBUG("FWMP_DEV_DISABLE_BOOT rejected by"
-				  "FORCE_DEV_SWITCH_ON\n");
-		} else {
-			/* If dev mode is disabled, only allow TONORM */
-			disable_dev_boot = 1;
-			VB2_DEBUG("dev_disable_boot is set.\n");
-		}
-	}
-
-	altfw_allowed = vb2_nv_get(ctx, VB2_NV_DEV_BOOT_LEGACY) ||
-	    (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY) ||
-	    vb2_secdata_fwmp_get_flag(ctx, VB2_SECDATA_FWMP_DEV_ENABLE_LEGACY);
-
-	/* Show appropriate initial menu */
-	if (disable_dev_boot)
-		enter_to_norm_menu(ctx);
-	else
-		enter_dev_warning_menu(ctx);
-
-	/* Get audio/delay context */
-	vb2_audio_start(ctx);
-
-	/* We'll loop until we finish the delay or are interrupted */
-	do {
-		uint32_t key = VbExKeyboardRead();
-
-		switch (key) {
-		case VB_BUTTON_VOL_DOWN_LONG_PRESS:
-		case VB_KEY_CTRL('D'):
-			/* Ctrl+D = boot from internal disk */
-			ret = boot_disk_action(ctx);
-			break;
-		case VB_KEY_CTRL('L'):
-			/* Ctrl+L = boot alternative bootloader */
-			ret = enter_altfw_menu(ctx);
-			break;
-		case VB_BUTTON_VOL_UP_LONG_PRESS:
-		case VB_KEY_CTRL('U'):
-			/* Ctrl+U = boot from USB or SD card */
-			ret = boot_usb_action(ctx);
-			break;
-		/* We allow selection of the default '0' bootloader here */
-		case '0'...'9':
-			VB2_DEBUG("developer UI - "
-				  "user pressed key '%c': Boot alternative "
-				  "firmware\n", key);
-			vb2_try_altfw(ctx, altfw_allowed, key - '0');
-			ret = VB2_REQUEST_UI_CONTINUE;
-			break;
-		default:
-			ret = vb2_handle_menu_input(ctx, key, 0);
-			break;
-		}
-
-		/* We may have loaded a kernel or decided to shut down now. */
-		if (ret != VB2_REQUEST_UI_CONTINUE)
-			return ret;
-
-		/* Reset 30 second timer whenever we see a new key. */
-		if (key != 0)
-			vb2_audio_start(ctx);
-
-		vb2ex_msleep(KEY_DELAY_MS);
-
-		/* If dev mode was disabled, loop forever (never timeout) */
-	} while (disable_dev_boot ? 1 : vb2_audio_looping());
-
-	if (default_boot == VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY)
-		boot_legacy_action(ctx);	/* Doesn't return on success. */
-
-	if (default_boot == VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL)
-		if (VB2_SUCCESS == boot_usb_action(ctx))
-			return VB2_SUCCESS;
-
-	return boot_disk_action(ctx);
-}
-
-/* Developer mode entry point. */
-vb2_error_t VbBootDeveloperLegacyMenu(struct vb2_context *ctx)
-{
-	vb2_error_t retval = vb2_init_menus(ctx);
-	if (VB2_SUCCESS != retval)
-		return retval;
-	retval = vb2_developer_legacy_menu(ctx);
-	VbDisplayMenu(ctx, VB_SCREEN_BLANK, 0, 0, 0);
-	return retval;
-}
-
-/* Main function that handles non-manual recovery (BROKEN) menu functionality */
-static vb2_error_t broken_ui(struct vb2_context *ctx)
-{
-	enter_recovery_base_screen(ctx);
-
-	/* Loop and wait for the user to reset or shut down. */
-	VB2_DEBUG("waiting for manual recovery\n");
-	while (1) {
-		uint32_t key = VbExKeyboardRead();
-		vb2_error_t ret = vb2_handle_menu_input(ctx, key, 0);
-		if (ret != VB2_REQUEST_UI_CONTINUE)
-			return ret;
-	}
-}
-
-/**
- * Main function that handles recovery menu functionality
- *
- * @param ctx		Vboot2 context
- * @return VB2_SUCCESS, or non-zero error code if error.
- */
-static vb2_error_t recovery_ui(struct vb2_context *ctx)
-{
-	uint32_t key;
-	uint32_t key_flags;
-	vb2_error_t ret;
-
-	/* Loop and wait for a recovery image */
-	VB2_DEBUG("waiting for a recovery image\n");
-	usb_nogood = -1;
-	while (1) {
-		ret = VbTryLoadKernel(ctx, VB_DISK_FLAG_REMOVABLE);
-
-		if (VB2_SUCCESS == ret)
-			return ret; /* Found a recovery kernel */
-
-		if (usb_nogood != (ret != VB2_ERROR_LK_NO_DISK_FOUND)) {
-			/* USB state changed, force back to base screen */
-			usb_nogood = ret != VB2_ERROR_LK_NO_DISK_FOUND;
-			enter_recovery_base_screen(ctx);
-		}
-
-		key = VbExKeyboardReadWithFlags(&key_flags);
-		if (key == VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS) {
-			if (key_flags & VB_KEY_FLAG_TRUSTED_KEYBOARD)
-				enter_to_dev_menu(ctx);
-			else
-				VB2_DEBUG("ERROR: untrusted combo?!\n");
-		} else {
-			ret = vb2_handle_menu_input(ctx, key, key_flags);
-			if (ret != VB2_REQUEST_UI_CONTINUE)
-				return ret;
-		}
-		vb2ex_msleep(KEY_DELAY_MS);
-	}
-}
-
-/* Recovery mode entry point. */
-vb2_error_t VbBootRecoveryLegacyMenu(struct vb2_context *ctx)
-{
-	vb2_error_t retval = vb2_init_menus(ctx);
-	if (VB2_SUCCESS != retval)
-		return retval;
-	if (vb2_allow_recovery(ctx))
-		retval = recovery_ui(ctx);
-	else
-		retval = broken_ui(ctx);
-	VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0, NULL);
-	return retval;
-}
diff --git a/firmware/lib/vboot_ui_legacy_wilco.c b/firmware/lib/vboot_ui_legacy_wilco.c
deleted file mode 100644
index 7838bcf..0000000
--- a/firmware/lib/vboot_ui_legacy_wilco.c
+++ /dev/null
@@ -1,367 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Code used by vboot_ui_legacy_clamshell for Wilco-specific features.
- */
-
-#include "2common.h"
-#include "2nvstorage.h"
-#include "2sysincludes.h"
-#include "vboot_api.h"
-#include "vboot_ui_legacy.h"
-#include "vboot_ui_legacy_wilco.h"
-
-static inline int is_vowel(uint32_t key)
-{
-	return key == 'A' || key == 'E' || key == 'I' ||
-	       key == 'O' || key == 'U';
-}
-
-static int vendor_data_length(char *data_value)
-{
-	for (int len = 0; len <= VENDOR_DATA_LENGTH; len++) {
-		if (data_value[len] == '\0')
-			return len;
-	}
-
-	return VENDOR_DATA_LENGTH;
-}
-
-/*
- * Prompt the user to enter the serial number
- */
-static vb2_error_t vb2_enter_vendor_data_ui(struct vb2_context *ctx,
-					    char *data_value)
-{
-	int len = vendor_data_length(data_value);
-	int blinks = CURSOR_BLINK_MS / KEY_DELAY_MS;
-	int blink_count = 0;
-	VbScreenData data = {
-		.vendor_data = {
-			.input_text = data_value,
-			.flags = VB_VENDOR_DATA_SHOW_CURSOR,
-			.selected_index = 1,
-		}
-	};
-
-	VbDisplayScreen(ctx, VB_SCREEN_SET_VENDOR_DATA, 1, &data);
-
-	/* We'll loop until the user decides what to do */
-	do {
-		uint32_t key = VbExKeyboardRead();
-
-		if (vb2_want_shutdown(ctx, key)) {
-			VB2_DEBUG("Vendor Data UI - shutdown requested!\n");
-			return VB2_REQUEST_SHUTDOWN;
-		}
-		switch (key) {
-		case 0:
-			/* Nothing pressed */
-			break;
-		case VB_KEY_ESC:
-			/* Escape pressed - return to developer screen */
-			VB2_DEBUG("Vendor Data UI - user pressed Esc: "
-				  "exit to Developer screen\n");
-			data_value[0] = '\0';
-			return VB2_SUCCESS;
-		case 'a'...'z':
-			key = toupper(key);
-			VBOOT_FALLTHROUGH;
-		case '0'...'9':
-		case 'A'...'Z':
-			if ((len > 0 && is_vowel(key)) ||
-			     len >= VENDOR_DATA_LENGTH) {
-				vb2_error_beep(VB_BEEP_NOT_ALLOWED);
-			} else {
-				data_value[len++] = key;
-				data_value[len] = '\0';
-				VbDisplayScreen(ctx, VB_SCREEN_SET_VENDOR_DATA,
-						1, &data);
-			}
-
-			VB2_DEBUG("Vendor Data UI - vendor_data: %s\n",
-				  data_value);
-			break;
-		case VB_KEY_BACKSPACE:
-			if (len > 0) {
-				data_value[--len] = '\0';
-				VbDisplayScreen(ctx, VB_SCREEN_SET_VENDOR_DATA,
-						1, &data);
-			}
-
-			VB2_DEBUG("Vendor Data UI - vendor_data: %s\n",
-				  data_value);
-			break;
-		case VB_KEY_ENTER:
-			if (len == VENDOR_DATA_LENGTH) {
-				/* Enter pressed - confirm input */
-				VB2_DEBUG("Vendor Data UI - user pressed "
-					  "Enter: confirm vendor data\n");
-				return VB2_SUCCESS;
-			} else {
-				vb2_error_beep(VB_BEEP_NOT_ALLOWED);
-			}
-			break;
-		default:
-			VB2_DEBUG("Vendor Data UI - pressed key %#x\n", key);
-			VbCheckDisplayKey(ctx, key, VB_SCREEN_SET_VENDOR_DATA,
-					  &data);
-			break;
-		}
-		vb2ex_msleep(KEY_DELAY_MS);
-
-		if (++blink_count == blinks) {
-			blink_count = 0;
-			data.vendor_data.flags ^= VB_VENDOR_DATA_SHOW_CURSOR;
-			data.vendor_data.flags |=
-				VB_VENDOR_DATA_ONLY_DRAW_CURSOR;
-
-			VbDisplayScreen(ctx, VB_SCREEN_SET_VENDOR_DATA,
-					1, &data);
-
-			data.vendor_data.flags &=
-				~(VB_VENDOR_DATA_ONLY_DRAW_CURSOR);
-		}
-	} while (1);
-
-	return VB2_SUCCESS;
-}
-
-/*
- * Prompt the user to confirm the serial number and write to memory
- */
-static vb2_error_t vb2_confirm_vendor_data_ui(struct vb2_context *ctx,
-					      char* data_value, VbScreenData *data)
-{
-	VbDisplayScreen(ctx, VB_SCREEN_CONFIRM_VENDOR_DATA, 1, data);
-	/* We'll loop until the user decides what to do */
-	do {
-		uint32_t key_confirm = VbExKeyboardRead();
-
-		if (vb2_want_shutdown(ctx, key_confirm)) {
-			VB2_DEBUG("Confirm Vendor Data UI "
-				  "- shutdown requested!\n");
-			return VB2_REQUEST_SHUTDOWN;
-		}
-		switch (key_confirm) {
-		case 0:
-			/* Nothing pressed */
-			break;
-		case VB_KEY_ESC:
-			/* Escape pressed - return to developer screen */
-			VB2_DEBUG("Confirm Vendor Data UI - user "
-				  "pressed Esc: exit to Developer screen\n");
-			return VB2_SUCCESS;
-		case VB_KEY_RIGHT:
-		case VB_KEY_LEFT:
-			data->vendor_data.selected_index =
-				data->vendor_data.selected_index ^ 1;
-			VbDisplayScreen(ctx, VB_SCREEN_CONFIRM_VENDOR_DATA,
-					1, data);
-			VB2_DEBUG("selected_index:%d\n",
-				  data->vendor_data.selected_index);
-			break;
-		case VB_KEY_ENTER:
-			/* Enter pressed - write vendor data */
-			if (data->vendor_data.selected_index == 0) {
-				VB2_DEBUG("Confirm Vendor Data UI - user "
-					  "selected YES: "
-					  "write vendor data (%s) to VPD\n",
-					  data_value);
-				vb2_error_t ret = VbExSetVendorData(data_value);
-
-				if (ret == VB2_SUCCESS) {
-					vb2_nv_set(ctx,
-						   VB2_NV_DISABLE_DEV_REQUEST,
-						   1);
-					return VB2_REQUEST_REBOOT;
-				} else {
-					vb2_error_notify(
-						"ERROR: Vendor data was not "
-						"set.\n"
-						"System will now shutdown\n",
-						NULL, VB_BEEP_FAILED);
-					vb2ex_msleep(5 * VB2_MSEC_PER_SEC);
-					return VB2_REQUEST_SHUTDOWN;
-				}
-			} else {
-				VB2_DEBUG("Confirm Vendor Data UI - user "
-					  "selected NO: "
-					  "Returning to set screen\n");
-				return VB2_SUCCESS;
-			}
-		default:
-			VB2_DEBUG("Confirm Vendor Data UI - pressed "
-				  "key %#x\n", key_confirm);
-			VbCheckDisplayKey(ctx, key_confirm,
-					  VB_SCREEN_CONFIRM_VENDOR_DATA, data);
-			break;
-		}
-		vb2ex_msleep(KEY_DELAY_MS);
-	} while (1);
-	return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_vendor_data_ui(struct vb2_context *ctx)
-{
-	char data_value[VENDOR_DATA_LENGTH + 1];
-
-	VbScreenData data = {.vendor_data = {data_value, 0, 0}};
-	VbDisplayScreen(ctx, VB_COMPLETE_VENDOR_DATA, 0, NULL);
-
-	do {
-		uint32_t key_set = VbExKeyboardRead();
-
-		if (vb2_want_shutdown(ctx, key_set)) {
-			VB2_DEBUG("Vendor Data UI - shutdown requested!\n");
-			return VB2_REQUEST_SHUTDOWN;
-		}
-
-		switch (key_set) {
-		case 0:
-			/* Nothing pressed - do nothing. */
-			break;
-		case VB_KEY_ESC:
-			/* ESC pressed - boot normally */
-			VB2_DEBUG("Vendor Data UI - boot normally\n");
-			return VB2_SUCCESS;
-			break;
-		case VB_KEY_ENTER:
-			data_value[0] = '\0';
-			do {
-				/* ENTER pressed -
-				   enter vendor data set screen */
-				VB2_DEBUG("Vendor Data UI - Enter VD set "
-					  "screen\n");
-				vb2_error_t ret = vb2_enter_vendor_data_ui(
-					ctx, data_value);
-
-				if (ret)
-					return ret;
-
-				/* Vendor data was not entered just return */
-				if (vendor_data_length(data_value) == 0) {
-					return VB2_SUCCESS;
-				}
-
-				/* Reset confirmation answer to YES */
-				data.vendor_data.selected_index = 0;
-
-				ret = vb2_confirm_vendor_data_ui(
-					ctx, data_value, &data);
-
-				if (ret)
-					return ret;
-
-				/* Break if vendor data confirmed */
-				if (data.vendor_data.selected_index == 0)
-					return VB2_SUCCESS;
-			} while (1);
-			break;
-		default:
-			break;
-		}
-	} while (1);
-	return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_check_diagnostic_key(struct vb2_context *ctx, uint32_t key)
-{
-	if (DIAGNOSTIC_UI && (key == VB_KEY_CTRL('C') || key == VB_KEY_F(12))) {
-		VB2_DEBUG("Diagnostic mode requested, rebooting\n");
-		vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 1);
-
-		return VB2_REQUEST_REBOOT;
-	}
-
-	return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_diagnostics_ui(struct vb2_context *ctx)
-{
-	int active = 1;
-	int button_released = 0;
-	int button_pressed = 0;
-	vb2_error_t result = VB2_REQUEST_REBOOT;
-	int action_confirmed = 0;
-	uint32_t start_time_ms;
-
-	VbDisplayScreen(ctx, VB_SCREEN_CONFIRM_DIAG, 0, NULL);
-
-	start_time_ms = vb2ex_mtime();
-
-	/* We'll loop until the user decides what to do */
-	do {
-		uint32_t key = VbExKeyboardRead();
-		/* Note that we need to check that the physical presence button
-		   was pressed *and then* released. */
-		if (vb2ex_physical_presence_pressed()) {
-			/* Wait for a release before registering a press. */
-			if (button_released)
-				button_pressed = 1;
-		} else {
-			button_released = 1;
-			if (button_pressed) {
-				VB2_DEBUG("vb2_diagnostics_ui() - power released\n");
-				action_confirmed = 1;
-				active = 0;
-				break;
-			}
-		}
-
-		/* Check the lid and ignore the power button. */
-		if (vb2_want_shutdown(ctx, 0) & ~VB_SHUTDOWN_REQUEST_POWER_BUTTON) {
-			VB2_DEBUG("vb2_diagnostics_ui() - shutdown request\n");
-			result = VB2_REQUEST_SHUTDOWN;
-			active = 0;
-			break;
-		}
-
-		switch (key) {
-		case 0:
-			/* Nothing pressed */
-			break;
-		case VB_KEY_ESC:
-			/* Escape pressed - reboot */
-			VB2_DEBUG("vb2_diagnostics_ui() - user pressed Esc\n");
-			active = 0;
-			break;
-		default:
-			VB2_DEBUG("vb2_diagnostics_ui() - pressed key %#x\n",
-				  key);
-			VbCheckDisplayKey(ctx, key, VB_SCREEN_CONFIRM_DIAG,
-					  NULL);
-			break;
-		}
-		if (vb2ex_mtime() - start_time_ms >= 30 * VB2_MSEC_PER_SEC) {
-			VB2_DEBUG("vb2_diagnostics_ui() - timeout\n");
-			break;
-		}
-		if (active) {
-			vb2ex_msleep(KEY_DELAY_MS);
-		}
-	} while (active);
-
-	VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0, NULL);
-
-	if (action_confirmed) {
-		VB2_DEBUG("Diagnostic requested, running\n");
-
-		if (vb2ex_tpm_set_mode(VB2_TPM_MODE_DISABLED) !=
-			   VB2_SUCCESS) {
-			VB2_DEBUG("Failed to disable TPM\n");
-			vb2api_fail(ctx, VB2_RECOVERY_TPM_DISABLE_FAILED, 0);
-		} else {
-			vb2_try_altfw(ctx, 1, VB_ALTFW_DIAGNOSTIC);
-			VB2_DEBUG("Diagnostic failed to run\n");
-			/*
-			 * Assuming failure was due to bad hash, though
-			 * the rom could just be missing or invalid.
-			 */
-			vb2api_fail(ctx, VB2_RECOVERY_ALTFW_HASH_FAILED, 0);
-		}
-	}
-
-	return result;
-}
diff --git a/firmware/stub/vboot_api_stub.c b/firmware/stub/vboot_api_stub.c
index 5678521..fe1c13d 100644
--- a/firmware/stub/vboot_api_stub.c
+++ b/firmware/stub/vboot_api_stub.c
@@ -26,24 +26,6 @@
 {
 }
 
-vb2_error_t VbExDisplayScreen(uint32_t screen_type, uint32_t locale,
-			      const VbScreenData *data)
-{
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbExDisplayMenu(uint32_t screen_type, uint32_t locale,
-			    uint32_t selected_index, uint32_t disabled_idx_mask,
-			    uint32_t redraw_base)
-{
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbExDisplayDebugInfo(const char *info_str, int full_info)
-{
-	return VB2_SUCCESS;
-}
-
 uint32_t vb2ex_get_locale_count(void)
 {
 	return 0;
@@ -54,11 +36,6 @@
 	return 0;
 }
 
-uint32_t VbExGetAltFwIdxMask(void)
-{
-	return 0;
-}
-
 uint32_t VbExKeyboardRead(void)
 {
 	return 0;
@@ -155,8 +132,3 @@
 {
 	return VB2_SUCCESS;
 }
-
-vb2_error_t VbExSetVendorData(const char *vendor_data_value)
-{
-	return VB2_SUCCESS;
-}
diff --git a/tests/vb2_auxfw_sync_tests.c b/tests/vb2_auxfw_sync_tests.c
index 358f706..f779ac0 100644
--- a/tests/vb2_auxfw_sync_tests.c
+++ b/tests/vb2_auxfw_sync_tests.c
@@ -19,7 +19,6 @@
 #include "vboot_audio.h"
 #include "vboot_kernel.h"
 #include "vboot_struct.h"
-#include "vboot_ui_legacy.h"
 
 /* Mock data */
 static struct vb2_context *ctx;
diff --git a/tests/vb2_ec_sync_tests.c b/tests/vb2_ec_sync_tests.c
index 6c06caf..be86fbb 100644
--- a/tests/vb2_ec_sync_tests.c
+++ b/tests/vb2_ec_sync_tests.c
@@ -16,7 +16,6 @@
 #include "vboot_audio.h"
 #include "vboot_kernel.h"
 #include "vboot_struct.h"
-#include "vboot_ui_legacy.h"
 
 /* Mock data */
 static int ec_ro_updated;
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index 1e68748..5229ee5 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -144,16 +144,6 @@
 	return boot_dev(c);
 }
 
-vb2_error_t VbBootDeveloperLegacyClamshell(struct vb2_context *c)
-{
-	return boot_dev(c);
-}
-
-vb2_error_t VbBootDeveloperLegacyMenu(struct vb2_context *c)
-{
-	return boot_dev(c);
-}
-
 static void rec_check(struct vb2_context *c)
 {
 	TEST_EQ(current_recovery_reason, expected_recovery_reason,
@@ -179,34 +169,6 @@
 
 vb2_error_t vb2_diagnostic_menu(struct vb2_context *c)
 {
-	TEST_TRUE(MENU_UI, "Using menu_ui");
-	if (vbboot_retval == -5)
-		return VB2_ERROR_MOCK;
-
-	return vbboot_retval;
-}
-
-vb2_error_t VbBootRecoveryLegacyClamshell(struct vb2_context *c)
-{
-	rec_check(c);
-	/* Don't care if it's manual recovery or not */
-	if (vbboot_retval == -3 || vbboot_retval == -4)
-		return VB2_ERROR_MOCK;
-	return vbboot_retval;
-}
-
-vb2_error_t VbBootRecoveryLegacyMenu(struct vb2_context *c)
-{
-	rec_check(c);
-	/* Don't care if it's manual recovery or not */
-	if (vbboot_retval == -3 || vbboot_retval == -4)
-		return VB2_ERROR_MOCK;
-	return vbboot_retval;
-}
-
-vb2_error_t VbBootDiagnosticLegacyClamshell(struct vb2_context *c)
-{
-	TEST_TRUE(!MENU_UI, "Not using menu_ui");
 	if (vbboot_retval == -5)
 		return VB2_ERROR_MOCK;
 
diff --git a/tests/vboot_ui_legacy_clamshell_beep_tests.c b/tests/vboot_ui_legacy_clamshell_beep_tests.c
deleted file mode 100644
index cb0b476..0000000
--- a/tests/vboot_ui_legacy_clamshell_beep_tests.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/* Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Tests for vboot_api_firmware
- */
-
-#include <stddef.h>
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2secdata.h"
-#include "2sysincludes.h"
-#include "crc32.h"
-#include "host_common.h"
-#include "load_kernel_fw.h"
-#include "test_common.h"
-#include "vboot_kernel.h"
-#include "vboot_struct.h"
-
-/* Expected results */
-
-#define MAX_NOTE_EVENTS 10
-#define TIME_FUZZ 500
-#define KBD_READ_TIME 60
-
-typedef struct {
-	uint16_t msec;
-	uint16_t freq;
-	int time;
-} note_event_t;
-
-typedef struct {
-	const char *name;
-	uint32_t gbb_flags;
-	uint32_t keypress_key;
-	int keypress_at_count;
-	int num_events;
-	note_event_t notes[MAX_NOTE_EVENTS];
-} test_case_t;
-
-test_case_t test[] = {
-
-	{ "VbBootDeveloperSoundTest( fast )",
-	  VB2_GBB_FLAG_DEV_SCREEN_SHORT_DELAY, 0, 0,
-	  1,
-	  {
-		{0, 0, 2000},		// off and return at 2 seconds
-	  }},
-
-	{ "VbBootDeveloperSoundTest( normal )",
-	  0, 0, 0,
-	  3,
-	  {
-		{250, 400, 20000},	// first beep at 20 seconds
-		{250, 400, 20510},	// second beep shortly after
-		{0, 0, 30020},	// off and return at 30 seconds
-	  }},
-
-	// Now with some keypresses
-
-	{ "VbBootDeveloperSoundTest( normal, Ctrl-D )",
-	  0, 4, 20400,			// Ctrl-D between beeps
-	  2,
-	  {
-		{250, 400, 20000},	// first beep at 20 seconds
-		{0, 0, 20400},	// sees Ctrl-D, sound off, return
-	  }},
-
-	{ "VbBootDeveloperSoundTest( normal, Ctrl-U not allowed )",
-	  0, 21, 10000,                          // Ctrl-U at 10 seconds
-	  5,
-	  {
-		{120, 400, 10000},	// complains about Ctrl-U (one beep)
-		{120, 400, 10240},	// complains about Ctrl-U (two beeps)
-		{250, 400, 20000},	// starts first beep at 20 seconds
-		{250, 400, 20510},	// starts second beep
-		{0, 0, 30020},	// returns at 30 seconds + 360ms
-	  }},
-};
-
-/* Mock data */
-static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]
-	__attribute__((aligned(VB2_WORKBUF_ALIGN)));
-static struct vb2_context *ctx;
-static struct vb2_shared_data *sd;
-static struct vb2_gbb_header gbb;
-static uint32_t current_time;
-static uint32_t current_ticks;
-static int current_event;
-static int max_events;
-static int matched_events;
-static int kbd_fire_at;
-static uint32_t kbd_fire_key;
-static note_event_t *expected_event;
-
-/* Audio open count, so we can reset it */
-extern int audio_open_count;
-
-/* Reset mock data (for use before each test) */
-static void ResetMocks(void)
-{
-	TEST_SUCC(vb2api_init(workbuf, sizeof(workbuf), &ctx),
-		  "vb2api_init failed");
-	vb2_nv_init(ctx);
-
-	sd = vb2_get_sd(ctx);
-
-	ctx->flags |= VB2_CONTEXT_NO_SECDATA_FWMP;
-	sd->status |= VB2_SD_STATUS_SECDATA_FWMP_INIT;
-
-	memset(&gbb, 0, sizeof(gbb));
-
-	current_ticks = 0;
-	current_time = 0;
-
-	current_event = 0;
-	kbd_fire_at = 0;
-	kbd_fire_key = 0;
-	audio_open_count = 0;
-
-	matched_events = 0;
-	max_events = 0;
-}
-
-/****************************************************************************/
-/* Mocked verification functions */
-struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c)
-{
-	return &gbb;
-}
-
-vb2_error_t vb2ex_commit_data(struct vb2_context *c)
-{
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbExDiskGetInfo(VbDiskInfo** infos_ptr, uint32_t* count,
-			    uint32_t disk_flags)
-{
-	return VB2_ERROR_UNKNOWN;
-}
-
-vb2_error_t VbExDiskFreeInfo(VbDiskInfo* infos,
-			     VbExDiskHandle_t preserve_handle)
-{
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbExDiskRead(VbExDiskHandle_t handle, uint64_t lba_start,
-			 uint64_t lba_count, void* buffer)
-{
-	return VB2_ERROR_UNKNOWN;
-}
-
-vb2_error_t VbExDiskWrite(VbExDiskHandle_t handle, uint64_t lba_start,
-			  uint64_t lba_count, const void* buffer)
-{
-	return VB2_ERROR_UNKNOWN;
-}
-
-uint32_t VbExIsShutdownRequested(void)
-{
-	return 0;
-}
-
-uint32_t VbExKeyboardRead(void)
-{
-	uint32_t tmp;
-	uint32_t now;
-
-	vb2ex_msleep(KBD_READ_TIME);
-	now = current_time;
-
-	if (kbd_fire_key && now >= kbd_fire_at) {
-		VB2_DEBUG("returning %d at %d msec\n",
-			  kbd_fire_key, now);
-		tmp = kbd_fire_key;
-		kbd_fire_key = 0;
-		return tmp;
-	}
-	VB2_DEBUG("returning %d at %d msec\n", 0, now);
-	return 0;
-}
-
-void vb2ex_msleep(uint32_t msec)
-{
-	current_ticks += msec;
-	current_time = current_ticks;
-	VB2_DEBUG("msec=%d at %d msec\n", msec, current_time);
-}
-
-uint32_t vb2ex_mtime(void)
-{
-	return current_ticks;
-}
-
-void vb2ex_beep(uint32_t msec, uint32_t frequency)
-{
-	VB2_DEBUG("msec=%d, frequency=%d at %d msec\n",
-		  msec, frequency, current_time);
-
-	if (current_event < max_events &&
-	    msec == expected_event[current_event].msec &&
-	    frequency == expected_event[current_event].freq &&
-	    (current_time - expected_event[current_event].time) < TIME_FUZZ)
-		matched_events++;
-
-	if (msec)
-		vb2ex_msleep(msec);
-	current_event++;
-}
-
-vb2_error_t VbExDisplayScreen(uint32_t screen_type, uint32_t locale,
-			      const VbScreenData *data)
-{
-	switch (screen_type) {
-		case VB_SCREEN_BLANK:
-			VB2_DEBUG("screen_type=BLANK\n");
-			break;
-		case VB_SCREEN_DEVELOPER_WARNING:
-			VB2_DEBUG("screen_type=DEV\n");
-			break;
-		case VB_SCREEN_RECOVERY_INSERT:
-			VB2_DEBUG("screen_type=INSERT\n");
-			break;
-		case VB_SCREEN_RECOVERY_NO_GOOD:
-			VB2_DEBUG("screen_type=NO_GOOD\n");
-			break;
-		case VB_SCREEN_OS_BROKEN:
-			VB2_DEBUG("screen_type=BROKEN\n");
-			break;
-		default:
-			VB2_DEBUG("screen_type=%#x\n", screen_type);
-	}
-
-	VB2_DEBUG("current_time is %d msec\n", current_time);
-
-	return VB2_SUCCESS;
-}
-
-/****************************************************************************/
-
-static void VbBootDeveloperSoundTest(void)
-{
-	int i;
-	int num_tests =  sizeof(test) / sizeof(test_case_t);
-
-	for (i = 0; i < num_tests; i++) {
-		VB2_DEBUG("STARTING %s ...\n", test[i].name);
-		ResetMocks();
-		gbb.flags = test[i].gbb_flags;
-		kbd_fire_key = test[i].keypress_key;
-		kbd_fire_at = test[i].keypress_at_count;
-		max_events = test[i].num_events;
-		expected_event = test[i].notes;
-		VbBootDeveloperLegacyClamshell(ctx);
-		vb2ex_beep(0, 0);  /* Dummy call to determine end time */
-		VB2_DEBUG("INFO: matched %d total %d expected %d\n",
-			  matched_events, current_event, test[i].num_events);
-		TEST_TRUE(matched_events == test[i].num_events &&
-			  current_event == test[i].num_events, test[i].name);
-	}
-}
-
-int main(int argc, char* argv[])
-{
-	VbBootDeveloperSoundTest();
-	return gTestSuccess ? 0 : 255;
-}
diff --git a/tests/vboot_ui_legacy_clamshell_tests.c b/tests/vboot_ui_legacy_clamshell_tests.c
deleted file mode 100644
index d33cb71..0000000
--- a/tests/vboot_ui_legacy_clamshell_tests.c
+++ /dev/null
@@ -1,1655 +0,0 @@
-/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Tests for vboot_api_kernel, part 2
- */
-
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2secdata.h"
-#include "2secdata_struct.h"
-#include "host_common.h"
-#include "load_kernel_fw.h"
-#include "test_common.h"
-#include "tss_constants.h"
-#include "vboot_audio.h"
-#include "vboot_kernel.h"
-#include "vboot_struct.h"
-#include "vboot_test.h"
-#include "vboot_ui_legacy.h"
-
-/* Mock data */
-static LoadKernelParams lkp;
-static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]
-	__attribute__((aligned(VB2_WORKBUF_ALIGN)));
-static struct vb2_context *ctx;
-static struct vb2_shared_data *sd;
-static struct vb2_gbb_header gbb;
-static struct vb2_secdata_fwmp *fwmp;
-
-static int audio_looping_calls_left;
-static uint32_t vbtlk_retval;
-static int vbtlk_expect_fixed;
-static int vbtlk_expect_removable;
-static int vbexlegacy_called;
-static enum VbAltFwIndex_t altfw_num;
-static uint32_t current_ticks;
-static int trust_ec;
-static int virtdev_set;
-static uint32_t virtdev_fail;
-static uint32_t mock_keypress[16];
-static uint32_t mock_keyflags[8];
-static uint32_t mock_keypress_count;
-
-#define GPIO_SHUTDOWN   1
-#define GPIO_PRESENCE   2
-#define GPIO_LID_CLOSED 4
-typedef struct GpioState {
-	uint32_t gpio_flags;
-	uint32_t count;
-} GpioState;
-struct GpioState mock_gpio[8];
-static uint32_t mock_gpio_count;
-
-static uint32_t screens_displayed[8];
-static uint32_t screens_count = 0;
-static uint32_t mock_num_disks[8];
-static uint32_t mock_num_disks_count;
-static int tpm_set_mode_called;
-static enum vb2_tpm_mode tpm_mode;
-
-/* Extra character to guarantee null termination. */
-static char set_vendor_data[VENDOR_DATA_LENGTH + 2];
-static int set_vendor_data_called;
-
-/*
- * Mocks the assertion of 1 or more gpios in |gpio_flags| for 100 ticks after
- * an optional |ticks| delay.
- */
-static void MockGpioAfter(uint32_t ticks, uint32_t gpio_flags)
-{
-	uint32_t index = 0;
-	if (ticks > 0)
-		mock_gpio[index++].count = ticks - 1;
-
-	mock_gpio[index].gpio_flags = gpio_flags;
-	mock_gpio[index].count = 100;
-}
-
-/* Reset mock data (for use before each test) */
-static void ResetMocks(void)
-{
-	vb2_reset_power_button();
-
-	memset(&lkp, 0, sizeof(lkp));
-
-	TEST_SUCC(vb2api_init(workbuf, sizeof(workbuf), &ctx),
-		  "vb2api_init failed");
-	vb2_nv_init(ctx);
-
-	sd = vb2_get_sd(ctx);
-	sd->flags |= VB2_SD_FLAG_DISPLAY_AVAILABLE;
-
-	/* CRC will be invalid after here, but nobody's checking */
-	sd->status |= VB2_SD_STATUS_SECDATA_FWMP_INIT;
-	fwmp = (struct vb2_secdata_fwmp *)ctx->secdata_fwmp;
-
-	memset(&gbb, 0, sizeof(gbb));
-
-	audio_looping_calls_left = 30;
-	vbtlk_retval = VB2_ERROR_MOCK;
-	vbtlk_expect_fixed = 0;
-	vbtlk_expect_removable = 0;
-	vbexlegacy_called = 0;
-	altfw_num = -100;
-	current_ticks = 0;
-	trust_ec = 0;
-	virtdev_set = 0;
-	virtdev_fail = 0;
-	set_vendor_data_called = 0;
-
-	memset(screens_displayed, 0, sizeof(screens_displayed));
-	screens_count = 0;
-
-	memset(mock_keypress, 0, sizeof(mock_keypress));
-	memset(mock_keyflags, 0, sizeof(mock_keyflags));
-	mock_keypress_count = 0;
-	memset(mock_gpio, 0, sizeof(mock_gpio));
-	mock_gpio_count = 0;
-	memset(mock_num_disks, 0, sizeof(mock_num_disks));
-	mock_num_disks_count = 0;
-
-	tpm_set_mode_called = 0;
-	tpm_mode = VB2_TPM_MODE_ENABLED_TENTATIVE;
-}
-
-/* Mock functions */
-
-struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c)
-{
-	return &gbb;
-}
-
-uint32_t VbExIsShutdownRequested(void)
-{
-	uint32_t result = 0;
-	if (mock_gpio_count >= ARRAY_SIZE(mock_gpio))
-		return 0;
-	if (mock_gpio[mock_gpio_count].gpio_flags & GPIO_SHUTDOWN)
-		result |= VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-	if (mock_gpio[mock_gpio_count].gpio_flags & GPIO_LID_CLOSED)
-		result |= VB_SHUTDOWN_REQUEST_LID_CLOSED;
-	if (mock_gpio[mock_gpio_count].count > 0) {
-		--mock_gpio[mock_gpio_count].count;
-	} else {
-		++mock_gpio_count;
-	}
-	return result;
-}
-
-uint32_t VbExKeyboardRead(void)
-{
-	return VbExKeyboardReadWithFlags(NULL);
-}
-
-uint32_t VbExKeyboardReadWithFlags(uint32_t *key_flags)
-{
-	if (mock_keypress_count < ARRAY_SIZE(mock_keypress)) {
-		if (key_flags != NULL &&
-		    mock_keypress_count < ARRAY_SIZE(mock_keyflags))
-			*key_flags = mock_keyflags[mock_keypress_count];
-		return mock_keypress[mock_keypress_count++];
-	} else
-		return 0;
-}
-
-int vb2ex_physical_presence_pressed(void)
-{
-	uint32_t result = 0;
-
-	if (mock_gpio_count >= ARRAY_SIZE(mock_gpio))
-		return 0;
-
-	if ((mock_gpio[mock_gpio_count].gpio_flags & GPIO_PRESENCE))
-		result = 1;
-
-	if (mock_gpio[mock_gpio_count].count > 0)
-		--mock_gpio[mock_gpio_count].count;
-	else
-		++mock_gpio_count;
-
-	return result;
-}
-
-vb2_error_t VbExLegacy(enum VbAltFwIndex_t _altfw_num)
-{
-	vbexlegacy_called++;
-	altfw_num = _altfw_num;
-
-	/* VbExLegacy() can only return failure, or not return at all. */
-	return VB2_ERROR_UNKNOWN;
-}
-
-void vb2ex_msleep(uint32_t msec)
-{
-	current_ticks += msec;
-}
-
-uint32_t vb2ex_mtime(void)
-{
-	return current_ticks;
-}
-
-vb2_error_t VbExDiskGetInfo(VbDiskInfo **infos_ptr, uint32_t *count,
-			    uint32_t disk_flags)
-{
-	if (mock_num_disks_count < ARRAY_SIZE(mock_num_disks)) {
-		if (mock_num_disks[mock_num_disks_count] == -1)
-			return VB2_ERROR_MOCK;
-		else
-			*count = mock_num_disks[mock_num_disks_count++];
-	} else {
-		*count = 0;
-	}
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbExDiskFreeInfo(VbDiskInfo *infos,
-			     VbExDiskHandle_t preserve_handle)
-{
-	return VB2_SUCCESS;
-}
-
-int vb2ex_ec_trusted(void)
-{
-	return trust_ec;
-}
-
-int vb2_audio_looping(void)
-{
-	if (audio_looping_calls_left == 0)
-		return 0;
-	else if (audio_looping_calls_left > 0)
-		audio_looping_calls_left--;
-
-	return 1;
-}
-
-vb2_error_t VbTryLoadKernel(struct vb2_context *c, uint32_t get_info_flags)
-{
-	/*
-	 * TODO: Currently we don't have a good way of testing for an ordered
-	 * sequence of VB_DISK_FLAG_FIXED and then VB_DISK_FLAG_REMOVABLE.  If
-	 * both are set, then just assume success.
-	 */
-	if (vbtlk_expect_fixed && vbtlk_expect_removable)
-		return vbtlk_retval;
-
-	TEST_EQ(!!vbtlk_expect_fixed,
-		!!(get_info_flags & VB_DISK_FLAG_FIXED),
-		"  VbTryLoadKernel unexpected fixed disk call");
-	TEST_EQ(!!vbtlk_expect_removable,
-		!!(get_info_flags & VB_DISK_FLAG_REMOVABLE),
-		"  VbTryLoadKernel unexpected removable disk call");
-
-	return vbtlk_retval;
-}
-
-vb2_error_t VbDisplayScreen(struct vb2_context *c, uint32_t screen, int force,
-			    const VbScreenData *data)
-{
-	if (screens_count < ARRAY_SIZE(screens_displayed))
-		screens_displayed[screens_count++] = screen;
-
-	return VB2_SUCCESS;
-}
-
-void vb2_enable_developer_mode(struct vb2_context *c)
-{
-	VB2_ASSERT(!virtdev_fail);
-	virtdev_set = 1;
-}
-
-vb2_error_t VbExSetVendorData(const char *vendor_data_value)
-{
-	set_vendor_data_called = 1;
-	/*
-	 * set_vendor_data is a global variable, so it is automatically
-	 * initialized to zero, and so the -1 will ensure the string is null
-	 * terminated.
-	 */
-	strncpy(set_vendor_data, vendor_data_value, sizeof(set_vendor_data) - 1);
-
-	return VB2_SUCCESS;
-}
-
-vb2_error_t vb2ex_tpm_set_mode(enum vb2_tpm_mode mode_val)
-{
-	tpm_set_mode_called = 1;
-
-	/* Fail if the TPM is already disabled. */
-	if (tpm_mode == VB2_TPM_MODE_DISABLED)
-		return VB2_ERROR_UNKNOWN;
-
-	tpm_mode = mode_val;
-	return VB2_SUCCESS;
-}
-
-/* Tests */
-
-/*
- * Helper function to test VbUserConfirms against a sequence of gpio events.
- * caller specifies a sequence of gpio events and the expected confirm vs.
- * reboot result.
- *
- * Non-asserted gpios are used for 5 events, then 'first' for 5 events,
- * 'second' for 5 events, and 'third' for 5 events.
- * Typically most tests want 5 events of each type (so they'll specify 0 for
- * 'first' and use 'second' through 'fourth'), but a few tests want the
- * shutdown event to be seen once.
- */
-static void VbUserConfirmsTestGpio(uint32_t first, uint32_t second,
-				   uint32_t third, uint32_t confirm,
-				   const char *msg)
-{
-	ResetMocks();
-	mock_gpio[0].gpio_flags = 0;
-	mock_gpio[0].count = 4;
-	mock_gpio[1].gpio_flags = first;
-	mock_gpio[1].count = 4;
-	mock_gpio[2].gpio_flags = second;
-	mock_gpio[2].count = 4;
-	mock_gpio[3].gpio_flags = third;
-	mock_gpio[3].count = 4;
-	if (confirm) {
-		TEST_EQ(VbUserConfirms(ctx,
-			VB_CONFIRM_SPACE_MEANS_NO |
-			VB_CONFIRM_MUST_TRUST_KEYBOARD),
-			1, msg);
-	} else {
-		TEST_EQ(VbUserConfirms(ctx,
-			VB_CONFIRM_SPACE_MEANS_NO |
-			VB_CONFIRM_MUST_TRUST_KEYBOARD),
-			-1, msg);
-	}
-}
-
-static void VbUserConfirmsKeyboardTest(void)
-{
-	VB2_DEBUG("Testing VbUserConfirms()...\n");
-
-	ResetMocks();
-	MockGpioAfter(1, GPIO_SHUTDOWN);
-	TEST_EQ(VbUserConfirms(ctx, 0), -1, "Shutdown requested");
-
-	ResetMocks();
-	mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbUserConfirms(ctx, 0), -1, "Shutdown requested");
-
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_ENTER;
-	TEST_EQ(VbUserConfirms(ctx, 0), 1, "Enter");
-
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_ESC;
-	TEST_EQ(VbUserConfirms(ctx, 0), 0, "Esc");
-
-	ResetMocks();
-	mock_keypress[0] = ' ';
-	MockGpioAfter(1, GPIO_SHUTDOWN);
-	TEST_EQ(VbUserConfirms(ctx, VB_CONFIRM_SPACE_MEANS_NO), 0,
-		"Space means no");
-
-	ResetMocks();
-	mock_keypress[0] = ' ';
-	MockGpioAfter(1, GPIO_SHUTDOWN);
-	TEST_EQ(VbUserConfirms(ctx, 0), -1, "Space ignored");
-
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_ENTER;
-	mock_keyflags[0] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	TEST_EQ(VbUserConfirms(ctx, VB_CONFIRM_MUST_TRUST_KEYBOARD),
-		1, "Enter with trusted keyboard");
-
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_ENTER;	/* untrusted */
-	mock_keypress[1] = ' ';
-	TEST_EQ(VbUserConfirms(ctx,
-			       VB_CONFIRM_SPACE_MEANS_NO |
-			       VB_CONFIRM_MUST_TRUST_KEYBOARD),
-		0, "Untrusted keyboard");
-
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_ENTER;
-	mock_keypress[1] = 'y';
-	mock_keypress[2] = 'z';
-	mock_keypress[3] = ' ';
-	mock_gpio[0].gpio_flags = GPIO_PRESENCE;
-	mock_gpio[0].count = ~0;
-	TEST_EQ(VbUserConfirms(ctx,
-			       VB_CONFIRM_SPACE_MEANS_NO |
-			       VB_CONFIRM_MUST_TRUST_KEYBOARD),
-		0, "Recovery button stuck");
-
-	VB2_DEBUG("...done.\n");
-}
-
-static void VbUserConfirmsPhysicalPresenceTest(void)
-{
-	ResetMocks();
-	MockGpioAfter(0, GPIO_PRESENCE);
-	TEST_EQ(VbUserConfirms(ctx,
-			       VB_CONFIRM_SPACE_MEANS_NO |
-			       VB_CONFIRM_MUST_TRUST_KEYBOARD),
-		1, "Presence button");
-
-	/*
-	 * List of possiblities for shutdown and physical presence events that
-	 * occur over time.  Time advanced from left to right (where each
-	 * represents the gpio[s] that are seen during a given iteration of
-	 * the loop).  The meaning of the characters:
-	 *
-	 *   _ means no gpio
-	 *   s means shutdown gpio
-	 *   p means presence gpio
-	 *   B means both shutdown and presence gpio
-	 *
-	 *  1: ______ppp______ -> confirm
-	 *  2: ______sss______ -> shutdown
-	 *  3: ___pppsss______ -> confirm
-	 *  4: ___sssppp______ -> shutdown
-	 *  5: ___pppBBB______ -> confirm
-	 *  6: ___pppBBBppp___ -> shutdown
-	 *  7: ___pppBBBsss___ -> confirm
-	 *  8: ___sssBBB______ -> confirm
-	 *  9: ___sssBBBppp___ -> shutdown
-	 * 10: ___sssBBBsss___ -> confirm
-	 * 11: ______BBB______ -> confirm
-	 * 12: ______BBBsss___ -> confirm
-	 * 13: ______BBBppp___ -> shutdown
-	 */
-
-	/* 1: presence means confirm */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE, 0, 0, 1, "presence");
-
-	/* 2: shutdown means shutdown */
-	VbUserConfirmsTestGpio(GPIO_SHUTDOWN, 0, 0, 0, "shutdown");
-
-	/* 3: presence then shutdown means confirm */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE, GPIO_SHUTDOWN, 0, 1,
-			       "presence then shutdown");
-
-	/* 4: shutdown then presence means shutdown */
-	VbUserConfirmsTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE, 0, 0,
-			       "shutdown then presence");
-
-	/* 5: presence then shutdown+presence then none mean confirm */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       0, 1, "presence, both, none");
-
-	/* 6: presence then shutdown+presence then presence means shutdown */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       GPIO_PRESENCE, 0, "presence, both, presence");
-
-	/* 7: presence then shutdown+presence then shutdown means confirm */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       GPIO_SHUTDOWN, 1, "presence, both, shutdown");
-
-	/* 8: shutdown then shutdown+presence then none means confirm */
-	VbUserConfirmsTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       0, 1, "shutdown, both, none");
-
-	/* 9: shutdown then shutdown+presence then presence means shutdown */
-	VbUserConfirmsTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       GPIO_PRESENCE, 0, "shutdown, both, presence");
-
-	/* 10: shutdown then shutdown+presence then shutdown means confirm */
-	VbUserConfirmsTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       GPIO_SHUTDOWN, 1, "shutdown, both, shutdown");
-
-	/* 11: shutdown+presence then none means confirm */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN, 0, 0, 1,
-			       "both");
-
-	/* 12: shutdown+presence then shutdown means confirm */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       GPIO_SHUTDOWN, 0, 1, "both, shutdown");
-
-	/* 13: shutdown+presence then presence means shutdown */
-	VbUserConfirmsTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN,
-			       GPIO_PRESENCE, 0, 0, "both, presence");
-
-}
-
-static void VbBootDevTest(void)
-{
-	int key;
-
-	VB2_DEBUG("Testing VbBootDeveloperLegacyClamshell()...\n");
-
-	/* Proceed after timeout */
-	ResetMocks();
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Timeout");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING,
-		"  warning screen");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-
-	/* Proceed to legacy after timeout if GBB flag set */
-	ResetMocks();
-	gbb.flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY |
-			VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Timeout");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-
-	/* Proceed to legacy after timeout if GBB flag set */
-	ResetMocks();
-	gbb.flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY |
-			VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Timeout");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-
-	/* Proceed to legacy after timeout if boot legacy and default boot
-	   legacy are set */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY);
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Timeout");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-
-	/* Proceed to legacy boot mode only if enabled */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY);
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Timeout");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Proceed to external disk after timeout if boot external and default
-	 * boot external are set */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	vbtlk_retval = VB2_SUCCESS;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), 0, "Ctrl+U external");
-
-	/* Proceed to external boot mode only if enabled */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Timeout");
-
-	/* If no external tries fixed disk */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	vbtlk_expect_fixed = 1;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+U enabled");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Up arrow is uninteresting / passed to VbCheckDisplayKey() */
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_UP;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Up arrow");
-
-	/* Shutdown requested in loop */
-	ResetMocks();
-	mock_gpio[0].gpio_flags = 0;
-	mock_gpio[0].count = 2;
-	mock_gpio[1].gpio_flags = GPIO_SHUTDOWN;
-	mock_gpio[1].count = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-
-	/* Shutdown requested by keyboard in loop */
-	ResetMocks();
-	mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested by keyboard");
-
-	/* Space asks to disable virtual dev switch */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = ' ';
-	mock_keypress[1] = VB_KEY_ENTER;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Space = tonorm");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_TO_NORM,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_TO_NORM_CONFIRMED,
-		"  confirm screen");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1,
-		"  disable dev request");
-
-	/* Space-space doesn't disable it */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = ' ';
-	mock_keypress[1] = ' ';
-	mock_keypress[2] = VB_KEY_ESC;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Space-space");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_TO_NORM,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING,
-		"  warning screen");
-
-	/* Enter doesn't by default */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = VB_KEY_ENTER;
-	mock_keypress[1] = VB_KEY_ENTER;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter ignored");
-
-	/* Enter does if GBB flag set */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	gbb.flags |= VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM;
-	mock_keypress[0] = VB_KEY_ENTER;
-	mock_keypress[1] = VB_KEY_ENTER;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter = tonorm");
-
-	/* Tonorm ignored if GBB forces dev switch on */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON;
-	mock_keypress[0] = ' ';
-	mock_keypress[1] = VB_KEY_ENTER;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Can't tonorm gbb-dev");
-
-	/* Shutdown requested at tonorm screen */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = ' ';
-	MockGpioAfter(3, GPIO_SHUTDOWN);
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested at tonorm");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_TO_NORM,
-		"  tonorm screen");
-
-	/* Shutdown requested by keyboard at tonorm screen */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested by keyboard at nonorm");
-
-	/* Ctrl+D dismisses warning */
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Ctrl+D");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Ctrl+D doesn't boot legacy even if GBB flag is set */
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	gbb.flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK, "Ctrl+D");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Ctrl+L tries legacy boot mode only if enabled */
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+L normal");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Enter altfw menu and time out */
-	ResetMocks();
-	MockGpioAfter(1000, GPIO_SHUTDOWN);
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_SHUTDOWN,
-		"Ctrl+L force legacy");
-	TEST_EQ(vbexlegacy_called, 0, "  try legacy");
-
-	/* Enter altfw menu and select firmware 0 */
-	ResetMocks();
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = '0';
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+L force legacy");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-
-	/* Enter altfw menu and then exit it */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = VB_KEY_ESC;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+L nv legacy");
-	TEST_EQ(vbexlegacy_called, 0, "  try legacy");
-
-	/* Enter altfw menu and select firmware 0 */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = '0';
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+L nv legacy");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-
-	/* Enter altfw menu and select firmware 0 */
-	ResetMocks();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_ENABLE_LEGACY;
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = '0';
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+L fwmp legacy");
-	TEST_EQ(vbexlegacy_called, 1, "  fwmp legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-
-	/* Pressing 1-9 boots alternative firmware only if enabled */
-	for (key = '1'; key <= '9'; key++) {
-		ResetMocks();
-		mock_keypress[0] = key;
-		vbtlk_expect_fixed = 1;
-		TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-			"'1' normal");
-		TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-		ResetMocks();
-		gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-		mock_keypress[0] = key;
-		vbtlk_expect_fixed = 1;
-		TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-			"Ctrl+L force legacy");
-		TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-		TEST_EQ(altfw_num, key - '0', "  check altfw_num");
-
-		ResetMocks();
-		vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-		mock_keypress[0] = key;
-		vbtlk_expect_fixed = 1;
-		TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-			"Ctrl+L nv legacy");
-		TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-		TEST_EQ(altfw_num, key - '0', "  check altfw_num");
-
-		ResetMocks();
-		fwmp->flags |= VB2_SECDATA_FWMP_DEV_ENABLE_LEGACY;
-		mock_keypress[0] = key;
-		vbtlk_expect_fixed = 1;
-		TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-			"Ctrl+L fwmp legacy");
-		TEST_EQ(vbexlegacy_called, 1, "  fwmp legacy");
-		TEST_EQ(altfw_num, key - '0', "  check altfw_num");
-	}
-
-	/* Ctrl+U boots external only if enabled */
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+U normal");
-
-	/* Ctrl+U enabled, with good external boot */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_retval = VB2_SUCCESS;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), 0, "Ctrl+U external");
-
-	/* Ctrl+U enabled via GBB */
-	ResetMocks();
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_USB;
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_retval = VB2_SUCCESS;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), 0, "Ctrl+U force external");
-
-	/* Ctrl+U enabled via FWMP */
-	ResetMocks();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_ENABLE_EXTERNAL;
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_retval = VB2_SUCCESS;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), 0, "Ctrl+U force external");
-
-	/* If no external disk, eventually times out and tries internal disk */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	/* TODO: Currently the test suite has no way of specifying the order in
-	   which the expected VbTryLoadKernel calls occur. */
-	vbtlk_expect_fixed = 1;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Ctrl+U enabled");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-
-	/* If dev mode is disabled, goes to TONORM screen repeatedly */
-	ResetMocks();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
-	mock_keypress[0] = VB_KEY_ESC;  /* Just causes TONORM again */
-	mock_keypress[1] = VB_KEY_ENTER;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"FWMP dev disabled");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_TO_NORM,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_TO_NORM,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_TO_NORM_CONFIRMED,
-		"  confirm screen");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1,
-		"  disable dev request");
-
-	/* Shutdown requested when dev disabled */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
-	MockGpioAfter(1, GPIO_SHUTDOWN);
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested when dev disabled");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_TO_NORM,
-		"  tonorm screen");
-
-	/* Shutdown requested by keyboard when dev disabled */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
-	mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested by keyboard when dev disabled");
-
-	VB2_DEBUG("...done.\n");
-}
-
-static void VbBootDevVendorDataTest(void)
-{
-	/* Enter set vendor data and reboot */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '3';
-	mock_keypress[3] = '2';
-	mock_keypress[4] = '1';
-	mock_keypress[5] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[6] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data, don't confirm, esc");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "4321", "  Vendor data correct");
-
-	/* Enter set vendor data; don't confirm and esc */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '3';
-	mock_keypress[3] = '2';
-	mock_keypress[4] = '1';
-	mock_keypress[5] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[6] = VB_KEY_RIGHT;  /* Select NO */
-	mock_keypress[7] = VB_KEY_ENTER;  /* Do not confirm vendor data */
-	mock_keypress[8] = VB_KEY_ESC;  /* Escape to boot */
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data, don't confirm, esc");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
-	/* Enter set vendor data; esc, don't confirm, and change last character */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '3';
-	mock_keypress[3] = '2';
-	mock_keypress[4] = '1';
-	mock_keypress[5] = VB_KEY_ENTER;
-	mock_keypress[6] = VB_KEY_RIGHT;  /* Select NO */
-	mock_keypress[7] = VB_KEY_ENTER;  /* Do not confirm vendor data */
-	mock_keypress[8] = VB_KEY_BACKSPACE;  /* Remove last character */
-	mock_keypress[9] = 'B';
-	mock_keypress[10] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[11] = VB_KEY_ENTER;  /* Confirm vendor data */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data esc, don't confirm, change last character");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "432B", "  Vendor data correct");
-
-	/* Enter set vendor data; extra keys ignored */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '3';
-	mock_keypress[3] = '2';
-	mock_keypress[4] = '1';
-	mock_keypress[5] = '5';
-	mock_keypress[6] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[7] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data extra keys ignored");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "4321", "  Vendor data correct");
-
-	/* Enter set vendor data; converts case */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = 'a';
-	mock_keypress[2] = 'B';
-	mock_keypress[3] = 'Y';
-	mock_keypress[4] = 'z';
-	mock_keypress[5] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[6] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data converts case");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "ABYZ", "  Vendor data correct");
-
-	/* Enter set vendor data; backspace works */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = 'A';
-	mock_keypress[2] = 'B';
-	mock_keypress[3] = 'C';
-	mock_keypress[4] = VB_KEY_BACKSPACE;
-	mock_keypress[5] = VB_KEY_BACKSPACE;
-	mock_keypress[6] = '3';
-	mock_keypress[7] = '2';
-	mock_keypress[8] = '1';
-	mock_keypress[9] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[10] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data backspace works");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "A321", "  Vendor data correct");
-
-	/* Enter set vendor data; invalid chars don't print */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '-';
-	mock_keypress[3] = '^';
-	mock_keypress[4] = '&';
-	mock_keypress[5] = '$';
-	mock_keypress[6] = '.';
-	mock_keypress[7] = '3';
-	mock_keypress[8] = '2';
-	mock_keypress[9] = '1';
-	mock_keypress[10] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[11] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data invalid chars don't print");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "4321", "  Vendor data correct");
-
-	/* Enter set vendor data; invalid chars don't print with backspace */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '-';
-	mock_keypress[3] = VB_KEY_BACKSPACE;  /* Should delete 4 */
-	mock_keypress[4] = '3';
-	mock_keypress[5] = '2';
-	mock_keypress[6] = '1';
-	mock_keypress[7] = '0';
-	mock_keypress[8] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[9] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data invalid chars don't print with backspace");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "3210", "  Vendor data correct");
-
-	/* Enter set vendor data; backspace only doesn't underrun */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = 'A';
-	mock_keypress[2] = VB_KEY_BACKSPACE;
-	mock_keypress[3] = VB_KEY_BACKSPACE;
-	mock_keypress[4] = '4';
-	mock_keypress[5] = '3';
-	mock_keypress[6] = '2';
-	mock_keypress[7] = '1';
-	mock_keypress[8] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[9] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data backspace only doesn't underrun");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "4321", "  Vendor data correct");
-
-	/* Enter set vendor data; vowels not allowed after first char */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = 'A';
-	mock_keypress[2] = 'A';
-	mock_keypress[3] = 'B';
-	mock_keypress[4] = 'E';
-	mock_keypress[5] = 'i';
-	mock_keypress[6] = 'C';
-	mock_keypress[7] = 'O';
-	mock_keypress[8] = 'u';
-	mock_keypress[9] = 'D';
-	mock_keypress[10] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[11] = VB_KEY_ENTER;  /* Confirm vendor data (Default YES) */
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Enter set vendor data vowels not allowed after first char");
-	TEST_EQ(set_vendor_data_called, 1, "  VbExSetVendorData() called");
-	TEST_STR_EQ(set_vendor_data, "ABCD", "  Vendor data correct");
-
-	/* Enter set vendor data; too short */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '1';
-	mock_keypress[2] = '2';
-	mock_keypress[3] = '3';
-	/* Set vendor data (nothing happens) */
-	mock_keypress[4] = VB_KEY_ENTER;
-	/* Confirm vendor data (nothing happens) */
-	mock_keypress[5] = VB_KEY_ENTER;
-	mock_keypress[6] = VB_KEY_ESC;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data too short");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
-	/* Enter set vendor data; esc from set screen */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = VB_KEY_ESC;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data esc from set screen");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
-	/* Enter set vendor data; esc from set screen with tag */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '3';
-	mock_keypress[3] = '2';
-	mock_keypress[4] = '1';
-	mock_keypress[5] = VB_KEY_ESC;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data esc from set screen with tag");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
-	/* Enter set vendor data; esc from confirm screen */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ENTER;  /* Enter vendor data setting */
-	mock_keypress[1] = '4';
-	mock_keypress[2] = '3';
-	mock_keypress[3] = '2';
-	mock_keypress[4] = '1';
-	mock_keypress[5] = VB_KEY_ENTER;  /* Set vendor data */
-	mock_keypress[6] = VB_KEY_ESC;
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data esc from set screen");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
-	/* Escape from vendor data warning screen */
-	ResetMocks();
-	ctx->flags |= VB2_CONTEXT_VENDOR_DATA_SETTABLE;
-	mock_keypress[0] = VB_KEY_ESC;  /* Enter vendor data setting */
-	vbtlk_expect_fixed = 1;
-	TEST_EQ(VbBootDeveloperLegacyClamshell(ctx), VB2_ERROR_MOCK,
-		"Enter set vendor data esc, don't confirm, change last character");
-	TEST_EQ(set_vendor_data_called, 0, "  VbExSetVendorData() not called");
-
-	VB2_DEBUG("...done.\n");
-}
-
-/*
- * Helper function to test VbBootRecovery against a sequence of gpio events.
- * caller specifies a sequence of gpio events and the expected confirm vs.
- * reboot result.
- *
- * Non-asserted gpios are used for 5 events, then 'first' for 5 events,
- * 'second' for 5 events, and 'third' for 5 events.
- */
-static void VbBootRecTestGpio(uint32_t first, uint32_t second, uint32_t third,
-			      uint32_t confirm, const char *msg)
-{
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	trust_ec = 1;
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	mock_gpio[0].gpio_flags = 0;
-	mock_gpio[0].count = 4;
-	mock_gpio[1].gpio_flags = first;
-	mock_gpio[1].count = 4;
-	mock_gpio[2].gpio_flags = second;
-	mock_gpio[2].count = 4;
-	mock_gpio[3].gpio_flags = third;
-	mock_gpio[3].count = 4;
-	vbtlk_expect_removable = 1;
-
-	if (confirm) {
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_REBOOT_EC_TO_RO, msg);
-		TEST_EQ(virtdev_set, 1, "  virtual dev mode on");
-		TEST_EQ(vb2_nv_get(ctx, VB2_NV_DEV_BOOT_EXTERNAL),
-			!!BOOT_EXTERNAL_ON_DEV,
-			"  NV_DEV_BOOT_EXTERNAL enabled");
-	} else {
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_SHUTDOWN, msg);
-		TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	}
-}
-
-static void VbBootRecTest(void)
-{
-	VB2_DEBUG("Testing VbBootRecoveryLegacyClamshell()...\n");
-
-	/* Shutdown requested in loop */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested");
-
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-
-	/* Shutdown requested by keyboard */
-	ResetMocks();
-	mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested by keyboard");
-
-	/* Ignore power button held on boot */
-	ResetMocks();
-	mock_gpio[0].gpio_flags = GPIO_SHUTDOWN;
-	mock_gpio[0].count = 10;
-	mock_gpio[1].gpio_flags = 0;
-	mock_gpio[1].count = 10;
-	mock_gpio[2].gpio_flags = GPIO_SHUTDOWN;
-	mock_gpio[2].count = 10;
-	mock_gpio[3].gpio_flags = 0;
-	mock_gpio[3].count = 100;
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	trust_ec = 1;
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Ignore power button held on boot");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	/* Shutdown should happen while we're sending the 2nd block of events */
-
-	/* Broken screen */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_num_disks[0] = 1;
-	mock_num_disks[1] = 1;
-	mock_num_disks[2] = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Broken");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-
-	/* Broken screen even if dev switch is on */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_num_disks[0] = 1;
-	mock_num_disks[1] = 1;
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Broken (dev)");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-
-	/* Force insert screen with GBB flag */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	gbb.flags |= VB2_GBB_FLAG_FORCE_MANUAL_RECOVERY;
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Insert (forced by GBB)");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-
-	/* No removal if recovery button physically pressed */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_num_disks[0] = 1;
-	mock_num_disks[1] = 1;
-	sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"No remove in rec");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-
-	/* Removal if no disk initially found, but found on second attempt */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_num_disks[0] = 0;
-	mock_num_disks[1] = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Remove");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-
-	/* Bad disk count doesn't require removal */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_num_disks[0] = -1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Bad disk count");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-
-	/* Ctrl+D ignored for many reasons... */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	trust_ec = 0;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Ctrl+D ignored if EC not trusted");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_NEQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV,
-		 "  todev screen");
-
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY | VB2_SD_FLAG_DEV_MODE_ENABLED;
-	trust_ec = 1;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Ctrl+D ignored if already in dev mode");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_NEQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV,
-		 "  todev screen");
-
-	ResetMocks();
-	trust_ec = 1;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Ctrl+D ignored if recovery not manually triggered");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_NEQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV,
-		 "  todev screen");
-
-	/* Ctrl+D then space means don't enable */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	MockGpioAfter(2, GPIO_SHUTDOWN);
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	trust_ec = 1;
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	mock_keypress[1] = ' ';
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Ctrl+D todev abort");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV,
-		"  todev screen");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-
-	/* Ctrl+D then enter means enable */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	trust_ec = 1;
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	mock_keypress[1] = VB_KEY_ENTER;
-	mock_keyflags[1] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_REBOOT_EC_TO_RO,
-		"Ctrl+D todev confirm via enter");
-	TEST_EQ(virtdev_set, 1, "  virtual dev mode on");
-
-	/* Don't handle TPM error in enabling dev mode */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	trust_ec = 1;
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	mock_keypress[1] = VB_KEY_ENTER;
-	mock_keyflags[1] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	virtdev_fail = 1;
-	vbtlk_expect_removable = 1;
-	TEST_ABORT(VbBootRecoveryLegacyClamshell(ctx),
-		   "Ctrl+D todev failure");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode still off");
-
-	/* Test Diagnostic Mode via Ctrl-C - display available */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	trust_ec = 1;
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_keypress[0] = VB_KEY_CTRL('C');
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 0,
-		"todiag is zero");
-	vbtlk_expect_removable = 1;
-	if (DIAGNOSTIC_UI)
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_REBOOT,
-			"Ctrl+C todiag - enabled");
-	else
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_SHUTDOWN,
-			"Ctrl+C todiag - disabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), DIAGNOSTIC_UI,
-		"  todiag is updated for Ctrl-C");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
-		"  todiag doesn't set unneeded DISPLAY_REQUEST");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-
-	/* Test Diagnostic Mode via F12 - display disabled */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	sd->flags &= ~VB2_SD_FLAG_DISPLAY_AVAILABLE;
-	trust_ec = 1;
-	vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_keypress[0] = VB_KEY_F(12);
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 0,
-		"todiag is zero");
-	vbtlk_expect_removable = 1;
-	if (DIAGNOSTIC_UI)
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_REBOOT,
-			"F12 todiag - enabled");
-	else
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_SHUTDOWN,
-			"F12 todiag - disabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), DIAGNOSTIC_UI,
-		"  todiag is updated for F12");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
-		"  todiag doesn't set unneeded DISPLAY_REQUEST");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-
-	/* Test Diagnostic Mode via Ctrl-C OS broken - display available */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_SHUTDOWN);
-	mock_keypress[0] = VB_KEY_CTRL('C');
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 0,
-		"todiag is zero");
-	if (DIAGNOSTIC_UI)
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_REBOOT,
-			"Ctrl+C todiag os broken - enabled");
-	else
-		TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-			VB2_REQUEST_SHUTDOWN,
-			"Ctrl+C todiag os broken - disabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), DIAGNOSTIC_UI,
-		"  todiag is updated for Ctrl-C");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
-		"  todiag doesn't set unneeded DISPLAY_REQUEST");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  os broken screen");
-
-	VB2_DEBUG("...done.\n");
-}
-
-static void VbBootRecPhysicalPresenceTest(void)
-{
-
-	/* Ctrl+D ignored because the physical presence switch is still pressed
-	   and we don't like that. */
-	ResetMocks();
-	sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
-	trust_ec = 1;
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	mock_gpio[0].gpio_flags = GPIO_PRESENCE;
-	mock_gpio[0].count = 100;
-	mock_gpio[1].gpio_flags = GPIO_PRESENCE | GPIO_SHUTDOWN;
-	mock_gpio[1].count = 100;
-	vbtlk_expect_removable = 1;
-	TEST_EQ(VbBootRecoveryLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN,
-		"Ctrl+D ignored if phys pres button is still pressed");
-	TEST_NEQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV,
-		 "  todev screen");
-
-	/*
-	 * List of possiblities for shutdown and physical presence events that
-	 * occur over time.  Time advanced from left to right (where each
-	 * represents the gpio[s] that are seen during a given iteration of
-	 * the loop).  The meaning of the characters:
-	 *
-	 *   _ means no gpio
-	 *   s means shutdown gpio
-	 *   p means presence gpio
-	 *   B means both shutdown and presence gpio
-	 *
-	 *  1: ______ppp______ -> confirm
-	 *  2: ______sss______ -> shutdown
-	 *  3: ___pppsss______ -> confirm
-	 *  4: ___sssppp______ -> shutdown
-	 *  5: ___pppBBB______ -> confirm
-	 *  6: ___pppBBBppp___ -> shutdown
-	 *  7: ___pppBBBsss___ -> confirm
-	 *  8: ___sssBBB______ -> confirm
-	 *  9: ___sssBBBppp___ -> shutdown
-	 * 10: ___sssBBBsss___ -> confirm
-	 * 11: ______BBB______ -> confirm
-	 * 12: ______BBBsss___ -> confirm
-	 * 13: ______BBBppp___ -> shutdown
-	 */
-
-	/* 1: Ctrl+D then presence means enable */
-	VbBootRecTestGpio(GPIO_PRESENCE, 0, 0, 1,
-			  "Ctrl+D todev confirm via presence");
-
-	/* 2: Ctrl+D then shutdown means shutdown */
-	VbBootRecTestGpio(GPIO_SHUTDOWN, 0, 0, 0,
-			  "Ctrl+D todev then shutdown");
-
-	/* 3: Ctrl+D then presence then shutdown means confirm */
-	VbBootRecTestGpio(GPIO_PRESENCE, GPIO_SHUTDOWN, 0, 1,
-			  "Ctrl+D todev confirm via presence then shutdown");
-
-	/* 4: Ctrl+D then 2+ instance shutdown then presence means shutdown */
-	VbBootRecTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE, 0, 0,
-			  "Ctrl+D todev then 2+ shutdown then presence");
-
-	/* 5: Ctrl+D then presence then shutdown+presence then none */
-	VbBootRecTestGpio(GPIO_PRESENCE, GPIO_PRESENCE | GPIO_SHUTDOWN, 0, 1,
-			  "Ctrl+D todev confirm via presence, both, none");
-
-	/* 6: Ctrl+D then presence then shutdown+presence then presence */
-	VbBootRecTestGpio(GPIO_PRESENCE, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			  GPIO_PRESENCE, 0,
-			  "Ctrl+D todev confirm via presence, both, presence");
-
-	/* 7: Ctrl+D then presence then shutdown+presence then shutdown */
-	VbBootRecTestGpio(GPIO_PRESENCE, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			  GPIO_SHUTDOWN, 1,
-			  "Ctrl+D todev confirm via presence, both, shutdown");
-
-	/* 8: Ctrl+D then shutdown then shutdown+presence then none */
-	VbBootRecTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE | GPIO_SHUTDOWN, 0, 1,
-			  "Ctrl+D todev then 2+ shutdown, both, none");
-
-	/* 9: Ctrl+D then shutdown then shutdown+presence then presence */
-	VbBootRecTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			  GPIO_PRESENCE, 0,
-			  "Ctrl+D todev then 2+ shutdown, both, presence");
-
-	/* 10: Ctrl+D then shutdown then shutdown+presence then shutdown */
-	VbBootRecTestGpio(GPIO_SHUTDOWN, GPIO_PRESENCE | GPIO_SHUTDOWN,
-			  GPIO_SHUTDOWN, 1,
-			  "Ctrl+D todev then 2+ shutdown, both, shutdown");
-
-	/* 11: Ctrl+D then shutdown+presence then none */
-	VbBootRecTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN, 0, 0, 1,
-			  "Ctrl+D todev confirm via both then none");
-
-	/* 12: Ctrl+D then shutdown+presence then shutdown */
-	VbBootRecTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN, GPIO_SHUTDOWN, 0, 1,
-			  "Ctrl+D todev confirm via both then shutdown");
-
-	/* 13: Ctrl+D then shutdown+presence then presence */
-	VbBootRecTestGpio(GPIO_PRESENCE | GPIO_SHUTDOWN, GPIO_PRESENCE, 0, 0,
-			  "Ctrl+D todev confirm via both then presence");
-}
-
-static void VbBootDiagTest(void)
-{
-	VB2_DEBUG("Testing VbBootDiagnosticLegacyClamshell()...\n");
-
-	/* No key pressed - timeout. */
-	ResetMocks();
-	TEST_EQ(VbBootDiagnosticLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Timeout");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_CONFIRM_DIAG,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK,
-		"  blank screen");
-	TEST_EQ(tpm_set_mode_called, 0, "  no tpm call");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(current_ticks, 30 * VB2_MSEC_PER_SEC,
-		"  waited for 30 seconds");
-
-	/* Esc key pressed. */
-	ResetMocks();
-	mock_keypress[0] = VB_KEY_ESC;
-	TEST_EQ(VbBootDiagnosticLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Esc key");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_CONFIRM_DIAG,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK,
-		"  blank screen");
-	TEST_EQ(tpm_set_mode_called, 0, "  no tpm call");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(current_ticks, 0, "  didn't wait at all");
-
-	/* Shutdown requested via lid close */
-	ResetMocks();
-	MockGpioAfter(10, GPIO_LID_CLOSED);
-	TEST_EQ(VbBootDiagnosticLegacyClamshell(ctx),
-		VB2_REQUEST_SHUTDOWN, "Shutdown");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_CONFIRM_DIAG,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK,
-		"  blank screen");
-	TEST_EQ(tpm_set_mode_called, 0, "  no tpm call");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_TRUE(current_ticks < VB2_MSEC_PER_SEC, "  didn't wait long");
-
-	/* Power button pressed but not released. */
-	ResetMocks();
-	mock_gpio[0].gpio_flags = GPIO_PRESENCE;
-	mock_gpio[0].count = ~0;
-	TEST_EQ(VbBootDiagnosticLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Power held");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_CONFIRM_DIAG,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK,
-		"  blank screen");
-	TEST_EQ(tpm_set_mode_called, 0, "  no tpm call");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Power button is pressed and released. */
-	ResetMocks();
-	MockGpioAfter(3, GPIO_PRESENCE);
-	TEST_EQ(VbBootDiagnosticLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Confirm");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_CONFIRM_DIAG,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK,
-		"  blank screen");
-	TEST_EQ(tpm_set_mode_called, 1, "  tpm call");
-	TEST_EQ(tpm_mode, VB2_TPM_MODE_DISABLED, "  tpm disabled");
-	TEST_EQ(vbexlegacy_called, 1, "  legacy");
-	TEST_EQ(altfw_num, VB_ALTFW_DIAGNOSTIC, "  check altfw_num");
-	/*
-	 * Ideally we'd that no recovery request was recorded, but
-	 * VbExLegacy() can only fail or crash the tests.
-	 */
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST),
-		VB2_RECOVERY_ALTFW_HASH_FAILED,
-		"  recovery request");
-
-	/* Power button confirm, but now with a TPM failure. */
-	ResetMocks();
-	tpm_mode = VB2_TPM_MODE_DISABLED;
-	mock_gpio[0].gpio_flags = 0;
-	mock_gpio[0].count = 2;
-	mock_gpio[1].gpio_flags = GPIO_PRESENCE;
-	mock_gpio[1].count = 2;
-	TEST_EQ(VbBootDiagnosticLegacyClamshell(ctx), VB2_REQUEST_REBOOT,
-		"Confirm but tpm fail");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_CONFIRM_DIAG,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK,
-		"  blank screen");
-	TEST_EQ(tpm_set_mode_called, 1, "  tpm call");
-	TEST_EQ(tpm_mode, VB2_TPM_MODE_DISABLED, "  tpm disabled");
-	TEST_EQ(vbexlegacy_called, 0, "  legacy not called");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST),
-		VB2_RECOVERY_TPM_DISABLE_FAILED,
-		"  recovery request");
-
-	VB2_DEBUG("...done.\n");
-}
-
-
-int main(void)
-{
-	VbUserConfirmsKeyboardTest();
-	if (!PHYSICAL_PRESENCE_KEYBOARD)
-		VbUserConfirmsPhysicalPresenceTest();
-	VbBootDevTest();
-	VbBootDevVendorDataTest();
-	VbBootRecTest();
-	if (!PHYSICAL_PRESENCE_KEYBOARD)
-		VbBootRecPhysicalPresenceTest();
-	if (DIAGNOSTIC_UI)
-		VbBootDiagTest();
-
-	return gTestSuccess ? 0 : 255;
-}
diff --git a/tests/vboot_ui_legacy_menu_tests.c b/tests/vboot_ui_legacy_menu_tests.c
deleted file mode 100644
index 1dc9253..0000000
--- a/tests/vboot_ui_legacy_menu_tests.c
+++ /dev/null
@@ -1,2349 +0,0 @@
-/* Copyright 2017 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Tests legacy menu UI
- */
-
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2secdata.h"
-#include "2secdata_struct.h"
-#include "host_common.h"
-#include "load_kernel_fw.h"
-#include "test_common.h"
-#include "tss_constants.h"
-#include "vboot_api.h"
-#include "vboot_audio.h"
-#include "vboot_kernel.h"
-#include "vboot_struct.h"
-#include "vboot_test.h"
-#include "vboot_ui_legacy.h"
-#include "vboot_ui_legacy_menu_private.h"
-
-/* Mock data */
-static LoadKernelParams lkp;
-static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]
-	__attribute__((aligned(VB2_WORKBUF_ALIGN)));
-static struct vb2_context *ctx;
-static struct vb2_shared_data *sd;
-static struct vb2_gbb_header gbb;
-static struct vb2_secdata_fwmp *fwmp;
-
-static int shutdown_request_calls_left;
-static int audio_looping_calls_left;
-static vb2_error_t vbtlk_retval[5];
-static vb2_error_t vbtlk_last_retval;
-static int vbtlk_retval_count;
-static const vb2_error_t vbtlk_retval_fixed = 1002;
-static int vbexlegacy_called;
-static enum VbAltFwIndex_t altfw_num;
-static int debug_info_displayed;
-static int trust_ec;
-static int virtdev_set;
-static uint32_t virtdev_fail;
-static uint32_t mock_keypress[64];
-static uint32_t mock_keyflags[64];
-static uint32_t mock_keypress_count;
-static uint32_t screens_displayed[64];
-static uint32_t screens_count = 0;
-static uint32_t beeps_played[64];
-static uint32_t beeps_count = 0;
-static uint32_t mock_altfw_mask;
-static int vbexaltfwmask_called;
-
-/* Reset mock data (for use before each test) */
-static void ResetMocks(void)
-{
-	memset(&lkp, 0, sizeof(lkp));
-
-	TEST_SUCC(vb2api_init(workbuf, sizeof(workbuf), &ctx),
-		  "vb2api_init failed");
-	vb2_nv_init(ctx);
-
-	sd = vb2_get_sd(ctx);
-
-	/* CRC will be invalid after here, but nobody's checking */
-	sd->status |= VB2_SD_STATUS_SECDATA_FWMP_INIT;
-	fwmp = (struct vb2_secdata_fwmp *)ctx->secdata_fwmp;
-
-	memset(&gbb, 0, sizeof(gbb));
-
-	/* In recovery we have 50 keyscans per disk scan, this must be high. */
-	shutdown_request_calls_left = 301;
-	audio_looping_calls_left = 60;
-	vbexlegacy_called = 0;
-	altfw_num = -100;
-	debug_info_displayed = 0;
-	trust_ec = 0;
-	virtdev_set = 0;
-	virtdev_fail = 0;
-
-	vbtlk_last_retval = vbtlk_retval_fixed - VB_DISK_FLAG_FIXED;
-	memset(vbtlk_retval, 0, sizeof(vbtlk_retval));
-	vbtlk_retval_count = 0;
-
-	memset(screens_displayed, 0, sizeof(screens_displayed));
-	screens_count = 0;
-	memset(beeps_played, 0, sizeof(beeps_played));
-	beeps_count = 0;
-
-	memset(mock_keypress, 0, sizeof(mock_keypress));
-	memset(mock_keyflags, 0, sizeof(mock_keyflags));
-	mock_keypress_count = 0;
-
-	mock_altfw_mask = 3 << 1;	/* This mask selects 1 and 2 */
-	vbexaltfwmask_called = 0;
-}
-
-static void ResetMocksForDeveloper(void)
-{
-	ResetMocks();
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	shutdown_request_calls_left = -1;
-}
-
-static void ResetMocksForManualRecovery(void)
-{
-	ResetMocks();
-	sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY;
-	trust_ec = 1;
-}
-
-/* Mock functions */
-
-struct vb2_gbb_header *vb2_get_gbb(struct vb2_context *c)
-{
-	return &gbb;
-}
-
-uint32_t vb2ex_get_locale_count(void) {
-	return 1;
-}
-
-uint32_t VbExGetAltFwIdxMask() {
-
-	vbexaltfwmask_called++;
-
-	return mock_altfw_mask;
-}
-
-uint32_t VbExIsShutdownRequested(void)
-{
-	if (shutdown_request_calls_left == 0)
-		return 1;
-	else if (shutdown_request_calls_left > 0)
-		shutdown_request_calls_left--;
-
-	return 0;
-}
-
-uint32_t VbExKeyboardRead(void)
-{
-	return VbExKeyboardReadWithFlags(NULL);
-}
-
-uint32_t VbExKeyboardReadWithFlags(uint32_t *key_flags)
-{
-	if (mock_keypress_count < ARRAY_SIZE(mock_keypress)) {
-		if (key_flags != NULL)
-			*key_flags = mock_keyflags[mock_keypress_count];
-		return mock_keypress[mock_keypress_count++];
-	} else
-		return 0;
-}
-
-vb2_error_t VbExLegacy(enum VbAltFwIndex_t _altfw_num)
-{
-	vbexlegacy_called++;
-	altfw_num = _altfw_num;
-
-	return 0;
-}
-
-int vb2ex_ec_trusted(void)
-{
-	return trust_ec;
-}
-
-int vb2_audio_looping(void)
-{
-	if (audio_looping_calls_left == 0)
-		return 0;
-	else if (audio_looping_calls_left > 0)
-		audio_looping_calls_left--;
-
-	return 1;
-}
-
-vb2_error_t VbTryLoadKernel(struct vb2_context *c, uint32_t get_info_flags)
-{
-	if (vbtlk_retval_count < ARRAY_SIZE(vbtlk_retval) &&
-	    vbtlk_retval[vbtlk_retval_count] != 0)
-		vbtlk_last_retval = vbtlk_retval[vbtlk_retval_count++];
-	return vbtlk_last_retval + get_info_flags;
-}
-
-vb2_error_t VbDisplayScreen(struct vb2_context *c, uint32_t screen, int force,
-			    const VbScreenData *data)
-{
-	if (screens_count < ARRAY_SIZE(screens_displayed))
-		screens_displayed[screens_count++] = screen;
-	VB2_DEBUG("screens_displayed[%d] = %#x\n",
-		  screens_count - 1, screen);
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbDisplayMenu(struct vb2_context *c, uint32_t screen, int force,
-			  uint32_t selected_index, uint32_t disabled_idx_mask)
-{
-	if (screens_count < ARRAY_SIZE(screens_displayed))
-		screens_displayed[screens_count++] = screen;
-	else
-		VB2_DEBUG("Ran out of screens_displayed entries!\n");
-	VB2_DEBUG("screens_displayed[%d] = %#x,"
-		  " selected_index = %u, disabled_idx_mask = %#x\n",
-		  screens_count - 1, screen,
-		  selected_index, disabled_idx_mask);
-
-	return VB2_SUCCESS;
-}
-
-vb2_error_t VbDisplayDebugInfo(struct vb2_context *c)
-{
-	debug_info_displayed = 1;
-	return VB2_SUCCESS;
-}
-
-void vb2ex_beep(uint32_t msec, uint32_t frequency)
-{
-	if (beeps_count < ARRAY_SIZE(beeps_played))
-		beeps_played[beeps_count++] = frequency;
-	VB2_DEBUG("beeps_played[%d] = %dHz for %dms\n",
-		  beeps_count - 1, frequency, msec);
-}
-
-void vb2_enable_developer_mode(struct vb2_context *c)
-{
-	VB2_ASSERT(!virtdev_fail);
-	virtdev_set = 1;
-}
-
-/* Tests */
-
-static void VbBootDevTest(void)
-{
-	int i;
-
-	VB2_DEBUG("Testing VbBootDeveloperLegacyMenu()...\n");
-
-	/* Proceed after timeout */
-	ResetMocksForDeveloper();
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed, "Timeout");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 0, "  no beeps on normal boot");
-
-	/* Proceed to legacy after timeout if GBB flag set */
-	ResetMocksForDeveloper();
-	gbb.flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY |
-		     VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"default legacy GBB");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 1, "  error beep: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Proceed to legacy after timeout if boot legacy and default boot
-	 * legacy are set */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY);
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"default legacy NV");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 1, "  error beep: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Proceed to legacy boot mode only if enabled */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"default legacy not enabled");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 2, "  error beeps: legacy boot not enabled");
-	TEST_EQ(beeps_played[0], 400, "    first error beep");
-	TEST_EQ(beeps_played[1], 400, "    second error beep");
-
-	/* Proceed to usb after timeout if boot usb and default boot
-	 * usb are set */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), 0, "Ctrl+U USB");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* Proceed to usb boot mode only if enabled */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"default USB not enabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 2, "  error beeps: USB boot not enabled");
-	TEST_EQ(beeps_played[0], 400, "    first error beep");
-	TEST_EQ(beeps_played[1], 400, "    second error beep");
-
-	/* If no USB tries fixed disk */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"default USB with no disk");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 1, "  error beep: USB not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Shutdown requested in loop */
-	ResetMocksForDeveloper();
-	shutdown_request_calls_left = 2;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/*
-	 * Pushing power should shut down the DUT because default
-	 * selection is power off
-	 */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"dev warning menu: default to power off");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Selecting Power Off in developer options. */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Power Off
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Power Off in DEVELOPER");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* Pressing ENTER is equivalent to power button. */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_KEY_ENTER;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"dev warning menu: ENTER is power button");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* ENTER functionality is unaffected by GBB flag in detachable UI. */
-	ResetMocksForDeveloper();
-	gbb.flags |= VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM;
-	mock_keypress[0] = VB_KEY_ENTER;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"dev warning menu: ENTER unaffected by GBB");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Pressing SPACE or VolUp+Down combo has no effect in dev mode */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = ' ';
-	mock_keypress[1] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS;
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;	// select Power Off
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"SPACE or VolUp+Down have no effect");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Disable developer mode */
-	ResetMocksForDeveloper();
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS;
-	mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_REBOOT,
-		"disable developer mode");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_TO_NORM_CONFIRMED,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 5, "  no extra screens");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1,
-		"  disable dev request");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on reboot");
-
-	/* Tonorm ignored if GBB forces dev switch on */
-	ResetMocksForDeveloper();
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON;
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS;
-	mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Can't tonorm gbb-dev");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: power off");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  wanring screen: enable verification");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen: confirm");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK,
-		"  blank (error flash)");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen: confirm");
-	TEST_EQ(screens_displayed[5], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 6, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timeout");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Shutdown requested at tonorm screen */
-	ResetMocksForDeveloper();
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS;
-	mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
-	shutdown_request_calls_left = 2;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested at tonorm");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		" developer warning screen: power off");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  developer warning screen: enable root verification");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  developer warning screen: power off");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on shutdown");
-
-	/* Ctrl+D dismisses warning */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed, "Ctrl+D");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on normal boot");
-
-	/* Ctrl+D doesn't boot legacy even if GBB flag is set */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_KEY_CTRL('D');
-	gbb.flags |= VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed, "Ctrl+D");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-
-	/* Volume-down long press shortcut acts like Ctrl+D */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_BUTTON_VOL_DOWN_LONG_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"VolDown long press");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0,
-		"  recovery reason");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on normal boot");
-
-	/* Ctrl+L tries legacy boot mode only if enabled */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+L normal");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timed out");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Ctrl+L boots legacy if enabled by GBB flag */
-	ResetMocksForDeveloper();
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_LEGACY;
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+L force legacy");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(altfw_num, 1, "  check altfw_num");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_count, 5, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Ctrl+L boots legacy if enabled by NVRAM */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+L nv legacy");
-	TEST_EQ(vbexlegacy_called, 1, "  try legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_count, 5, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Ctrl+L boots legacy if enabled by FWMP */
-	ResetMocksForDeveloper();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_ENABLE_LEGACY;
-	mock_keypress[0] = VB_KEY_CTRL('L');
-	mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+L fwmp legacy");
-	TEST_EQ(vbexlegacy_called, 1, "  fwmp legacy");
-	TEST_EQ(altfw_num, 1, "  check altfw_num");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 5, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* TODO(sjg@chromium.org): Add a test for there being no bootloaders */
-
-	/* Ctrl+U boots USB only if enabled */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+U not enabled");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timed out");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Ctrl+U enabled, with good USB boot */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS, "Ctrl+U USB");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* Ctrl+U enabled, without valid USB */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+U without valid USB");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 1, "  error beep: USB not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Ctrl+U enabled via GBB */
-	ResetMocksForDeveloper();
-	gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_BOOT_USB;
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS,
-		"Ctrl+U force USB");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* Ctrl+U enabled via FWMP */
-	ResetMocksForDeveloper();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_ENABLE_EXTERNAL;
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS,
-		"Ctrl+U force USB");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* If no valid USB, eventually times out and tries fixed disk */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_KEY_CTRL('U');
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Ctrl+U failed - no USB");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: USB not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Now go to USB boot through menus */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS,
-		"Menu selected USB boot");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* If default USB, the option is preselected */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_EXTERNAL);
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS,
-		"Menu selected USB default boot");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* If invalid USB, we still timeout after selecting it in menu */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Menu selected invalid USB boot");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: USB not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* If USB is disabled, we error flash/beep from the menu option */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Menu selected disabled USB boot");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Boot Legacy via menu and default */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // Enter altfw menu
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // Select first option
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // and again
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	vb2_nv_set(ctx, VB2_NV_DEV_DEFAULT_BOOT,
-		   VB2_DEV_DEFAULT_BOOT_TARGET_LEGACY);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Menu selected legacy boot");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vbexlegacy_called, 2, "  tried legacy boot twice");
-	TEST_EQ(altfw_num, 0, "  check altfw_num");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timeout");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: legacy boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  two error beeps: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-	TEST_EQ(beeps_played[1], 200, "    low-frequency error beep");
-
-	/* Refuse to boot legacy via menu if not enabled */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot Legacy BIOS
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Menu selected legacy boot when not enabled");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vbexlegacy_called, 0, "  did not attempt legacy boot");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timeout");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: legacy boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: legacy boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Use volume-up long press shortcut to boot USB */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS, "VolUp USB");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* Can boot a valid USB image after failing to boot invalid image */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	mock_keypress[1] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	vbtlk_retval[0] = VB2_ERROR_MOCK - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS,
-		"VolUp USB valid after invalid");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: first USB invalid");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Volume-up long press only works if USB is enabled */
-	ResetMocksForDeveloper();
-	mock_keypress[0] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"VolUp not enabled");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timed out");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Volume-up long press without valid USB will still time out */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	mock_keypress[0] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"VolUp without valid USB");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  blank (error flash)");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(audio_looping_calls_left, 0, "  used up audio");
-	TEST_EQ(beeps_count, 1, "  error beep: USB not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-
-	/* Volume-up long press works from other menus, like LANGUAGE */
-	ResetMocksForDeveloper();
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_EXTERNAL, 1);
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Power Off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_SUCCESS,
-		"VolUp USB from LANGUAGE");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on USB boot");
-
-	/* Can disable developer mode through TONORM screen */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enable os verification
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // confirm is the default
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_REBOOT,
-		"TONORM via menu");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1,
-		"  disable dev request");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning: enable os verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm: confirm");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_TO_NORM_CONFIRMED,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps on reboot");
-
-	/* If dev mode is disabled, goes to TONORM screen repeatedly */
-	ResetMocksForDeveloper();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
-	audio_looping_calls_left = 1;	/* Confirm audio doesn't tick down. */
-	i = 0;
-	mock_keypress[i++] = VB_KEY_CTRL('D');  /* Just stays on TONORM and flashes */
-	mock_keypress[i++] = VB_KEY_CTRL('U');  /* same */
-	mock_keypress[i++] = VB_KEY_CTRL('L');  /* same */
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_LONG_PRESS;	/* same */
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_LONG_PRESS;	/* same */
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS;	/* noop */
-	mock_keypress[i++] = VB_KEY_ENTER;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_REBOOT,
-		"FWMP dev disabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 1,
-		"  disable dev request");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_TO_NORM_CONFIRMED,
-		"  confirm screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 10, "  5 * 2 error beeps: booting not allowed");
-	TEST_EQ(beeps_played[0], 400, "    first error beep");
-	TEST_EQ(beeps_played[1], 400, "    second error beep");
-	TEST_EQ(beeps_played[2], 400, "    first error beep");
-	TEST_EQ(beeps_played[3], 400, "    second error beep");
-	TEST_EQ(beeps_played[4], 400, "    first error beep");
-	TEST_EQ(beeps_played[5], 400, "    second error beep");
-	TEST_EQ(beeps_played[6], 400, "    first error beep");
-	TEST_EQ(beeps_played[7], 400, "    second error beep");
-	TEST_EQ(beeps_played[8], 400, "    first error beep");
-	TEST_EQ(beeps_played[9], 400, "    second error beep");
-
-	/* Shutdown requested when dev disabled */
-	ResetMocksForDeveloper();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
-	shutdown_request_calls_left = 1;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested when dev disabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 0,
-		"  did not exit dev mode");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Explicit Power Off when dev disabled */
-	ResetMocksForDeveloper();
-	fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS;	// Power Off
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Power Off when dev disabled");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISABLE_DEV_REQUEST), 0,
-		"  did not exit dev mode");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(audio_looping_calls_left, 0, "  aborts audio");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen: confirm enabling OS verification");
-	/* Cancel option is removed with dev_disable_boot! */
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  tonorm screen: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps for power off");
-
-	/* Show Debug Info displays debug info, then times out to boot */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS Verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Show Debug Info");
-	TEST_EQ(debug_info_displayed, 1, "  debug info displayed");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timed out");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps for debug info");
-
-	/* Pressing Tab displays debug info, then times out to boot */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = '\t';
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"Show Debug Info (Tab shortcut)");
-	TEST_EQ(debug_info_displayed, 1, "  debug info displayed");
-	TEST_EQ(vbexlegacy_called, 0, "  not legacy");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timed out");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps for debug info");
-
-
-	VB2_DEBUG("...done.\n");
-}
-
-static void VbBootRecTest(void)
-{
-	int i;
-
-	VB2_DEBUG("Testing VbBootRecoveryLegacyMenu()...\n");
-
-	/* Shutdown requested in BROKEN */
-	ResetMocks();
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested in BROKEN");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-	TEST_EQ(vbexaltfwmask_called, 0, "  VbExGetAltFwIdxMask not called");
-
-	/* BROKEN screen with disks inserted */
-	ResetMocks();
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[2] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[3] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested in BROKEN with disks");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* BROKEN screen with disks on second attempt */
-	ResetMocks();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested in BROKEN with later disk");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* BROKEN screen even if dev switch is on */
-	ResetMocks();
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[2] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested in BROKEN with dev switch");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* go to INSERT if recovery button physically pressed and EC trusted */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested in INSERT with manual rec");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* go to INSERT if forced by GBB flag */
-	ResetMocks();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	gbb.flags |= VB2_GBB_FLAG_FORCE_MANUAL_RECOVERY;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shutdown requested in INSERT forced by GBB flag");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Stay at BROKEN if recovery button not physically pressed */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	sd->flags &= ~VB2_SD_FLAG_MANUAL_RECOVERY;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Go to BROKEN if recovery not manually requested");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Stay at BROKEN if EC is untrusted */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	trust_ec = 0;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Go to BROKEN if EC is not trusted");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* INSERT boots without screens if we have a valid image on first try */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_ERROR_MOCK - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_SUCCESS,
-		"INSERT boots without screens if valid on first try");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 1, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* INSERT boots eventually if we get a valid image later */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[2] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[3] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[4] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_SUCCESS,
-		"INSERT boots after valid image appears");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* invalid image, then remove, then valid image */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_MOCK - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[2] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[3] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[4] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_SUCCESS,
-		"INSERT boots after valid image appears");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 3, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep on shutdown");
-
-	/* Shortcuts that are always ignored in BROKEN for detachables. */
-	ResetMocks();
-	i = 0;
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_KEY_CTRL('D');
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_KEY_CTRL('U');
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_KEY_CTRL('L');
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS;
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_LONG_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shortcuts ignored in BROKEN");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from invalid keys");
-
-	/* Shortcuts that are always ignored in INSERT for detachables. */
-	ResetMocksForManualRecovery();
-	i = 0;
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_KEY_CTRL('D');
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_KEY_CTRL('U');
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_KEY_CTRL('L');
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_LONG_PRESS;
-	mock_keypress[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_LONG_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Shortcuts ignored in INSERT");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from invalid keys");
-
-	/* Power Off BROKEN through OPTIONS menu */
-	ResetMocks();
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter options
-	mock_keypress[1] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Power Off BROKEN through OPTIONS");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_OPTIONS_MENU,
-		"  options: cancel");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_OPTIONS_MENU,
-		"  options: power off");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from power off");
-
-	/* Power Off NOGOOD through OPTIONS menu */
-	ResetMocksForManualRecovery();
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter options
-	mock_keypress[1] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Power Off NOGOOD through OPTIONS");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_OPTIONS_MENU,
-		"  options: cancel");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_OPTIONS_MENU,
-		"  options: power off");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from power off");
-
-	/* Power Off INSERT through TO_DEV menu */
-	ResetMocksForManualRecovery();
-	mock_keyflags[0] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[0] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter to_dev
-	mock_keyflags[1] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[1] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Power Off INSERT through TO_DEV");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to_dev: cancel");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to_dev: power off");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from power off");
-
-	/* Show Debug Info from BROKEN through OPTIONS menu */
-	ResetMocks();
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter options
-	mock_keypress[1] = VB_BUTTON_VOL_UP_SHORT_PRESS; // show debug info
-	mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Show Debug info from BROKEN through OPTIONS");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 1, "  no debug info");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_OPTIONS_MENU,
-		"  options: cancel");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_OPTIONS_MENU,
-		"  options: show debug info");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 4, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from power off");
-
-	/* Show Debug Info on NOGOOD with Tab */
-	ResetMocksForManualRecovery();
-	mock_keypress[0] = '\t';
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Show Debug info on NOGOOD with Tab");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 1, "  no debug info");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 2, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beep from power off");
-
-	/* Navigate to confirm dev mode selection and then cancel */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	i = 0;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter TO_DEV
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // confirm disabling
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // power off
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"go to TO_DEV screen and cancel");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: confirm disabling");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_INSERT,
-		"  back to insert screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Navigate to confirm dev mode selection and then confirm */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	i = 0;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter to_dev
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_REBOOT_EC_TO_RO,
-		"go to TO_DEV screen and confirm");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(virtdev_set, 1, "  virtual dev mode on");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: confirm disabling os verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Untrusted keyboard cannot enter TO_DEV (must be malicious anyway) */
-	ResetMocksForManualRecovery();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // try to_dev
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // try confirm
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Untrusted keyboard cannot enter TO_DEV");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Untrusted keyboard cannot navigate in TO_DEV menu if already there */
-	ResetMocksForManualRecovery();
-	i = 0;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter to_dev
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // try to confirm...
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Untrusted keyboard cannot navigate in TO_DEV");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Don't handle TPM error in enabling dev mode */
-	ResetMocksForManualRecovery();
-	i = 0;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter to_dev
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // confirm enabling
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	virtdev_fail = 1;
-	TEST_ABORT(VbBootRecoveryLegacyMenu(ctx), "todev TPM failure");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  aborted explicitly");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode still off");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  recovery to_dev menu: confirm disabling os verification");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Cannot enable dev mode if already enabled. */
-	ResetMocksForManualRecovery();
-	sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	i = 0;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter to_dev
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Ctrl+D ignored if already in dev mode");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode wasn't enabled again");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 2, "  played error beeps");
-	TEST_EQ(beeps_played[0], 400, "    first beep");
-	TEST_EQ(beeps_played[1], 400, "    second beep");
-
-	/* Removing invalid USB drops back to INSERT from TO_DEV menu. */
-	ResetMocksForManualRecovery();
-	mock_keyflags[0] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[0] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter TO_DEV
-	/* asynchronous transition to INSERT before keypress[50] */
-	mock_keypress[55] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	mock_keypress[56] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[57] = VB_BUTTON_POWER_SHORT_PRESS;
-	vbtlk_retval[0] = VB2_ERROR_MOCK - VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Drop back to INSERT from TO_DEV when removing invalid USB");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev menu");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: power off");
-	TEST_EQ(screens_displayed[5], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 6, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Plugging in invalid USB drops back to NOGOOD from LANGUAGE. */
-	ResetMocksForManualRecovery();
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	mock_keypress[1] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[2] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[3] = VB_BUTTON_POWER_SHORT_PRESS;
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[2] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[3] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[4] = VB2_ERROR_MOCK - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"Drop back to NOGOOD from LANGUAGE when inserting invalid USB");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: power off");
-	TEST_EQ(screens_displayed[3], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: language");
-	TEST_EQ(screens_displayed[4], VB_SCREEN_LANGUAGES_MENU,
-		"  languages menu");
-	TEST_EQ(screens_displayed[5], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[6], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 7, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Plugging in valid USB boots straight from OPTIONS menu. */
-	ResetMocksForManualRecovery();
-	mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	vbtlk_retval[1] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_SUCCESS,
-		"Boot by plugging in USB straight from OPTIONS menu");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  booted explicitly");
-	TEST_EQ(virtdev_set, 0, "  virtual dev mode off");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[1], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[2], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, 3, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	VB2_DEBUG("...done.\n");
-}
-
-static void VbTestLanguageMenu(void)
-{
-	int i;
-
-	VB2_DEBUG("Testing VbTestLanguageMenu()...\n");
-
-	/* Navigate to language menu from BROKEN */
-	ResetMocks();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // languages
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // enter languages
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // cancel -> BROKEN
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // power off
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"go to language menu from BROKEN");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OS_BROKEN,
-		"  broken screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Navigate to all language menus from recovery */
-	ResetMocksForManualRecovery();
-	vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
-		VB_DISK_FLAG_REMOVABLE;
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // languages
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter TO_DEV
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // confirm disabling
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"go to language menus from INSERT");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_INSERT,
-		"  insert screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: confirm disabling os verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: power_off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  to dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* Navigate to all language menus from developer menu */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enable OS verif
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // return to dev_warn
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enable OS verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // show debug info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // developer options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		" scroll through all language menus in developer options");
-	TEST_EQ(debug_info_displayed, 0, "  no debug info");
-	TEST_NEQ(shutdown_request_calls_left, 0, "  powered down explicitly");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu: select current language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: cancel ");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to norm screen: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to norm screen: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to norm screen: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to norm screen: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu: select current language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to norm screen: confirm enabling os verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to norm screen: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  warning screen: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  select developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: boot developer image");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  language menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: boot from disk");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  developer menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	VB2_DEBUG("...done.\n");
-}
-
-static void VbNavigationTest(void)
-{
-	int i;
-
-	VB2_DEBUG("Testing long navigation sequences...");
-
-	/*
-	 * NOGOOD, OPTIONS, LANGUAGE, TODEV, LANGUAGE, TODEV,
-	 * LANGUAGE, select, Cancel, OPTIONS, LANGUAGE
-	 */
-	ResetMocksForManualRecovery();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter TO_DEV
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // confirm enabling
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // (end of menu)
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS; // enter TO_DEV
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // select current lang
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // power off
-	mock_keyflags[i] = VB_KEY_FLAG_TRUSTED_KEYBOARD;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // enter OPTIONS
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // show debug info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // power off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // language
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	TEST_EQ(VbBootRecoveryLegacyMenu(ctx), VB2_REQUEST_SHUTDOWN,
-		"recovery mode long navigation");
-	TEST_EQ(debug_info_displayed, 1, "  showed debug info");
-	TEST_EQ(shutdown_request_calls_left, 0, "  timed out");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  languages menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: confirm enabling");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: confirm enabling");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  languages menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  languages menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_TO_DEV_MENU,
-		"  todev: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_RECOVERY_NO_GOOD,
-		"  nogood screen");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_OPTIONS_MENU,
-		"  options: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_LANGUAGES_MENU,
-		"  languages menu");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 0, "  no beeps");
-
-	/* DEVELOPER, Cancel, Show Debug, TO_NORM, Cancel, Boot Legacy */
-	ResetMocksForDeveloper();
-	i = 0;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot Legacy
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Boot From Disk
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Enable OS verif
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Power Off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Language
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Power Off
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Enable OS verif
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Show Debug Info
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Developer Options
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS;
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Power Off
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Language
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Power Off
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From Disk
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot Legacy
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // Select altfw menu
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Second altfw
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Cancel
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // (end of menu)
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // Back to dev options
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From Disk
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot From USB
-	mock_keypress[i++] = VB_BUTTON_VOL_UP_SHORT_PRESS; // Boot Legacy
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // Select altfw menu
-	mock_keypress[i++] = VB_BUTTON_VOL_DOWN_SHORT_PRESS; // Second altfw
-	mock_keypress[i++] = VB_BUTTON_POWER_SHORT_PRESS; // Select 2nd altfw
-	vb2_nv_set(ctx, VB2_NV_DEV_BOOT_LEGACY, 1);
-	TEST_EQ(VbBootDeveloperLegacyMenu(ctx), vbtlk_retval_fixed,
-		"developer mode long navigation");
-	TEST_EQ(debug_info_displayed, 1, "  showed debug info");
-	TEST_EQ(vbexlegacy_called, 1, "  tried legacy");
-	TEST_EQ(altfw_num, 2, "  check altfw_num");
-	TEST_EQ(audio_looping_calls_left, 0, "  audio timeout");
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, "  no recovery");
-	i = 0;
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: Legacy boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: Legacy boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: USB boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: disk boot");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: confirm enabling");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_TO_NORM_MENU,
-		"  to dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: enable root verification");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: show debug info");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_WARNING_MENU,
-		"  dev warning menu: developer options");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot from disk");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: language");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: power off");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot from disk");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot from USB");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot legacy");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot legacy");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw 1");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw 2");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU,
-		"  altfw cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU,
-		"  altfw end");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: cancel");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot from disk");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot from USB");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_DEVELOPER_MENU,
-		"  dev menu: boot legacy");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK, "  blank (flash)");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_ALT_FW_MENU, "  altfw");
-	TEST_EQ(screens_displayed[i++], VB_SCREEN_BLANK,"  final blank screen");
-	TEST_EQ(screens_count, i, "  no extra screens");
-	TEST_EQ(beeps_count, 1, "  error beep: legacy BIOS not found");
-	TEST_EQ(beeps_played[0], 200, "    low-frequency error beep");
-}
-
-int main(void)
-{
-	VbBootDevTest();
-	VbBootRecTest();
-	VbTestLanguageMenu();
-	VbNavigationTest();
-
-	return gTestSuccess ? 0 : 255;
-}
diff --git a/tests/vboot_ui_legacy_tests.c b/tests/vboot_ui_legacy_tests.c
deleted file mode 100644
index 04da02e..0000000
--- a/tests/vboot_ui_legacy_tests.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Tests for firmware display library.
- */
-
-#include <stdint.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2struct.h"
-#include "2sysincludes.h"
-#include "host_common.h"
-#include "test_common.h"
-#include "vboot_kernel.h"
-#include "vboot_ui_legacy.h"
-
-/* Mock data */
-static char debug_info[4096];
-static struct vb2_context *ctx;
-static struct vb2_shared_data *sd;
-static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]
-	__attribute__((aligned(VB2_WORKBUF_ALIGN)));
-static uint32_t mock_localization_count;
-static uint32_t mock_altfw_mask;
-
-/* Reset mock data (for use before each test) */
-static void ResetMocks(void)
-{
-	mock_localization_count = 3;
-	mock_altfw_mask = 3 << 1;	/* This mask selects 1 and 2 */
-
-	TEST_SUCC(vb2api_init(workbuf, sizeof(workbuf), &ctx),
-		  "vb2api_init failed");
-	vb2_nv_init(ctx);
-
-	sd = vb2_get_sd(ctx);
-
-	*debug_info = 0;
-}
-
-/* Mocks */
-uint32_t vb2ex_get_locale_count(void) {
-
-	return mock_localization_count;
-}
-
-uint32_t VbExGetAltFwIdxMask() {
-	return mock_altfw_mask;
-}
-
-vb2_error_t VbExDisplayDebugInfo(const char *info_str, int full_info)
-{
-	strncpy(debug_info, info_str, sizeof(debug_info));
-	debug_info[sizeof(debug_info) - 1] = '\0';
-	return VB2_SUCCESS;
-}
-
-vb2_error_t vb2ex_commit_data(struct vb2_context *c)
-{
-	return VB2_SUCCESS;
-}
-
-/* Test displaying debug info */
-static void DebugInfoTest(void)
-{
-	/* Display debug info */
-	ResetMocks();
-	TEST_SUCC(VbDisplayDebugInfo(ctx),
-		  "Display debug info");
-	TEST_NEQ(*debug_info, '\0', "  Some debug info was displayed");
-}
-
-/* Test display key checking */
-static void DisplayKeyTest(void)
-{
-	ResetMocks();
-	VbCheckDisplayKey(ctx, 'q', 0, NULL);
-	TEST_EQ(*debug_info, '\0', "DisplayKey q = does nothing");
-
-	ResetMocks();
-	VbCheckDisplayKey(ctx, '\t', 0, NULL);
-	TEST_NEQ(*debug_info, '\0', "DisplayKey tab = display");
-
-	/* Toggle localization */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, 0);
-	VbCheckDisplayKey(ctx, VB_KEY_DOWN, 0, NULL);
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 2,
-		"DisplayKey up");
-	VbCheckDisplayKey(ctx, VB_KEY_LEFT, 0, NULL);
-	vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 1,
-		"DisplayKey left");
-	VbCheckDisplayKey(ctx, VB_KEY_RIGHT, 0, NULL);
-	vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 2,
-		"DisplayKey right");
-	VbCheckDisplayKey(ctx, VB_KEY_UP, 0, NULL);
-	vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 0,
-		"DisplayKey up");
-
-	/* Reset localization if localization count is invalid */
-	ResetMocks();
-	vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, 1);
-	mock_localization_count = 0;
-	VbCheckDisplayKey(ctx, VB_KEY_UP, 0, NULL);
-	TEST_EQ(vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX), 0,
-		"DisplayKey invalid");
-}
-
-int main(void)
-{
-	DebugInfoTest();
-	DisplayKeyTest();
-
-	return gTestSuccess ? 0 : 255;
-}