Send <Inactive Source> if put to standby by connected device
<Inactive Source> should only be suppressed if followed by a <Standby> message. Since no <Standby> is sent by the device if it was put to sleep by a connected device via CEC, <Inactive Source> should be sent. Test: atest Bug: 183603416 Change-Id: Ibb4393c82b5ba7da13983877e1f91172a19f9add
This commit is contained in:
@@ -143,7 +143,12 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
|
|||||||
boolean mTvSendStandbyOnSleep = mService.getHdmiCecConfig().getIntValue(
|
boolean mTvSendStandbyOnSleep = mService.getHdmiCecConfig().getIntValue(
|
||||||
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP)
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP)
|
||||||
== HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED;
|
== HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED;
|
||||||
if (initiatedByCec || !mTvSendStandbyOnSleep || !wasActiveSource) {
|
if (!wasActiveSource) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (initiatedByCec || !mTvSendStandbyOnSleep) {
|
||||||
|
mService.sendCecCommand(HdmiCecMessageBuilder.buildInactiveSource(mAddress,
|
||||||
|
mService.getPhysicalAddress()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
switch (standbyAction) {
|
switch (standbyAction) {
|
||||||
|
|||||||
@@ -830,6 +830,31 @@ public class HdmiCecLocalDevicePlaybackTest {
|
|||||||
assertThat(mNativeWrapper.getResultMessages()).contains(inactiveSource);
|
assertThat(mNativeWrapper.getResultMessages()).contains(inactiveSource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleOnStandby_CecMessageReceived() {
|
||||||
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setStringValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE,
|
||||||
|
HdmiControlManager.POWER_CONTROL_MODE_TV);
|
||||||
|
mHdmiCecLocalDevicePlayback.setActiveSource(mPlaybackLogicalAddress,
|
||||||
|
mPlaybackPhysicalAddress, "HdmiCecLocalDevicePlaybackTest");
|
||||||
|
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(
|
||||||
|
HdmiControlManager.CEC_SETTING_NAME_TV_SEND_STANDBY_ON_SLEEP,
|
||||||
|
HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED);
|
||||||
|
mHdmiCecLocalDevicePlayback.onStandby(true, HdmiControlService.STANDBY_SCREEN_OFF);
|
||||||
|
mTestLooper.dispatchAll();
|
||||||
|
|
||||||
|
HdmiCecMessage standbyMessageToTv = HdmiCecMessageBuilder.buildStandby(
|
||||||
|
mHdmiCecLocalDevicePlayback.mAddress, ADDR_TV);
|
||||||
|
HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby(
|
||||||
|
mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST);
|
||||||
|
HdmiCecMessage inactiveSource = HdmiCecMessageBuilder.buildInactiveSource(
|
||||||
|
mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
|
||||||
|
|
||||||
|
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageToTv);
|
||||||
|
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(standbyMessageBroadcast);
|
||||||
|
assertThat(mNativeWrapper.getResultMessages()).contains(inactiveSource);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void handleOnInitializeCecComplete_ByEnableCec() {
|
public void handleOnInitializeCecComplete_ByEnableCec() {
|
||||||
mHdmiCecLocalDevicePlayback.onInitializeCecComplete(
|
mHdmiCecLocalDevicePlayback.onInitializeCecComplete(
|
||||||
|
|||||||
Reference in New Issue
Block a user