Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +183 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.server.hdmi; 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_PLAYBACK_1; import static com.android.server.hdmi.Constants.ADDR_TV; Loading @@ -27,6 +28,7 @@ import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; Loading Loading @@ -66,6 +68,7 @@ public class HdmiCecLocalDeviceTvTest { private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Mock private AudioManager mAudioManager; @Before public void setUp() { Loading Loading @@ -100,11 +103,21 @@ public class HdmiCecLocalDeviceTvTest { // do nothing } @Override boolean isPowerStandby() { return false; } @Override protected PowerManager getPowerManager() { return powerManager; } @Override AudioManager getAudioManager() { return mAudioManager; } @Override protected HdmiCecConfig getHdmiCecConfig() { return hdmiCecConfig; Loading @@ -121,9 +134,11 @@ public class HdmiCecLocalDeviceTvTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mLocalDevices.add(mHdmiCecLocalDeviceTv); HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[1]; HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[2]; hdmiPortInfos[0] = new HdmiPortInfo(1, HdmiPortInfo.PORT_INPUT, 0x1000, true, false, false); hdmiPortInfos[1] = new HdmiPortInfo(2, HdmiPortInfo.PORT_INPUT, 0x2000, true, false, true); mNativeWrapper.setPortInfo(hdmiPortInfos); mHdmiControlService.initService(); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); Loading Loading @@ -302,4 +317,171 @@ public class HdmiCecLocalDeviceTvTest { assertThat(features.contains(Constants.RC_PROFILE_TV_THREE)).isFalse(); assertThat(features.contains(Constants.RC_PROFILE_TV_FOUR)).isFalse(); } @Test public void startArcAction_enable_noAudioDevice() { mHdmiCecLocalDeviceTv.startArcAction(true); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_disable_noAudioDevice() { mHdmiCecLocalDeviceTv.startArcAction(false); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_enable_portDoesNotSupportArc() { // Emulate Audio device on port 0x1000 (does not support ARC) mNativeWrapper.setPortConnectionStatus(1, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x1000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mHdmiCecLocalDeviceTv.startArcAction(true); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_disable_portDoesNotSupportArc() { // Emulate Audio device on port 0x1000 (does not support ARC) mNativeWrapper.setPortConnectionStatus(1, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x1000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mHdmiCecLocalDeviceTv.startArcAction(false); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_enable_portSupportsArc() { // Emulate Audio device on port 0x2000 (supports ARC) mNativeWrapper.setPortConnectionStatus(2, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x2000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mTestLooper.dispatchAll(); mHdmiCecLocalDeviceTv.startArcAction(true); mTestLooper.dispatchAll(); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).contains(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_disable_portSupportsArc() { // Emulate Audio device on port 0x2000 (supports ARC) mNativeWrapper.setPortConnectionStatus(2, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x2000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mTestLooper.dispatchAll(); mHdmiCecLocalDeviceTv.startArcAction(false); mTestLooper.dispatchAll(); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).contains(requestArcTermination); } @Test public void handleInitiateArc_noAudioDevice() { HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(requestArcInitiation); mTestLooper.dispatchAll(); HdmiCecMessage reportArcInitiated = HdmiCecMessageBuilder.buildReportArcInitiated( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportArcInitiated); } @Test public void handleInitiateArc_portDoesNotSupportArc() { // Emulate Audio device on port 0x1000 (does not support ARC) mNativeWrapper.setPortConnectionStatus(1, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x1000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(requestArcInitiation); mTestLooper.dispatchAll(); HdmiCecMessage reportArcInitiated = HdmiCecMessageBuilder.buildReportArcInitiated( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportArcInitiated); } @Test public void handleInitiateArc_portSupportsArc() { // Emulate Audio device on port 0x2000 (supports ARC) mNativeWrapper.setPortConnectionStatus(2, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x2000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mTestLooper.dispatchAll(); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(requestArcInitiation); mTestLooper.dispatchAll(); HdmiCecMessage reportArcInitiated = HdmiCecMessageBuilder.buildReportArcInitiated( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).contains(reportArcInitiated); } } Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +183 −1 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ */ package com.android.server.hdmi; 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_PLAYBACK_1; import static com.android.server.hdmi.Constants.ADDR_TV; Loading @@ -27,6 +28,7 @@ import android.hardware.hdmi.HdmiControlManager; import android.hardware.hdmi.HdmiDeviceInfo; import android.hardware.hdmi.HdmiPortInfo; import android.hardware.tv.cec.V1_0.SendMessageResult; import android.media.AudioManager; import android.os.Handler; import android.os.IPowerManager; import android.os.IThermalService; Loading Loading @@ -66,6 +68,7 @@ public class HdmiCecLocalDeviceTvTest { private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; @Mock private AudioManager mAudioManager; @Before public void setUp() { Loading Loading @@ -100,11 +103,21 @@ public class HdmiCecLocalDeviceTvTest { // do nothing } @Override boolean isPowerStandby() { return false; } @Override protected PowerManager getPowerManager() { return powerManager; } @Override AudioManager getAudioManager() { return mAudioManager; } @Override protected HdmiCecConfig getHdmiCecConfig() { return hdmiCecConfig; Loading @@ -121,9 +134,11 @@ public class HdmiCecLocalDeviceTvTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); mLocalDevices.add(mHdmiCecLocalDeviceTv); HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[1]; HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[2]; hdmiPortInfos[0] = new HdmiPortInfo(1, HdmiPortInfo.PORT_INPUT, 0x1000, true, false, false); hdmiPortInfos[1] = new HdmiPortInfo(2, HdmiPortInfo.PORT_INPUT, 0x2000, true, false, true); mNativeWrapper.setPortInfo(hdmiPortInfos); mHdmiControlService.initService(); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); Loading Loading @@ -302,4 +317,171 @@ public class HdmiCecLocalDeviceTvTest { assertThat(features.contains(Constants.RC_PROFILE_TV_THREE)).isFalse(); assertThat(features.contains(Constants.RC_PROFILE_TV_FOUR)).isFalse(); } @Test public void startArcAction_enable_noAudioDevice() { mHdmiCecLocalDeviceTv.startArcAction(true); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_disable_noAudioDevice() { mHdmiCecLocalDeviceTv.startArcAction(false); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_enable_portDoesNotSupportArc() { // Emulate Audio device on port 0x1000 (does not support ARC) mNativeWrapper.setPortConnectionStatus(1, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x1000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mHdmiCecLocalDeviceTv.startArcAction(true); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_disable_portDoesNotSupportArc() { // Emulate Audio device on port 0x1000 (does not support ARC) mNativeWrapper.setPortConnectionStatus(1, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x1000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mHdmiCecLocalDeviceTv.startArcAction(false); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_enable_portSupportsArc() { // Emulate Audio device on port 0x2000 (supports ARC) mNativeWrapper.setPortConnectionStatus(2, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x2000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mTestLooper.dispatchAll(); mHdmiCecLocalDeviceTv.startArcAction(true); mTestLooper.dispatchAll(); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).contains(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcTermination); } @Test public void startArcAction_disable_portSupportsArc() { // Emulate Audio device on port 0x2000 (supports ARC) mNativeWrapper.setPortConnectionStatus(2, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x2000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mTestLooper.dispatchAll(); mHdmiCecLocalDeviceTv.startArcAction(false); mTestLooper.dispatchAll(); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildRequestArcInitiation( ADDR_TV, ADDR_AUDIO_SYSTEM); HdmiCecMessage requestArcTermination = HdmiCecMessageBuilder.buildRequestArcTermination( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(requestArcInitiation); assertThat(mNativeWrapper.getResultMessages()).contains(requestArcTermination); } @Test public void handleInitiateArc_noAudioDevice() { HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(requestArcInitiation); mTestLooper.dispatchAll(); HdmiCecMessage reportArcInitiated = HdmiCecMessageBuilder.buildReportArcInitiated( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportArcInitiated); } @Test public void handleInitiateArc_portDoesNotSupportArc() { // Emulate Audio device on port 0x1000 (does not support ARC) mNativeWrapper.setPortConnectionStatus(1, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x1000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(requestArcInitiation); mTestLooper.dispatchAll(); HdmiCecMessage reportArcInitiated = HdmiCecMessageBuilder.buildReportArcInitiated( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportArcInitiated); } @Test public void handleInitiateArc_portSupportsArc() { // Emulate Audio device on port 0x2000 (supports ARC) mNativeWrapper.setPortConnectionStatus(2, true); HdmiCecMessage hdmiCecMessage = HdmiCecMessageBuilder.buildReportPhysicalAddressCommand( ADDR_AUDIO_SYSTEM, 0x2000, HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM); mNativeWrapper.onCecMessage(hdmiCecMessage); mTestLooper.dispatchAll(); HdmiCecMessage requestArcInitiation = HdmiCecMessageBuilder.buildInitiateArc( ADDR_AUDIO_SYSTEM, ADDR_TV); mNativeWrapper.onCecMessage(requestArcInitiation); mTestLooper.dispatchAll(); HdmiCecMessage reportArcInitiated = HdmiCecMessageBuilder.buildReportArcInitiated( ADDR_TV, ADDR_AUDIO_SYSTEM); assertThat(mNativeWrapper.getResultMessages()).contains(reportArcInitiated); } }