From bf9be47772b7ffdf0b1fe5033b2ecf2907bd2731 Mon Sep 17 00:00:00 2001 From: Michal Olech Date: Thu, 31 Mar 2022 15:31:15 +0200 Subject: [PATCH] [CEC] Skip when Power mode set to NONE Bug: 225045227 Test: atest HdmiCecLocalDevicePlaybackTest Change-Id: Ief62bdc681b88b5e14dd5b3001d22424a94c1e6b --- .../hdmi/HdmiCecLocalDevicePlayback.java | 25 ++++++++++------- .../hdmi/HdmiCecLocalDevicePlaybackTest.java | 27 ++++++++++++++++++- 2 files changed, 42 insertions(+), 10 deletions(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java index ccb27eef20757..3632046a776e6 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDevicePlayback.java @@ -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 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 484b5a8dae1ad..0f6addb452a1f 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -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(