Merge "Merge "HDMICEC: Update HdmiCecPowerStatusTest" am: d01a6c0065" into stage-aosp-rvc-ts-dev
diff --git a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java
index 911d233..c4d8c0d 100644
--- a/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java
+++ b/hostsidetests/hdmicec/src/android/hdmicec/cts/playback/HdmiCecPowerStatusTest.java
@@ -39,8 +39,11 @@
 
     private static final int ON = 0x0;
     private static final int OFF = 0x1;
+    private static final int IN_TRANSITION_TO_STANDBY = 0x3;
 
+    private static final int SLEEP_TIMESTEP_SECONDS = 1;
     private static final int WAIT_TIME = 5;
+    private static final int MAX_SLEEP_TIME = 8;
 
     @Rule
     public HdmiCecClientWrapper hdmiCecClient =
@@ -75,10 +78,16 @@
             device.waitForBootComplete(HdmiCecConstants.REBOOT_TIMEOUT);
             device.executeShellCommand("input keyevent KEYCODE_SLEEP");
             TimeUnit.SECONDS.sleep(WAIT_TIME);
-            hdmiCecClient.sendCecMessage(CecDevice.TV, CecMessage.GIVE_POWER_STATUS);
-            String message = hdmiCecClient.checkExpectedOutput(CecDevice.TV,
-                                                              CecMessage.REPORT_POWER_STATUS);
-            assertEquals(OFF, hdmiCecClient.getParamsFromMessage(message));
+            int waitTimeSeconds = WAIT_TIME;
+            int powerStatus;
+            do {
+                TimeUnit.SECONDS.sleep(SLEEP_TIMESTEP_SECONDS);
+                waitTimeSeconds += SLEEP_TIMESTEP_SECONDS;
+                hdmiCecClient.sendCecMessage(LogicalAddress.TV, CecOperand.GIVE_POWER_STATUS);
+                powerStatus = CecMessage.getParams(hdmiCecClient.checkExpectedOutput(
+                        LogicalAddress.TV, CecOperand.REPORT_POWER_STATUS));
+            } while (powerStatus == IN_TRANSITION_TO_STANDBY && waitTimeSeconds <= MAX_SLEEP_TIME);
+            assertThat(powerStatus).isEqualTo(OFF);
         } finally {
             /* Wake up the device */
             device.executeShellCommand("input keyevent KEYCODE_WAKEUP");