Obtain TV power status correctly in HdmiControlService

Bug: 15845654

Change-Id: I28b97e7ecb462b4fbaf6ac573e4d0fc9fcf724da
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index 810e670..1b88aea 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -215,6 +215,10 @@
         addAndStartAction(new RoutingControlAction(this, newPath, false, callback));
     }
 
+    int getPowerStatus() {
+        return mService.getPowerStatus();
+    }
+
     /**
      * Sends key to a target CEC device.
      *
diff --git a/services/core/java/com/android/server/hdmi/RoutingControlAction.java b/services/core/java/com/android/server/hdmi/RoutingControlAction.java
index 5f3c654..04e5cac 100644
--- a/services/core/java/com/android/server/hdmi/RoutingControlAction.java
+++ b/services/core/java/com/android/server/hdmi/RoutingControlAction.java
@@ -108,9 +108,8 @@
     }
 
     private void handleReportPowerStatus(int devicePowerStatus) {
-        int tvPowerStatus = getTvPowerStatus();
-        if (isPowerStatusOnOrTransientToOn(tvPowerStatus)) {
-            if (isPowerStatusOnOrTransientToOn(devicePowerStatus)) {
+        if (isPowerOnOrTransient(getTvPowerStatus())) {
+            if (isPowerOnOrTransient(devicePowerStatus)) {
                 sendSetStreamPath();
             } else {
                 tv().updateActivePortId(tv().pathToPortId(mCurrentRoutingPath));
@@ -121,11 +120,10 @@
      }
 
     private int getTvPowerStatus() {
-        // TODO: Obtain TV power status.
-        return HdmiCec.POWER_STATUS_ON;
+        return tv().getPowerStatus();
     }
 
-    private static boolean isPowerStatusOnOrTransientToOn(int status) {
+    private static boolean isPowerOnOrTransient(int status) {
         return status == HdmiCec.POWER_STATUS_ON || status == HdmiCec.POWER_STATUS_TRANSIENT_TO_ON;
     }
 
@@ -156,8 +154,7 @@
                 }
                 return;
             case STATE_WAIT_FOR_REPORT_POWER_STATUS:
-                int tvPowerStatus = getTvPowerStatus();
-                if (isPowerStatusOnOrTransientToOn(tvPowerStatus)) {
+                if (isPowerOnOrTransient(getTvPowerStatus())) {
                     tv().updateActivePortId(tv().pathToPortId(mCurrentRoutingPath));
                     sendSetStreamPath();
                 }