Loading services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +6 −1 Original line number Original line Diff line number Diff line Loading @@ -714,7 +714,12 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { } } if (getLocalActivePort() == Constants.CEC_SWITCH_HOME && mService.isPlaybackDevice()) { if (getLocalActivePort() == Constants.CEC_SWITCH_HOME && mService.isPlaybackDevice()) { routeToInputFromPortId(Constants.CEC_SWITCH_HOME); routeToInputFromPortId(Constants.CEC_SWITCH_HOME); if (mService.playback() != null) { mService.playback().setAndBroadcastActiveSource( message, mService.getPhysicalAddress()); } else { setAndBroadcastActiveSource(message, mService.getPhysicalAddress()); setAndBroadcastActiveSource(message, mService.getPhysicalAddress()); } return; return; } } Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.hdmi; import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM; import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM; import static com.android.server.hdmi.Constants.ADDR_BROADCAST; import static com.android.server.hdmi.Constants.ADDR_BROADCAST; import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1; import static com.android.server.hdmi.Constants.ADDR_TUNER_1; import static com.android.server.hdmi.Constants.ADDR_TUNER_1; import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; Loading Loading @@ -53,6 +54,7 @@ public class HdmiCecLocalDeviceAudioSystemTest { private HdmiControlService mHdmiControlService; private HdmiControlService mHdmiControlService; private HdmiCecController mHdmiCecController; private HdmiCecController mHdmiCecController; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private HdmiCecLocalDevicePlayback mHdmiCecLocalDevicePlayback; private FakeNativeWrapper mNativeWrapper; private FakeNativeWrapper mNativeWrapper; private Looper mMyLooper; private Looper mMyLooper; private TestLooper mTestLooper = new TestLooper(); private TestLooper mTestLooper = new TestLooper(); Loading Loading @@ -133,7 +135,9 @@ public class HdmiCecLocalDeviceAudioSystemTest { mMyLooper = mTestLooper.getLooper(); mMyLooper = mTestLooper.getLooper(); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService); mHdmiCecLocalDeviceAudioSystem.init(); mHdmiCecLocalDeviceAudioSystem.init(); mHdmiCecLocalDevicePlayback.init(); mHdmiControlService.setIoLooper(mMyLooper); mHdmiControlService.setIoLooper(mMyLooper); mNativeWrapper = new FakeNativeWrapper(); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = mHdmiCecController = Loading @@ -142,6 +146,7 @@ public class HdmiCecLocalDeviceAudioSystemTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); mLocalDevices.add(mHdmiCecLocalDevicePlayback); mHdmiControlService.initPortInfo(); mHdmiControlService.initPortInfo(); // No TV device interacts with AVR so system audio control won't be turned on here // No TV device interacts with AVR so system audio control won't be turned on here mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); Loading Loading @@ -603,4 +608,17 @@ public class HdmiCecLocalDeviceAudioSystemTest { mTestLooper.dispatchAll(); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage); } } @Test public void handleRoutingChange_homeIsActive_playbackSendActiveSource() { HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x2000); HdmiCecMessage expectedMessage = HdmiCecMessageBuilder.buildActiveSource(ADDR_PLAYBACK_1, 0x2000); assertThat(mHdmiCecLocalDeviceAudioSystem.handleRoutingChange(message)).isTrue(); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage); } } } Loading
services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +6 −1 Original line number Original line Diff line number Diff line Loading @@ -714,7 +714,12 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { } } if (getLocalActivePort() == Constants.CEC_SWITCH_HOME && mService.isPlaybackDevice()) { if (getLocalActivePort() == Constants.CEC_SWITCH_HOME && mService.isPlaybackDevice()) { routeToInputFromPortId(Constants.CEC_SWITCH_HOME); routeToInputFromPortId(Constants.CEC_SWITCH_HOME); if (mService.playback() != null) { mService.playback().setAndBroadcastActiveSource( message, mService.getPhysicalAddress()); } else { setAndBroadcastActiveSource(message, mService.getPhysicalAddress()); setAndBroadcastActiveSource(message, mService.getPhysicalAddress()); } return; return; } } Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.hdmi; import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM; import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM; import static com.android.server.hdmi.Constants.ADDR_BROADCAST; import static com.android.server.hdmi.Constants.ADDR_BROADCAST; import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1; import static com.android.server.hdmi.Constants.ADDR_TUNER_1; import static com.android.server.hdmi.Constants.ADDR_TUNER_1; import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; Loading Loading @@ -53,6 +54,7 @@ public class HdmiCecLocalDeviceAudioSystemTest { private HdmiControlService mHdmiControlService; private HdmiControlService mHdmiControlService; private HdmiCecController mHdmiCecController; private HdmiCecController mHdmiCecController; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private HdmiCecLocalDeviceAudioSystem mHdmiCecLocalDeviceAudioSystem; private HdmiCecLocalDevicePlayback mHdmiCecLocalDevicePlayback; private FakeNativeWrapper mNativeWrapper; private FakeNativeWrapper mNativeWrapper; private Looper mMyLooper; private Looper mMyLooper; private TestLooper mTestLooper = new TestLooper(); private TestLooper mTestLooper = new TestLooper(); Loading Loading @@ -133,7 +135,9 @@ public class HdmiCecLocalDeviceAudioSystemTest { mMyLooper = mTestLooper.getLooper(); mMyLooper = mTestLooper.getLooper(); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService); mHdmiCecLocalDeviceAudioSystem.init(); mHdmiCecLocalDeviceAudioSystem.init(); mHdmiCecLocalDevicePlayback.init(); mHdmiControlService.setIoLooper(mMyLooper); mHdmiControlService.setIoLooper(mMyLooper); mNativeWrapper = new FakeNativeWrapper(); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = mHdmiCecController = Loading @@ -142,6 +146,7 @@ public class HdmiCecLocalDeviceAudioSystemTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); mLocalDevices.add(mHdmiCecLocalDeviceAudioSystem); mLocalDevices.add(mHdmiCecLocalDevicePlayback); mHdmiControlService.initPortInfo(); mHdmiControlService.initPortInfo(); // No TV device interacts with AVR so system audio control won't be turned on here // No TV device interacts with AVR so system audio control won't be turned on here mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); Loading Loading @@ -603,4 +608,17 @@ public class HdmiCecLocalDeviceAudioSystemTest { mTestLooper.dispatchAll(); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage); assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage); } } @Test public void handleRoutingChange_homeIsActive_playbackSendActiveSource() { HdmiCecMessage message = HdmiCecMessageBuilder.buildRoutingChange(ADDR_TV, 0x0000, 0x2000); HdmiCecMessage expectedMessage = HdmiCecMessageBuilder.buildActiveSource(ADDR_PLAYBACK_1, 0x2000); assertThat(mHdmiCecLocalDeviceAudioSystem.handleRoutingChange(message)).isTrue(); mTestLooper.dispatchAll(); assertThat(mNativeWrapper.getOnlyResultMessage()).isEqualTo(expectedMessage); } } }