summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecNetwork.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java16
2 files changed, 21 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java b/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java
index 180bcdbe7546..1234d7fa0832 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecNetwork.java
@@ -865,10 +865,13 @@ public class HdmiCecNetwork {
* on the current device.
*/
int physicalAddressToPortId(int path) {
+ int physicalAddress = getPhysicalAddress();
+ if (path == physicalAddress) {
+ // The local device isn't connected to any port; assign portId 0
+ return Constants.CEC_SWITCH_HOME;
+ }
int mask = 0xF000;
int finalMask = 0xF000;
- int physicalAddress;
- physicalAddress = getPhysicalAddress();
int maskedAddress = physicalAddress;
while (maskedAddress != 0) {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java
index c478c2343361..017039053222 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecNetworkTest.java
@@ -142,6 +142,22 @@ public class HdmiCecNetworkTest {
}
@Test
+ public void physicalAddressToPort_localDevice_weAreSourceDevice() {
+ mNativeWrapper.setPhysicalAddress(0x2000);
+ mHdmiCecNetwork.initPortInfo();
+ assertThat(mHdmiCecNetwork.physicalAddressToPortId(0x2000))
+ .isEqualTo(Constants.CEC_SWITCH_HOME);
+ }
+
+ @Test
+ public void physicalAddressToPort_localDevice_weAreTv() {
+ mNativeWrapper.setPhysicalAddress(0x0000);
+ mHdmiCecNetwork.initPortInfo();
+ assertThat(mHdmiCecNetwork.physicalAddressToPortId(0x0000))
+ .isEqualTo(Constants.CEC_SWITCH_HOME);
+ }
+
+ @Test
public void localDevices_verifyOne_tv() {
mHdmiCecNetwork.clearLocalDevices();
mHdmiCecNetwork.addLocalDevice(HdmiDeviceInfo.DEVICE_TV,