Merge "Enable CEC version limiting tests" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
05955bd175
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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() {
|
||||
@@ -99,34 +97,25 @@ public class HdmiCecPowerStatusControllerTest {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user