diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index 700b36328a47e..4e04b72baab20 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -3130,7 +3130,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);