Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +1 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,7 @@ public final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (isAlreadyActiveSource(targetDevice, targetAddress, callback)) { return; } removeAction(RequestActiveSourceAction.class); if (targetAddress == Constants.ADDR_INTERNAL) { handleSelectInternalSource(); // Switching to internal source is always successful even when CEC control is disabled. Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +35 −1 Original line number Diff line number Diff line Loading @@ -1730,6 +1730,40 @@ public class HdmiCecLocalDeviceTvTest { assertThat(mNativeWrapper.getResultMessages()).contains(activeSourceFromTv); } @Test public void onAddressAllocated_startRequestActiveSourceAction_cancelOnDeviceSelect() { HdmiCecMessage requestActiveSource = HdmiCecMessageBuilder.buildRequestActiveSource(ADDR_TV); HdmiCecMessage activeSourceFromTv = HdmiCecMessageBuilder.buildActiveSource(ADDR_TV, 0x0000); mHdmiControlService.getHdmiCecNetwork().clearLocalDevices(); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); HdmiDeviceInfo playbackDevice = HdmiDeviceInfo.cecDeviceBuilder() .setLogicalAddress(ADDR_PLAYBACK_1) .setPhysicalAddress(0x1000) .setPortId(PORT_1) .setDeviceType(HdmiDeviceInfo.DEVICE_PLAYBACK) .setVendorId(0x1234) .setDisplayName("Playback 1") .setDevicePowerStatus(HdmiControlManager.POWER_STATUS_ON) .setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B) .build(); mHdmiControlService.getHdmiCecNetwork().addCecDevice(playbackDevice); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessages()).contains(requestActiveSource); mNativeWrapper.clearResultMessages(); mHdmiCecLocalDeviceTv.deviceSelect(playbackDevice.getId(), null); mTestLooper.dispatchAll(); mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS * 2); mTestLooper.dispatchAll(); // RequestActiveSourceAction should be cancelled and TV will not broadcast <Active Source>. assertThat(mNativeWrapper.getResultMessages()).doesNotContain(activeSourceFromTv); } @Test public void newDeviceConnectedIfOnlyOneGiveOsdNameSent() { mHdmiControlService.getHdmiCecNetwork().clearDeviceList(); Loading Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java +1 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,7 @@ public final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice { if (isAlreadyActiveSource(targetDevice, targetAddress, callback)) { return; } removeAction(RequestActiveSourceAction.class); if (targetAddress == Constants.ADDR_INTERNAL) { handleSelectInternalSource(); // Switching to internal source is always successful even when CEC control is disabled. Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +35 −1 Original line number Diff line number Diff line Loading @@ -1730,6 +1730,40 @@ public class HdmiCecLocalDeviceTvTest { assertThat(mNativeWrapper.getResultMessages()).contains(activeSourceFromTv); } @Test public void onAddressAllocated_startRequestActiveSourceAction_cancelOnDeviceSelect() { HdmiCecMessage requestActiveSource = HdmiCecMessageBuilder.buildRequestActiveSource(ADDR_TV); HdmiCecMessage activeSourceFromTv = HdmiCecMessageBuilder.buildActiveSource(ADDR_TV, 0x0000); mHdmiControlService.getHdmiCecNetwork().clearLocalDevices(); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); HdmiDeviceInfo playbackDevice = HdmiDeviceInfo.cecDeviceBuilder() .setLogicalAddress(ADDR_PLAYBACK_1) .setPhysicalAddress(0x1000) .setPortId(PORT_1) .setDeviceType(HdmiDeviceInfo.DEVICE_PLAYBACK) .setVendorId(0x1234) .setDisplayName("Playback 1") .setDevicePowerStatus(HdmiControlManager.POWER_STATUS_ON) .setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B) .build(); mHdmiControlService.getHdmiCecNetwork().addCecDevice(playbackDevice); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getResultMessages()).contains(requestActiveSource); mNativeWrapper.clearResultMessages(); mHdmiCecLocalDeviceTv.deviceSelect(playbackDevice.getId(), null); mTestLooper.dispatchAll(); mTestLooper.moveTimeForward(HdmiConfig.TIMEOUT_MS * 2); mTestLooper.dispatchAll(); // RequestActiveSourceAction should be cancelled and TV will not broadcast <Active Source>. assertThat(mNativeWrapper.getResultMessages()).doesNotContain(activeSourceFromTv); } @Test public void newDeviceConnectedIfOnlyOneGiveOsdNameSent() { mHdmiControlService.getHdmiCecNetwork().clearDeviceList(); Loading