diff options
| author | 2021-03-02 10:00:45 +0000 | |
|---|---|---|
| committer | 2021-03-02 10:00:45 +0000 | |
| commit | 05955bd175ddcad1e67ad7be0192c860180e1c8d (patch) | |
| tree | 9454b667509bc452db41520a34e8bd2eadf76637 | |
| parent | 2f395f337ecae3660f1c512d856f8627978c1802 (diff) | |
| parent | 1def13831804a7a93ed381d448d89e783bb30e02 (diff) | |
Merge "Enable CEC version limiting tests" into sc-dev
14 files changed, 137 insertions, 147 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index b4d9b01f716f..115cafedca93 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -221,7 +221,7 @@ public class HdmiControlService extends SystemService { private int mHdmiCecVolumeControl; // Make sure HdmiCecConfig is instantiated and the XMLs are read. - private final HdmiCecConfig mHdmiCecConfig; + private HdmiCecConfig mHdmiCecConfig; /** * Interface to report send result. @@ -580,6 +580,11 @@ public class HdmiControlService extends SystemService { mHdmiCecNetwork = hdmiCecNetwork; } + @VisibleForTesting + void setHdmiCecConfig(HdmiCecConfig hdmiCecConfig) { + mHdmiCecConfig = hdmiCecConfig; + } + public HdmiCecNetwork getHdmiCecNetwork() { return mHdmiCecNetwork; } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java index f2254a98a70e..c08857ca9bdc 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ActiveSourceActionTest.java @@ -74,8 +74,6 @@ public class ActiveSourceActionTest { when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); - mHdmiControlService = new HdmiControlService(mContextSpy) { @Override AudioManager getAudioManager() { @@ -106,15 +104,11 @@ public class ActiveSourceActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; Looper looper = mTestLooper.getLooper(); mHdmiControlService.setIoLooper(looper); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy)); mNativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java index 44418ce1e9c4..50ba761cef10 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java @@ -76,8 +76,6 @@ public class ArcInitiationActionFromAvrTest { when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); - HdmiControlService hdmiControlService = new HdmiControlService(mContextSpy) { @Override @@ -112,11 +110,6 @@ public class ArcInitiationActionFromAvrTest { Looper getServiceLooper() { return mTestLooper.getLooper(); } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(hdmiControlService) { @@ -128,6 +121,7 @@ public class ArcInitiationActionFromAvrTest { mHdmiCecLocalDeviceAudioSystem.init(); Looper looper = mTestLooper.getLooper(); hdmiControlService.setIoLooper(looper); + hdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy)); mNativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( hdmiControlService, mNativeWrapper, hdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java index d454d8771e15..aa5bc933002d 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java @@ -77,8 +77,6 @@ public class ArcTerminationActionFromAvrTest { when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); - HdmiControlService hdmiControlService = new HdmiControlService(mContextSpy) { @Override @@ -113,15 +111,11 @@ public class ArcTerminationActionFromAvrTest { Looper getServiceLooper() { return mTestLooper.getLooper(); } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; Looper looper = mTestLooper.getLooper(); hdmiControlService.setIoLooper(looper); + hdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy)); mNativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( hdmiControlService, mNativeWrapper, hdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java index 7cb72c414e52..ef7b274eeb83 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java @@ -86,8 +86,6 @@ public class DevicePowerStatusActionTest { when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); - mHdmiControlService = new HdmiControlService(mContextSpy) { @Override AudioManager getAudioManager() { @@ -118,15 +116,11 @@ public class DevicePowerStatusActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; Looper looper = mTestLooper.getLooper(); mHdmiControlService.setIoLooper(looper); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy)); mNativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionTest.java index 9bf95c0edcdb..678f8b219e28 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DeviceSelectActionTest.java @@ -106,8 +106,6 @@ public class DeviceSelectActionTest { PowerManager powerManager = new PowerManager(context, mIPowerManagerMock, mIThermalServiceMock, new Handler(mMyLooper)); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context); - mHdmiControlService = new HdmiControlService(InstrumentationRegistry.getTargetContext()) { @Override @@ -133,16 +131,12 @@ public class DeviceSelectActionTest { protected PowerManager getPowerManager() { return powerManager; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiCecLocalDeviceTv = new HdmiCecLocalDeviceTv(mHdmiControlService); mHdmiCecLocalDeviceTv.init(); mHdmiControlService.setIoLooper(mMyLooper); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java index eedbc958dcd5..6bb148d43a57 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java @@ -98,8 +98,6 @@ public class HdmiCecLocalDeviceAudioSystemTest { PowerManager powerManager = new PowerManager(context, mIPowerManagerMock, mIThermalServiceMock, new Handler(mMyLooper)); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context); - mHdmiControlService = new HdmiControlService(InstrumentationRegistry.getTargetContext()) { @Override @@ -188,17 +186,13 @@ public class HdmiCecLocalDeviceAudioSystemTest { protected PowerManager getPowerManager() { return powerManager; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiControlService.getHdmiCecConfig().setIntValue( HdmiControlManager.CEC_SETTING_NAME_VOLUME_CONTROL_MODE, HdmiControlManager.VOLUME_CONTROL_ENABLED); mMyLooper = mTestLooper.getLooper(); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); mHdmiCecLocalDeviceAudioSystem = new HdmiCecLocalDeviceAudioSystem(mHdmiControlService); mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService) { @Override diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java index b11ac24b9a29..915392e6eb80 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -87,7 +87,6 @@ public class HdmiCecLocalDevicePlaybackTest { mMyLooper = mTestLooper.getLooper(); PowerManager powerManager = new PowerManager(context, mIPowerManagerMock, mIThermalServiceMock, new Handler(mMyLooper)); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context); mHdmiControlService = new HdmiControlService(InstrumentationRegistry.getTargetContext()) { @@ -136,15 +135,11 @@ public class HdmiCecLocalDevicePlaybackTest { protected PowerManager getPowerManager() { return powerManager; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService); mHdmiCecLocalDevicePlayback.init(); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); mHdmiControlService.setIoLooper(mMyLooper); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java index 0717112da12c..b3f008598dc8 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java @@ -128,8 +128,6 @@ public class HdmiCecLocalDeviceTest { Context context = InstrumentationRegistry.getTargetContext(); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context); - mHdmiControlService = new HdmiControlService(context) { @Override @@ -163,13 +161,9 @@ public class HdmiCecLocalDeviceTest { void wakeUp() { mWakeupMessageReceived = true; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiControlService.setIoLooper(mTestLooper.getLooper()); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java index 4623eb5b7d4b..4b3ef2f2cfd1 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java @@ -81,8 +81,6 @@ public class HdmiCecLocalDeviceTvTest { PowerManager powerManager = new PowerManager(context, mIPowerManagerMock, mIThermalServiceMock, new Handler(mMyLooper)); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context); - mHdmiControlService = new HdmiControlService(InstrumentationRegistry.getTargetContext()) { @Override @@ -119,16 +117,12 @@ public class HdmiCecLocalDeviceTvTest { AudioManager getAudioManager() { return mAudioManager; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiCecLocalDeviceTv = new HdmiCecLocalDeviceTv(mHdmiControlService); mHdmiCecLocalDeviceTv.init(); mHdmiControlService.setIoLooper(mMyLooper); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java index 06373c2284b2..1c7ff421fe92 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecPowerStatusControllerTest.java @@ -62,12 +62,12 @@ public class HdmiCecPowerStatusControllerTest { private FakeNativeWrapper mNativeWrapper; private TestLooper mTestLooper = new TestLooper(); private ArrayList<HdmiCecLocalDevice> mLocalDevices = new ArrayList<>(); - private int mHdmiCecVersion = HdmiControlManager.HDMI_CEC_VERSION_1_4_B; @Mock private IPowerManager mIPowerManagerMock; @Mock private IThermalService mIThermalServiceMock; private HdmiControlService mHdmiControlService; + private HdmiCecLocalDevicePlayback mHdmiCecLocalDevicePlayback; @Before public void setUp() throws Exception { @@ -81,8 +81,6 @@ public class HdmiCecPowerStatusControllerTest { when(contextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(contextSpy); - mHdmiControlService = new HdmiControlService(contextSpy) { @Override boolean isControlEnabled() { @@ -100,33 +98,24 @@ public class HdmiCecPowerStatusControllerTest { } @Override - int getCecVersion() { - return mHdmiCecVersion; - } - - @Override boolean isPowerStandby() { return false; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mHdmiControlService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY); - HdmiCecLocalDevicePlayback hdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback( + mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback( mHdmiControlService); - hdmiCecLocalDevicePlayback.init(); + mHdmiCecLocalDevicePlayback.init(); mHdmiControlService.setIoLooper(myLooper); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(contextSpy)); mNativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); mHdmiControlService.setCecController(hdmiCecController); mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); - mLocalDevices.add(hdmiCecLocalDevicePlayback); + mLocalDevices.add(mHdmiCecLocalDevicePlayback); HdmiPortInfo[] hdmiPortInfos = new HdmiPortInfo[1]; hdmiPortInfos[0] = new HdmiPortInfo(1, HdmiPortInfo.PORT_OUTPUT, 0x0000, true, false, false); @@ -188,77 +177,84 @@ public class HdmiCecPowerStatusControllerTest { @Test public void setPowerStatus_doesntSendBroadcast_1_4() { + setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B); mHdmiCecPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON); mTestLooper.dispatchAll(); HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( - Constants.ADDR_PLAYBACK_1, Constants.ADDR_BROADCAST, + mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST, HdmiControlManager.POWER_STATUS_ON); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus); } @Test public void setPowerStatus_transient_doesntSendBroadcast_1_4() { + setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B); mHdmiCecPowerStatusController.setPowerStatus( HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON); mTestLooper.dispatchAll(); HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( - Constants.ADDR_PLAYBACK_1, Constants.ADDR_BROADCAST, + mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST, HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus); } @Test public void setPowerStatus_fast_transient_doesntSendBroadcast_1_4() { + setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B); mHdmiCecPowerStatusController.setPowerStatus( HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON, false); mTestLooper.dispatchAll(); HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( - Constants.ADDR_PLAYBACK_1, Constants.ADDR_BROADCAST, + mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST, HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus); } @Test public void setPowerStatus_sendsBroadcast_2_0() { - mHdmiCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0; - + setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0); mHdmiCecPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON); mTestLooper.dispatchAll(); HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( - Constants.ADDR_PLAYBACK_1, Constants.ADDR_BROADCAST, + mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST, HdmiControlManager.POWER_STATUS_ON); assertThat(mNativeWrapper.getResultMessages()).contains(reportPowerStatus); } @Test public void setPowerStatus_transient_sendsBroadcast_2_0() { - mHdmiCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0; - + setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0); mHdmiCecPowerStatusController.setPowerStatus( HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON); mTestLooper.dispatchAll(); HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( - Constants.ADDR_PLAYBACK_1, Constants.ADDR_BROADCAST, + mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST, HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON); assertThat(mNativeWrapper.getResultMessages()).contains(reportPowerStatus); } @Test public void setPowerStatus_fast_transient_doesntSendBroadcast_2_0() { - mHdmiCecVersion = HdmiControlManager.HDMI_CEC_VERSION_2_0; - + setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0); mHdmiCecPowerStatusController.setPowerStatus( HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON, false); mTestLooper.dispatchAll(); HdmiCecMessage reportPowerStatus = HdmiCecMessageBuilder.buildReportPowerStatus( - Constants.ADDR_PLAYBACK_1, Constants.ADDR_BROADCAST, + mHdmiCecLocalDevicePlayback.mAddress, Constants.ADDR_BROADCAST, HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus); } + + private void setCecVersion(int version) { + mHdmiControlService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, version); + mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); + mTestLooper.dispatchAll(); + } } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java index 32a70480c39e..47f3bf9daba7 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java @@ -19,6 +19,7 @@ import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_AUDIO_SYSTEM; import static android.hardware.hdmi.HdmiDeviceInfo.DEVICE_PLAYBACK; import static com.android.server.SystemService.PHASE_BOOT_COMPLETED; +import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; import static com.google.common.truth.Truth.assertThat; @@ -44,12 +45,12 @@ import android.os.RemoteException; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; import android.provider.Settings; +import android.util.Log; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -68,14 +69,64 @@ import java.util.Optional; @RunWith(JUnit4.class) public class HdmiControlServiceTest { - private class HdmiCecLocalDeviceMyDevice extends HdmiCecLocalDeviceSource { + private class MockPlaybackDevice extends HdmiCecLocalDevicePlayback { private boolean mCanGoToStandby; private boolean mIsStandby; private boolean mIsDisabled; - protected HdmiCecLocalDeviceMyDevice(HdmiControlService service, int deviceType) { - super(service, deviceType); + MockPlaybackDevice(HdmiControlService service) { + super(service); + } + + @Override + protected void onAddressAllocated(int logicalAddress, int reason) {} + + @Override + protected int getPreferredAddress() { + return 0; + } + + @Override + protected void setPreferredAddress(int addr) {} + + @Override + protected boolean canGoToStandby() { + return mCanGoToStandby; + } + + @Override + protected void disableDevice( + boolean initiatedByCec, final PendingActionClearedCallback originalCallback) { + mIsDisabled = true; + originalCallback.onCleared(this); + } + + @Override + protected void onStandby(boolean initiatedByCec, int standbyAction) { + mIsStandby = true; + } + + protected boolean isStandby() { + return mIsStandby; + } + + protected boolean isDisabled() { + return mIsDisabled; + } + + protected void setCanGoToStandby(boolean canGoToStandby) { + mCanGoToStandby = canGoToStandby; + } + } + private class MockAudioSystemDevice extends HdmiCecLocalDeviceAudioSystem { + + private boolean mCanGoToStandby; + private boolean mIsStandby; + private boolean mIsDisabled; + + MockAudioSystemDevice(HdmiControlService service) { + super(service); } @Override @@ -123,8 +174,8 @@ public class HdmiControlServiceTest { private Context mContextSpy; private HdmiControlService mHdmiControlService; private HdmiCecController mHdmiCecController; - private HdmiCecLocalDeviceMyDevice mMyAudioSystemDevice; - private HdmiCecLocalDeviceMyDevice mMyPlaybackDevice; + private MockAudioSystemDevice mAudioSystemDevice; + private MockPlaybackDevice mPlaybackDevice; private FakeNativeWrapper mNativeWrapper; private Looper mMyLooper; private TestLooper mTestLooper = new TestLooper(); @@ -144,6 +195,7 @@ public class HdmiControlServiceTest { PowerManager powerManager = new PowerManager(mContextSpy, mIPowerManagerMock, mIThermalServiceMock, null); when(mContextSpy.getSystemService(Context.POWER_SERVICE)).thenReturn(powerManager); + when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); @@ -157,21 +209,17 @@ public class HdmiControlServiceTest { @Override protected void writeStringSystemProperty(String key, String value) { } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; mMyLooper = mTestLooper.getLooper(); - mMyAudioSystemDevice = - new HdmiCecLocalDeviceMyDevice(mHdmiControlService, DEVICE_AUDIO_SYSTEM); - mMyPlaybackDevice = new HdmiCecLocalDeviceMyDevice(mHdmiControlService, DEVICE_PLAYBACK); - mMyAudioSystemDevice.init(); - mMyPlaybackDevice.init(); + mAudioSystemDevice = new MockAudioSystemDevice(mHdmiControlService); + mPlaybackDevice = new MockPlaybackDevice(mHdmiControlService); + mAudioSystemDevice.init(); + mPlaybackDevice.init(); mHdmiControlService.setIoLooper(mMyLooper); + mHdmiControlService.setHdmiCecConfig(hdmiCecConfig); + mHdmiControlService.onBootPhase(PHASE_SYSTEM_SERVICES_READY); mNativeWrapper = new FakeNativeWrapper(); mHdmiCecController = HdmiCecController.createWithNativeWrapper( @@ -180,8 +228,8 @@ public class HdmiControlServiceTest { mHdmiControlService.setHdmiMhlController(HdmiMhlControllerStub.create(mHdmiControlService)); mHdmiControlService.setMessageValidator(new HdmiCecMessageValidator(mHdmiControlService)); - mLocalDevices.add(mMyAudioSystemDevice); - mLocalDevices.add(mMyPlaybackDevice); + mLocalDevices.add(mAudioSystemDevice); + mLocalDevices.add(mPlaybackDevice); mHdmiPortInfo = new HdmiPortInfo[4]; mHdmiPortInfo[0] = new HdmiPortInfo(1, HdmiPortInfo.PORT_INPUT, 0x2100, true, false, false); @@ -192,6 +240,9 @@ public class HdmiControlServiceTest { mHdmiPortInfo[3] = new HdmiPortInfo(4, HdmiPortInfo.PORT_INPUT, 0x3000, true, false, false); mNativeWrapper.setPortInfo(mHdmiPortInfo); + mHdmiControlService.getHdmiCecConfig().setIntValue( + HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED, + HdmiControlManager.HDMI_CEC_CONTROL_ENABLED); mHdmiControlService.initService(); mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); @@ -201,13 +252,13 @@ public class HdmiControlServiceTest { @Test public void onStandby_notByCec_cannotGoToStandby() { mStandbyMessageReceived = false; - mMyPlaybackDevice.setCanGoToStandby(false); + mPlaybackDevice.setCanGoToStandby(false); mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); - assertTrue(mMyPlaybackDevice.isStandby()); - assertTrue(mMyAudioSystemDevice.isStandby()); - assertFalse(mMyPlaybackDevice.isDisabled()); - assertFalse(mMyAudioSystemDevice.isDisabled()); + assertTrue(mPlaybackDevice.isStandby()); + assertTrue(mAudioSystemDevice.isStandby()); + assertFalse(mPlaybackDevice.isDisabled()); + assertFalse(mAudioSystemDevice.isDisabled()); } @Test @@ -215,10 +266,10 @@ public class HdmiControlServiceTest { mStandbyMessageReceived = true; mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); - assertTrue(mMyPlaybackDevice.isStandby()); - assertTrue(mMyAudioSystemDevice.isStandby()); - assertTrue(mMyPlaybackDevice.isDisabled()); - assertTrue(mMyAudioSystemDevice.isDisabled()); + assertTrue(mPlaybackDevice.isStandby()); + assertTrue(mAudioSystemDevice.isStandby()); + assertTrue(mPlaybackDevice.isDisabled()); + assertTrue(mAudioSystemDevice.isDisabled()); } @Test @@ -275,6 +326,7 @@ public class HdmiControlServiceTest { mHdmiControlService.getHdmiCecConfig().setIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, HdmiControlManager.HDMI_CEC_VERSION_2_0); + mTestLooper.dispatchAll(); mHdmiControlService.setControlEnabled(HdmiControlManager.HDMI_CEC_CONTROL_ENABLED); mNativeWrapper.clearResultMessages(); @@ -555,8 +607,8 @@ public class HdmiControlServiceTest { HdmiCecMessage reportFeatures = HdmiCecMessageBuilder.buildReportFeatures( Constants.ADDR_PLAYBACK_1, HdmiControlManager.HDMI_CEC_VERSION_2_0, Arrays.asList(DEVICE_PLAYBACK, DEVICE_AUDIO_SYSTEM), - mMyPlaybackDevice.getRcProfile(), mMyPlaybackDevice.getRcFeatures(), - mMyPlaybackDevice.getDeviceFeatures()); + mPlaybackDevice.getRcProfile(), mPlaybackDevice.getRcFeatures(), + mPlaybackDevice.getDeviceFeatures()); assertThat(mNativeWrapper.getResultMessages()).contains(reportFeatures); } @@ -573,8 +625,8 @@ public class HdmiControlServiceTest { HdmiCecMessage reportFeatures = HdmiCecMessageBuilder.buildReportFeatures( Constants.ADDR_PLAYBACK_1, HdmiControlManager.HDMI_CEC_VERSION_2_0, Arrays.asList(DEVICE_PLAYBACK, DEVICE_AUDIO_SYSTEM), - mMyPlaybackDevice.getRcProfile(), mMyPlaybackDevice.getRcFeatures(), - mMyPlaybackDevice.getDeviceFeatures()); + mPlaybackDevice.getRcProfile(), mPlaybackDevice.getRcFeatures(), + mPlaybackDevice.getDeviceFeatures()); assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportFeatures); } @@ -590,8 +642,8 @@ public class HdmiControlServiceTest { HdmiCecMessage reportFeatures = HdmiCecMessageBuilder.buildReportFeatures( Constants.ADDR_PLAYBACK_1, HdmiControlManager.HDMI_CEC_VERSION_2_0, Arrays.asList(DEVICE_PLAYBACK, DEVICE_AUDIO_SYSTEM), - mMyPlaybackDevice.getRcProfile(), mMyPlaybackDevice.getRcFeatures(), - mMyPlaybackDevice.getDeviceFeatures()); + mPlaybackDevice.getRcProfile(), mPlaybackDevice.getRcFeatures(), + mPlaybackDevice.getDeviceFeatures()); assertThat(mNativeWrapper.getResultMessages()).contains(reportFeatures); } @@ -612,41 +664,42 @@ public class HdmiControlServiceTest { assertEquals(runnerUid, Binder.getCallingWorkSourceUid()); } - @Ignore("b/180499471") @Test public void initCecVersion_limitToMinimumSupportedVersion() { + mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B); + Log.e("MARVIN", "set setting CEC"); mHdmiControlService.getHdmiCecConfig().setIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, HdmiControlManager.HDMI_CEC_VERSION_2_0); - mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_1_4_B); - mHdmiControlService.initService(); + mTestLooper.dispatchAll(); assertThat(mHdmiControlService.getCecVersion()).isEqualTo( HdmiControlManager.HDMI_CEC_VERSION_1_4_B); } - @Ignore("b/180499471") @Test public void initCecVersion_limitToAtLeast1_4() { + Log.e("MARVIN", "set HAL CEC to 0"); + mNativeWrapper.setCecVersion(0x0); + Log.e("MARVIN", "set setting CEC to 2"); mHdmiControlService.getHdmiCecConfig().setIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, HdmiControlManager.HDMI_CEC_VERSION_2_0); - mNativeWrapper.setCecVersion(0x0); - mHdmiControlService.initService(); + mTestLooper.dispatchAll(); assertThat(mHdmiControlService.getCecVersion()).isEqualTo( HdmiControlManager.HDMI_CEC_VERSION_1_4_B); } - @Ignore("b/180499471") @Test public void initCecVersion_useHighestMatchingVersion() { + mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0); + Log.e("MARVIN", "set setting CEC"); mHdmiControlService.getHdmiCecConfig().setIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, HdmiControlManager.HDMI_CEC_VERSION_2_0); - mNativeWrapper.setCecVersion(HdmiControlManager.HDMI_CEC_VERSION_2_0); - mHdmiControlService.initService(); + mTestLooper.dispatchAll(); assertThat(mHdmiControlService.getCecVersion()).isEqualTo( HdmiControlManager.HDMI_CEC_VERSION_2_0); } 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 b8dfd5672056..605f781b23df 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/PowerStatusMonitorActionTest.java @@ -84,8 +84,6 @@ public class PowerStatusMonitorActionTest { when(mContextSpy.getSystemService(PowerManager.class)).thenReturn(powerManager); when(mIPowerManagerMock.isInteractive()).thenReturn(true); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(mContextSpy); - mHdmiControlService = new HdmiControlService(mContextSpy) { @Override AudioManager getAudioManager() { @@ -116,15 +114,11 @@ public class PowerStatusMonitorActionTest { protected void writeStringSystemProperty(String key, String value) { // do nothing } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; Looper looper = mTestLooper.getLooper(); mHdmiControlService.setIoLooper(looper); + mHdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(mContextSpy)); mNativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( this.mHdmiControlService, mNativeWrapper, mHdmiControlService.getAtomWriter()); @@ -185,6 +179,7 @@ public class PowerStatusMonitorActionTest { mHdmiControlService.getHdmiCecConfig().setIntValue( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_VERSION, HdmiControlManager.HDMI_CEC_VERSION_2_0); + mTestLooper.dispatchAll(); sendMessageFromPlaybackDevice(ADDR_PLAYBACK_1, 0x1000); reportPowerStatus(ADDR_PLAYBACK_1, true, HdmiControlManager.POWER_STATUS_ON); mTestLooper.dispatchAll(); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java index f9160abcbfbf..e82c788020ed 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java @@ -65,8 +65,6 @@ public class SystemAudioInitiationActionFromAvrTest { Context context = InstrumentationRegistry.getTargetContext(); - HdmiCecConfig hdmiCecConfig = new FakeHdmiCecConfig(context); - HdmiControlService hdmiControlService = new HdmiControlService(context) { @Override void sendCecCommand( @@ -164,15 +162,11 @@ public class SystemAudioInitiationActionFromAvrTest { int pathToPortId(int path) { return -1; } - - @Override - protected HdmiCecConfig getHdmiCecConfig() { - return hdmiCecConfig; - } }; Looper looper = mTestLooper.getLooper(); hdmiControlService.setIoLooper(looper); + hdmiControlService.setHdmiCecConfig(new FakeHdmiCecConfig(context)); HdmiCecController.NativeWrapper nativeWrapper = new FakeNativeWrapper(); HdmiCecController hdmiCecController = HdmiCecController.createWithNativeWrapper( hdmiControlService, nativeWrapper, hdmiControlService.getAtomWriter()); |