Wakeup screen before dismissing keyguard am: f97924d826

Original change: https://android-review.googlesource.com/c/platform/tools/tradefederation/+/3504430

Change-Id: I8037dfe5533c15d2ff9e1f703fa3057ca9e88c4e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/javatests/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetterTest.java b/javatests/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetterTest.java
index 4aecb53..a809870 100644
--- a/javatests/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetterTest.java
+++ b/javatests/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetterTest.java
@@ -47,6 +47,7 @@
     private static final String GET_LOCK_SCREEN_COMMAND = "locksettings get-disabled";
     private static final String LOCK_SCREEN_OFF_COMMAND = "locksettings set-disabled true";
     private static final String CLEAR_PWD_COMMAND = "locksettings clear --old %s";
+    private static final String KEYCODE_WAKEUP_COMMAND = "input keyevent KEYCODE_WAKEUP";
     private static final String KEYCODE_MENU_COMMAND = "input keyevent KEYCODE_MENU";
     private static final String KEYCODE_HOME_COMMAND = "input keyevent KEYCODE_HOME";
 
@@ -71,6 +72,8 @@
     public void setBaseline_lockScreenOff_skipRemovingPasswords() throws Exception {
         when(mMockDevice.executeShellV2Command(GET_LOCK_SCREEN_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, "true"));
+        when(mMockDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_MENU_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_HOME_COMMAND))
@@ -90,6 +93,8 @@
                 .thenReturn(
                         getMockCommandResult(CommandStatus.SUCCESS, "false"),
                         getMockCommandResult(CommandStatus.SUCCESS, "true"));
+        when(mMockDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_MENU_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_HOME_COMMAND))
@@ -100,11 +105,27 @@
         verify(mMockDevice).executeShellV2Command(String.format(CLEAR_PWD_COMMAND, "1234"));
     }
 
-    /** Test that the setter returns false when the baseline is failed to remove lock screen. */
+    /** Test that the setter returns false when the lockscreen is disabled and so not removed. */
     @Test
     public void setBaseline_removeLockScreenFails_returnFalse() throws Exception {
         when(mMockDevice.executeShellV2Command(GET_LOCK_SCREEN_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, "false"));
+        when(mMockDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
+        when(mMockDevice.executeShellV2Command(KEYCODE_MENU_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
+        when(mMockDevice.executeShellV2Command(KEYCODE_HOME_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
+        assertFalse(mSetter.setBaseline(mMockDevice));
+    }
+
+    /** Test that the setter returns false when the baseline is failed to input KEYCODE_WAKEUP. */
+    @Test
+    public void setBaseline_inputKeycodeWakeupFails_returnFalse() throws Exception {
+        when(mMockDevice.executeShellV2Command(GET_LOCK_SCREEN_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, "true"));
+        when(mMockDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.FAILED, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_MENU_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_HOME_COMMAND))
@@ -117,6 +138,8 @@
     public void setBaseline_inputKeycodeMenuFails_returnFalse() throws Exception {
         when(mMockDevice.executeShellV2Command(GET_LOCK_SCREEN_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, "true"));
+        when(mMockDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_MENU_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.FAILED, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_HOME_COMMAND))
@@ -129,6 +152,8 @@
     public void setBaseline_inputKeycodeHomeFails_returnFalse() throws Exception {
         when(mMockDevice.executeShellV2Command(GET_LOCK_SCREEN_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, "true"));
+        when(mMockDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND))
+                .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_MENU_COMMAND))
                 .thenReturn(getMockCommandResult(CommandStatus.SUCCESS, null));
         when(mMockDevice.executeShellV2Command(KEYCODE_HOME_COMMAND))
diff --git a/src/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetter.java b/src/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetter.java
index 80b3b89..d219f85 100644
--- a/src/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetter.java
+++ b/src/com/android/tradefed/suite/checker/baseline/LockSettingsBaselineSetter.java
@@ -36,6 +36,7 @@
     private static final String CLEAR_PWD_COMMAND = "locksettings clear --old %s";
     private static final String KEYCODE_MENU_COMMAND = "input keyevent KEYCODE_MENU";
     private static final String KEYCODE_HOME_COMMAND = "input keyevent KEYCODE_HOME";
+    private static final String KEYCODE_WAKEUP_COMMAND = "input keyevent KEYCODE_WAKEUP";
 
     public LockSettingsBaselineSetter(JSONObject object, String name) throws JSONException {
         super(object, name);
@@ -60,9 +61,11 @@
         if (!isLockScreenDisabled(mDevice)) {
             return false;
         }
+        CommandResult wakeupResult = mDevice.executeShellV2Command(KEYCODE_WAKEUP_COMMAND);
         CommandResult menuResult = mDevice.executeShellV2Command(KEYCODE_MENU_COMMAND);
         CommandResult homeResult = mDevice.executeShellV2Command(KEYCODE_HOME_COMMAND);
-        return CommandStatus.SUCCESS.equals(menuResult.getStatus())
+        return CommandStatus.SUCCESS.equals(wakeupResult.getStatus())
+                && CommandStatus.SUCCESS.equals(menuResult.getStatus())
                 && CommandStatus.SUCCESS.equals(homeResult.getStatus());
     }