Merge "[CEC] Skip <OTP> when Power mode set to NONE"

This commit is contained in:
Michal Olech
2022-04-08 19:52:38 +00:00
committed by Android (Google) Code Review
2 changed files with 42 additions and 10 deletions

View File

@@ -306,16 +306,23 @@ public class HdmiCecLocalDevicePlayback extends HdmiCecLocalDeviceSource {
@Override
@ServiceThreadOnly
protected void onInitializeCecComplete(int initiatedBy) {
if (initiatedBy == HdmiControlService.INITIATED_BY_SCREEN_ON) {
oneTouchPlay(new IHdmiControlCallback.Stub() {
@Override
public void onComplete(int result) {
if (result != HdmiControlManager.RESULT_SUCCESS) {
Slog.w(TAG, "Failed to complete One Touch Play. result=" + result);
}
}
});
if (initiatedBy != HdmiControlService.INITIATED_BY_SCREEN_ON) {
return;
}
@HdmiControlManager.PowerControlMode
String powerControlMode = mService.getHdmiCecConfig().getStringValue(
HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE);
if (powerControlMode.equals(HdmiControlManager.POWER_CONTROL_MODE_NONE)) {
return;
}
oneTouchPlay(new IHdmiControlCallback.Stub() {
@Override
public void onComplete(int result) {
if (result != HdmiControlManager.RESULT_SUCCESS) {
Slog.w(TAG, "Failed to complete One Touch Play. result=" + result);
}
}
});
}
@Override

View File

@@ -982,7 +982,11 @@ public class HdmiCecLocalDevicePlaybackTest {
}
@Test
public void handleOnInitializeCecComplete_ByScreenOn() {
public void handleOnInitializeCecComplete_ByScreenOn_PowerControlModeTv() {
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setStringValue(
HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE,
HdmiControlManager.POWER_CONTROL_MODE_TV);
mHdmiCecLocalDevicePlayback.onInitializeCecComplete(
mHdmiControlService.INITIATED_BY_SCREEN_ON);
mTestLooper.dispatchAll();
@@ -998,6 +1002,27 @@ public class HdmiCecLocalDevicePlaybackTest {
assertThat(mNativeWrapper.getResultMessages()).contains(textViewOn);
}
@Test
public void handleOnInitializeCecComplete_ByScreenOn_PowerControlModeNone() {
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setStringValue(
HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE,
HdmiControlManager.POWER_CONTROL_MODE_NONE);
mHdmiCecLocalDevicePlayback.onInitializeCecComplete(
mHdmiControlService.INITIATED_BY_SCREEN_ON);
mTestLooper.dispatchAll();
HdmiCecMessage activeSource =
HdmiCecMessageBuilder.buildActiveSource(mPlaybackLogicalAddress,
mPlaybackPhysicalAddress);
HdmiCecMessage textViewOn =
HdmiCecMessageBuilder.buildTextViewOn(mPlaybackLogicalAddress,
ADDR_TV);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(activeSource);
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(textViewOn);
}
@Test
public void handleOnInitializeCecComplete_ByWakeUpMessage() {
mHdmiCecLocalDevicePlayback.onInitializeCecComplete(