diff options
| author | 2023-12-07 07:46:21 +0000 | |
|---|---|---|
| committer | 2023-12-07 07:46:21 +0000 | |
| commit | 46d14dde1801f456db661ba3f282616ab68770ac (patch) | |
| tree | cfc9642902d99ee0ae88bfc5edb765acca68f328 | |
| parent | dff1d0ff15ee595effd4cab67b6150a594f0c4a5 (diff) | |
| parent | 157ffd583f904770a1607ab163998fd9b426f0b3 (diff) | |
Merge "Remove redundant <Give OSD name> for TV devices" into main
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java | 4 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java | 22 |
2 files changed, 25 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java index 7d0d5a73f093..ec6b5ea41339 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevice.java @@ -559,7 +559,9 @@ abstract class HdmiCecLocalDevice extends HdmiLocalDevice { HdmiDeviceInfo cecDeviceInfo = mService.getHdmiCecNetwork().getCecDeviceInfo(address); // If no non-default display name is available for the device, request the devices OSD name. - if (cecDeviceInfo != null && cecDeviceInfo.getDisplayName().equals( + // On TV devices, the OSD name is queried in NewDeviceAction instead. + if (!mService.isTvDevice() && cecDeviceInfo != null + && cecDeviceInfo.getDisplayName().equals( HdmiUtils.getDefaultDeviceName(address))) { mService.sendCecCommand( HdmiCecMessageBuilder.buildGiveOsdNameCommand( diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java index d52b7ea38725..6a2800949dd0 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java @@ -27,6 +27,8 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC import static com.google.common.truth.Truth.assertThat; +import static junit.framework.Assert.assertEquals; + import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; @@ -1648,4 +1650,24 @@ public class HdmiCecLocalDeviceTvTest { assertThat(mHdmiControlService.isSystemAudioActivated()).isTrue(); } + + @Test + public void newDeviceConnectedIfOnlyOneGiveOsdNameSent() { + mHdmiControlService.getHdmiCecNetwork().clearDeviceList(); + assertThat(mHdmiControlService.getHdmiCecNetwork().getDeviceInfoList(false)) + .isEmpty(); + HdmiCecMessage reportPhysicalAddress = + HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( + ADDR_PLAYBACK_2, 0x1000, HdmiDeviceInfo.DEVICE_PLAYBACK); + HdmiCecMessage giveOsdName = HdmiCecMessageBuilder.buildGiveOsdNameCommand( + ADDR_TV, ADDR_PLAYBACK_2); + mNativeWrapper.onCecMessage(reportPhysicalAddress); + mTestLooper.dispatchAll(); + + // Wait until HdmiCecNetwork or NewDeviceAction is in progress + mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS); + + // TV should only send <Give Osd Name> once + assertEquals(1, Collections.frequency(mNativeWrapper.getResultMessages(), giveOsdName)); + } } |