From 50ccc2f190f595ee252f85af52455a1bc17bed0d Mon Sep 17 00:00:00 2001 From: Marvin Ramin Date: Fri, 12 Mar 2021 16:31:03 +0100 Subject: [PATCH] Allow tests to specify local device types Enable tests to specify the device types they intend to use. This can override device types specified in system properties of the DUT itself. Update PowerStatusMonitorActionTest to pass on a playback device. Bug: 182544218 Test: atest PowerStatusMonitorActionTest Change-Id: I203f1afe36e3ca0068169bdf6d868b6c95259a9d --- .../server/hdmi/HdmiControlService.java | 7 +++++++ .../hdmi/PowerStatusMonitorActionTest.java | 20 ++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index e6e2f9631d451..03a83380246f2 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -431,6 +431,13 @@ public class HdmiControlService extends SystemService { private final SelectRequestBuffer mSelectRequestBuffer = new SelectRequestBuffer(); + @VisibleForTesting HdmiControlService(Context context, List deviceTypes) { + super(context); + mLocalDevices = deviceTypes; + mSettingsObserver = new SettingsObserver(mHandler); + mHdmiCecConfig = new HdmiCecConfig(context); + } + public HdmiControlService(Context context) { super(context); List deviceTypes = HdmiProperties.device_type(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java index 605f781b23df6..53b4b491410d7 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java @@ -19,7 +19,6 @@ package com.android.server.hdmi; 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_PLAYBACK_2; -import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; import static com.google.common.truth.Truth.assertThat; @@ -51,6 +50,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; +import java.util.Collections; import java.util.concurrent.TimeUnit; /** Tests for {@link ActiveSourceAction} */ @@ -84,7 +84,8 @@ public class PowerStatusMonitorActionTest { when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - mHdmiControlService = new HdmiControlService(mContextSpy) { + mHdmiControlService = new HdmiControlService(mContextSpy, + Collections.singletonList(HdmiDeviceInfo.DEVICE_TV)) { @Override AudioManager getAudioManager() { return new AudioManager() { @@ -140,6 +141,7 @@ public class PowerStatusMonitorActionTest { mNativeWrapper.setPhysicalAddress(mPhysicalAddress); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); mTestLooper.dispatchAll(); + mNativeWrapper.clearResultMessages(); } @Test @@ -152,7 +154,7 @@ public class PowerStatusMonitorActionTest { mTestLooper.dispatchAll(); HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus( - ADDR_TV, + mTvDevice.mAddress, ADDR_PLAYBACK_1); assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus); @@ -191,7 +193,7 @@ public class PowerStatusMonitorActionTest { mTestLooper.dispatchAll(); HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus( - ADDR_TV, + mTvDevice.mAddress, ADDR_PLAYBACK_1); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveDevicePowerStatus); @@ -220,12 +222,12 @@ public class PowerStatusMonitorActionTest { mTestLooper.dispatchAll(); HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus( - ADDR_TV, + mTvDevice.mAddress, ADDR_PLAYBACK_1); assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus); HdmiCecMessage giveDevicePowerStatus2 = HdmiCecMessageBuilder.buildGiveDevicePowerStatus( - ADDR_TV, + mTvDevice.mAddress, ADDR_PLAYBACK_2); assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus2); } @@ -245,13 +247,13 @@ public class PowerStatusMonitorActionTest { mTestLooper.dispatchAll(); HdmiCecMessage giveDevicePowerStatus = HdmiCecMessageBuilder.buildGiveDevicePowerStatus( - ADDR_TV, + mTvDevice.mAddress, ADDR_PLAYBACK_1); assertThat(mNativeWrapper.getResultMessages()).contains(giveDevicePowerStatus); HdmiCecMessage giveDevicePowerStatus2 = HdmiCecMessageBuilder.buildGiveDevicePowerStatus( - ADDR_TV, + mTvDevice.mAddress, ADDR_PLAYBACK_2); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(giveDevicePowerStatus2); @@ -265,7 +267,7 @@ public class PowerStatusMonitorActionTest { } private void reportPowerStatus(int logicalAddress, boolean broadcast, int powerStatus) { - int destination = broadcast ? ADDR_BROADCAST : ADDR_TV; + int destination = broadcast ? ADDR_BROADCAST : mTvDevice.mAddress; HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( logicalAddress, destination, powerStatus);