summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amy <amyjojo@google.com> 2018-10-18 14:17:47 -0700
committer shubang <shubang@google.com> 2019-01-11 18:00:45 -0800
commit3eaa85f16f0646ecef303bf1a4a00747912b1220 (patch)
tree8fc958f680e81b4ed950bcc5a4315735d275dd15
parent1e4a8cc5420e5eb9a626470217cad3609df259cc (diff)
Fix pathToPort logic in HdmiControlService
ag/5306538 The logic is not correct. Only correct when the target device is directly connected to the current device. Test: atest com.android.server.hdmi Change-Id: Ia090bd70069b3457a975b03574347640151cf5ac
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiControlService.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java10
2 files changed, 13 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java
index 1b5147d7225d..2d6e76294e4a 100644
--- a/services/core/java/com/android/server/hdmi/HdmiControlService.java
+++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java
@@ -828,11 +828,14 @@ public class HdmiControlService extends SystemService {
int mask = 0xF000;
int finalMask = 0xF000;
int physicalAddress = getPhysicalAddress();
- while (physicalAddress != 0) {
- physicalAddress &= mask;
- mask >>= 4;
+ int maskedAddress = physicalAddress;
+
+ while (maskedAddress != 0) {
+ maskedAddress = physicalAddress & mask;
finalMask |= mask;
+ mask >>= 4;
}
+
int portAddress = path & finalMask;
return mPortIdMap.get(portAddress, Constants.INVALID_PORT_ID);
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index c3f111b92631..67ce13fdef72 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -137,11 +137,15 @@ public class HdmiControlServiceTest {
mLocalDevices.add(mMyAudioSystemDevice);
mLocalDevices.add(mMyPlaybackDevice);
- mHdmiPortInfo = new HdmiPortInfo[2];
+ mHdmiPortInfo = new HdmiPortInfo[4];
mHdmiPortInfo[0] =
new HdmiPortInfo(1, HdmiPortInfo.PORT_INPUT, 0x2100, true, false, false);
mHdmiPortInfo[1] =
new HdmiPortInfo(2, HdmiPortInfo.PORT_INPUT, 0x2200, true, false, false);
+ mHdmiPortInfo[2] =
+ new HdmiPortInfo(3, HdmiPortInfo.PORT_INPUT, 0x2000, true, false, false);
+ mHdmiPortInfo[3] =
+ new HdmiPortInfo(4, HdmiPortInfo.PORT_INPUT, 0x3000, true, false, false);
mNativeWrapper.setPortInfo(mHdmiPortInfo);
mHdmiControlService.initPortInfo();
mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC);
@@ -182,8 +186,8 @@ public class HdmiControlServiceTest {
@Test
public void pathToPort_pathExists_weAreTv() {
mNativeWrapper.setPhysicalAddress(0x0000);
- assertThat(mHdmiControlService.pathToPortId(0x2120)).isEqualTo(2);
- assertThat(mHdmiControlService.pathToPortId(0x1234)).isEqualTo(1);
+ assertThat(mHdmiControlService.pathToPortId(0x2120)).isEqualTo(3);
+ assertThat(mHdmiControlService.pathToPortId(0x3234)).isEqualTo(4);
}
@Test