diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/vboot_api_kernel2_tests.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c index f9d061f8..3bc3a7f8 100644 --- a/tests/vboot_api_kernel2_tests.c +++ b/tests/vboot_api_kernel2_tests.c @@ -33,6 +33,7 @@ static struct vb2_context ctx; static struct vb2_shared_data *sd; static int shutdown_request_calls_left; +static int shutdown_request_power_held; static int audio_looping_calls_left; static uint32_t vbtlk_retval; static int vbexlegacy_called; @@ -74,6 +75,7 @@ static void ResetMocks(void) sd->vbsd = shared; shutdown_request_calls_left = -1; + shutdown_request_power_held = -1; audio_looping_calls_left = 30; vbtlk_retval = 1000; vbexlegacy_called = 0; @@ -106,6 +108,15 @@ uint32_t VbExIsShutdownRequested(void) else if (shutdown_request_calls_left > 0) shutdown_request_calls_left--; + if (shutdown_request_power_held >= 0) { + /* Hold power button for 10 calls, then release for 10. */ + if (shutdown_request_calls_left % 10 == 0) + shutdown_request_power_held + = !shutdown_request_power_held; + if (shutdown_request_power_held) + return VB_SHUTDOWN_REQUEST_POWER_BUTTON; + } + return 0; } @@ -630,6 +641,26 @@ static void VbBootRecTest(void) VBERROR_SHUTDOWN_REQUESTED, "Shutdown requested by keyboard"); + /* Ignore power button held on boot */ + ResetMocks(); + shutdown_request_calls_left = 100; + shutdown_request_power_held = 1; + shared->flags = VBSD_BOOT_REC_SWITCH_ON; + trust_ec = 1; + vbtlk_retval = VBERROR_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE; + TEST_EQ(VbBootRecovery(&ctx), + VBERROR_SHUTDOWN_REQUESTED, + "Ignore power button held on boot"); + TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT, + " insert screen"); + /* + * shutdown_request_power_held holds power button for 10 calls, then + * releases for 10, then holds again, so expect shutdown after 20: + * 100 - 20 = 80. + */ + TEST_EQ(shutdown_request_calls_left, 80, + " ignore held button"); + /* Broken screen */ ResetMocks(); shutdown_request_calls_left = 100; |