Loading services/core/java/com/android/server/hdmi/ActiveSourceAction.java +7 −3 Original line number Diff line number Diff line Loading @@ -39,15 +39,19 @@ public class ActiveSourceAction extends HdmiCecFeatureAction { @Override boolean start() { mState = STATE_STARTED; sendCommand(HdmiCecMessageBuilder.buildActiveSource(getSourceAddress(), source().mService.getPhysicalAddress())); int logicalAddress = getSourceAddress(); int physicalAddress = getSourcePath(); sendCommand(HdmiCecMessageBuilder.buildActiveSource(logicalAddress, physicalAddress)); if (source().getType() == HdmiDeviceInfo.DEVICE_PLAYBACK) { // Reports menu-status active to receive <User Control Pressed>. sendCommand( HdmiCecMessageBuilder.buildReportMenuStatus(getSourceAddress(), mDestination, HdmiCecMessageBuilder.buildReportMenuStatus(logicalAddress, mDestination, Constants.MENU_STATE_ACTIVATED)); } source().setActiveSource(logicalAddress, physicalAddress); mState = STATE_FINISHED; finish(); return true; Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +0 −4 Original line number Diff line number Diff line Loading @@ -3249,7 +3249,6 @@ public class HdmiControlService extends SystemService { playback.setIsActiveSource(true); playback.wakeUpIfActiveSource(); playback.maySendActiveSource(source); setActiveSource(playback.mAddress, physicalAddress); } if (deviceType == HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM) { Loading @@ -3260,7 +3259,6 @@ public class HdmiControlService extends SystemService { audioSystem.setIsActiveSource(true); audioSystem.wakeUpIfActiveSource(); audioSystem.maySendActiveSource(source); setActiveSource(audioSystem.mAddress, physicalAddress); } } } Loading @@ -3283,13 +3281,11 @@ public class HdmiControlService extends SystemService { if (audioSystem != null) { audioSystem.setIsActiveSource(false); } setActiveSource(playback.mAddress, physicalAddress); } else { if (audioSystem != null) { audioSystem.setIsActiveSource(true); audioSystem.wakeUpIfActiveSource(); audioSystem.maySendActiveSource(sourceAddress); setActiveSource(audioSystem.mAddress, physicalAddress); } } } Loading services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,26 @@ public class ActiveSourceActionTest { assertThat(mNativeWrapper.getResultMessages()).contains(menuStatus); } @Test public void playbackDevice_updatesActiveSourceState() { HdmiCecLocalDevicePlayback playbackDevice = new HdmiCecLocalDevicePlayback( mHdmiControlService); playbackDevice.init(); mLocalDevices.add(playbackDevice); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mTestLooper.dispatchAll(); HdmiCecFeatureAction action = new com.android.server.hdmi.ActiveSourceAction( playbackDevice, ADDR_TV); playbackDevice.addAndStartAction(action); mTestLooper.dispatchAll(); assertThat(playbackDevice.getActiveSource().logicalAddress).isEqualTo( playbackDevice.mAddress); assertThat(playbackDevice.getActiveSource().physicalAddress).isEqualTo(mPhysicalAddress); assertThat(playbackDevice.mIsActiveSource).isTrue(); } @Test public void audioDevice_sendsActiveSource_noMenuStatus() { HdmiCecLocalDeviceAudioSystem audioDevice = new HdmiCecLocalDeviceAudioSystem( Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -617,4 +617,19 @@ public class HdmiCecLocalDevicePlaybackTest { assertThat(mNativeWrapper.getResultMessages()).contains(activeSource); } @Test public void handleSetStreamPath_afterHotplug_hasCorrectActiveSource() { mHdmiControlService.onHotplug(1, false); mHdmiControlService.onHotplug(1, true); HdmiCecMessage setStreamPath = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, mPlaybackPhysicalAddress); mHdmiCecLocalDevicePlayback.dispatchMessage(setStreamPath); mTestLooper.dispatchAll(); assertThat(mHdmiCecLocalDevicePlayback.getActiveSource().logicalAddress).isEqualTo( mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress()); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); } } Loading
services/core/java/com/android/server/hdmi/ActiveSourceAction.java +7 −3 Original line number Diff line number Diff line Loading @@ -39,15 +39,19 @@ public class ActiveSourceAction extends HdmiCecFeatureAction { @Override boolean start() { mState = STATE_STARTED; sendCommand(HdmiCecMessageBuilder.buildActiveSource(getSourceAddress(), source().mService.getPhysicalAddress())); int logicalAddress = getSourceAddress(); int physicalAddress = getSourcePath(); sendCommand(HdmiCecMessageBuilder.buildActiveSource(logicalAddress, physicalAddress)); if (source().getType() == HdmiDeviceInfo.DEVICE_PLAYBACK) { // Reports menu-status active to receive <User Control Pressed>. sendCommand( HdmiCecMessageBuilder.buildReportMenuStatus(getSourceAddress(), mDestination, HdmiCecMessageBuilder.buildReportMenuStatus(logicalAddress, mDestination, Constants.MENU_STATE_ACTIVATED)); } source().setActiveSource(logicalAddress, physicalAddress); mState = STATE_FINISHED; finish(); return true; Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +0 −4 Original line number Diff line number Diff line Loading @@ -3249,7 +3249,6 @@ public class HdmiControlService extends SystemService { playback.setIsActiveSource(true); playback.wakeUpIfActiveSource(); playback.maySendActiveSource(source); setActiveSource(playback.mAddress, physicalAddress); } if (deviceType == HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM) { Loading @@ -3260,7 +3259,6 @@ public class HdmiControlService extends SystemService { audioSystem.setIsActiveSource(true); audioSystem.wakeUpIfActiveSource(); audioSystem.maySendActiveSource(source); setActiveSource(audioSystem.mAddress, physicalAddress); } } } Loading @@ -3283,13 +3281,11 @@ public class HdmiControlService extends SystemService { if (audioSystem != null) { audioSystem.setIsActiveSource(false); } setActiveSource(playback.mAddress, physicalAddress); } else { if (audioSystem != null) { audioSystem.setIsActiveSource(true); audioSystem.wakeUpIfActiveSource(); audioSystem.maySendActiveSource(sourceAddress); setActiveSource(audioSystem.mAddress, physicalAddress); } } } Loading
services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +20 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,26 @@ public class ActiveSourceActionTest { assertThat(mNativeWrapper.getResultMessages()).contains(menuStatus); } @Test public void playbackDevice_updatesActiveSourceState() { HdmiCecLocalDevicePlayback playbackDevice = new HdmiCecLocalDevicePlayback( mHdmiControlService); playbackDevice.init(); mLocalDevices.add(playbackDevice); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mTestLooper.dispatchAll(); HdmiCecFeatureAction action = new com.android.server.hdmi.ActiveSourceAction( playbackDevice, ADDR_TV); playbackDevice.addAndStartAction(action); mTestLooper.dispatchAll(); assertThat(playbackDevice.getActiveSource().logicalAddress).isEqualTo( playbackDevice.mAddress); assertThat(playbackDevice.getActiveSource().physicalAddress).isEqualTo(mPhysicalAddress); assertThat(playbackDevice.mIsActiveSource).isTrue(); } @Test public void audioDevice_sendsActiveSource_noMenuStatus() { HdmiCecLocalDeviceAudioSystem audioDevice = new HdmiCecLocalDeviceAudioSystem( Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +15 −0 Original line number Diff line number Diff line Loading @@ -617,4 +617,19 @@ public class HdmiCecLocalDevicePlaybackTest { assertThat(mNativeWrapper.getResultMessages()).contains(activeSource); } @Test public void handleSetStreamPath_afterHotplug_hasCorrectActiveSource() { mHdmiControlService.onHotplug(1, false); mHdmiControlService.onHotplug(1, true); HdmiCecMessage setStreamPath = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, mPlaybackPhysicalAddress); mHdmiCecLocalDevicePlayback.dispatchMessage(setStreamPath); mTestLooper.dispatchAll(); assertThat(mHdmiCecLocalDevicePlayback.getActiveSource().logicalAddress).isEqualTo( mHdmiCecLocalDevicePlayback.getDeviceInfo().getLogicalAddress()); assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue(); } }