From 6896a53257bf51d18228a6e85a62fb1aac0532b5 Mon Sep 17 00:00:00 2001 From: Marvin Ramin Date: Mon, 15 Jun 2020 13:18:09 +0200 Subject: [PATCH] CEC: Prevent overwriting volume control Settings Prevent overwriting CEC volume control Settings value when disabling CEC globally. This prevents an issue where disabling and re-enabling CEC will leave volume control disabled, as the Settings value gets set to false when disabling CEC. Bug: 158307190 Test: atest HdmiControlService Change-Id: I34d24185f284dfb89c02f39a3c456045d1ddd227 --- .../com/android/server/hdmi/HdmiControlService.java | 2 +- .../android/server/hdmi/HdmiControlServiceTest.java | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index b9669c74a6dfa..87a908c10721a 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -3142,7 +3142,7 @@ public class HdmiControlService extends SystemService { return; } - setHdmiCecVolumeControlEnabled(false); + mHdmiCecVolumeControlEnabled = false; // Call the vendor handler before the service is disabled. invokeVendorCommandListenersOnControlStateChanged(false, HdmiControlManager.CONTROL_STATE_CHANGED_REASON_SETTING); 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 c34b8e19a41d1..ac44ccea21069 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java @@ -263,6 +263,19 @@ public class HdmiControlServiceTest { assertThat(mHdmiControlService.isHdmiCecVolumeControlEnabled()).isTrue(); } + @Test + public void disableAndReenableCec_volumeControlReturnsToOriginalValue() { + boolean volumeControlEnabled = true; + mHdmiControlService.setHdmiCecVolumeControlEnabled(volumeControlEnabled); + + mHdmiControlService.setControlEnabled(false); + assertThat(mHdmiControlService.isHdmiCecVolumeControlEnabled()).isFalse(); + + mHdmiControlService.setControlEnabled(true); + assertThat(mHdmiControlService.isHdmiCecVolumeControlEnabled()).isEqualTo( + volumeControlEnabled); + } + @Test public void addHdmiCecVolumeControlFeatureListener_emitsCurrentState_enabled() { mHdmiControlService.setHdmiCecVolumeControlEnabled(true);