FAFT: Adding new test firmware_ECLidShutdown

This tests the functionality of the
GBB_FLAG_DISABLE_LID_SHUTDOWN flag.

BUG=chromium:446525
BRANCH=none
TEST=tested on veyron_jerry and samus

Change-Id: I06f8f654513212bdf129c981f9dab9f12c9c54d1
Signed-off-by: Shelley Chen <shchen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/304190
Reviewed-by: Wai-Hong Tam <waihong@chromium.org>
diff --git a/server/cros/faft/firmware_test.py b/server/cros/faft/firmware_test.py
index 6cc7f04..6b0d322 100644
--- a/server/cros/faft/firmware_test.py
+++ b/server/cros/faft/firmware_test.py
@@ -689,6 +689,32 @@
             self.check_ec_capability(['usbpd_uart'], suppress_warning=True)):
             self.servo.set('usbpd_uart_capture', 'off')
 
+    def _get_power_state(self, power_state):
+        """
+        Return the current power state of the AP
+        """
+        return self.ec.send_command_get_output("powerinfo", [power_state])
+
+    def wait_power_state(self, power_state, retries):
+        """
+        Wait for certain power state.
+
+        @param power_state: power state you are expecting
+        @param retries: retries.  This is necessary if AP is powering down
+        and transitioning through different states.
+        """
+        logging.info('Checking power state "%s" maximum %d times.',
+                     power_state, retries)
+        while retries > 0:
+            logging.info("try count: %d" % retries)
+            try:
+                retries = retries - 1
+                ret = self._get_power_state(power_state)
+                return True
+            except error.TestFail:
+                pass
+        return False
+
     def _fetch_servo_log(self):
         """Fetch the servo log."""
         cmd = '[ -e %s ] && cat %s || echo NOTFOUND' % ((self._SERVOD_LOG,) * 2)