Add power_action to run_shutdown_process to skip power_key presses.

- if pre_power_action is lid_open:yes, the subsequent power_key presses
  will result in turning DUT off which will cause the last test in
  firmware_FwScreenCloseLid to fail.

BUG=chrome-os-partner:48216
TEST=Run firmware_FwScreenCloseLid and firmware_FwScreenPressPower on link.

Change-Id: I2bf7fdb5049fa72d2ca5f18c1d254de7eadb0c12
Reviewed-on: https://chromium-review.googlesource.com/315776
Commit-Ready: danny chan <dchan@chromium.org>
Tested-by: danny chan <dchan@chromium.org>
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 fd8136c..f31e228 100644
--- a/server/cros/faft/firmware_test.py
+++ b/server/cros/faft/firmware_test.py
@@ -1074,12 +1074,13 @@
         return ret
 
     def run_shutdown_process(self, shutdown_action, pre_power_action=None,
-            post_power_action=None, shutdown_timeout=None):
+            run_power_action=True, post_power_action=None, shutdown_timeout=None):
         """Run shutdown_action(), which makes DUT shutdown, and power it on.
 
         @param shutdown_action: function which makes DUT shutdown, like
                                 pressing power key.
         @param pre_power_action: function which is called before next power on.
+        @param power_action: power_key press by default, set to None to skip.
         @param post_power_action: function which is called after next power on.
         @param shutdown_timeout: a timeout to confirm DUT shutdown.
         @raise TestFail: if the shutdown_action() failed to turn DUT off.
@@ -1099,7 +1100,8 @@
 
         if pre_power_action:
             self._call_action(pre_power_action)
-        self.servo.power_key(self.faft_config.hold_pwr_button_poweron)
+        if run_power_action:
+            self.servo.power_key(self.faft_config.hold_pwr_button_poweron)
         if post_power_action:
             self._call_action(post_power_action)