Loading services/core/java/com/android/server/hdmi/HdmiControlService.java +11 −5 Original line number Diff line number Diff line Loading @@ -685,7 +685,7 @@ public class HdmiControlService extends SystemService { setControlEnabled(enabled); break; case Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED: setHdmiCecVolumeControlEnabled(enabled); setHdmiCecVolumeControlEnabledInternal(enabled); break; case Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED: if (isTvDeviceEnabled()) { Loading Loading @@ -3076,6 +3076,14 @@ public class HdmiControlService extends SystemService { } void setHdmiCecVolumeControlEnabled(boolean isHdmiCecVolumeControlEnabled) { setHdmiCecVolumeControlEnabledInternal(isHdmiCecVolumeControlEnabled); writeBooleanSetting(Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, isHdmiCecVolumeControlEnabled); } @VisibleForTesting void setHdmiCecVolumeControlEnabledInternal(boolean isHdmiCecVolumeControlEnabled) { synchronized (mLock) { mHdmiCecVolumeControlEnabled = isHdmiCecVolumeControlEnabled; Loading @@ -3084,8 +3092,6 @@ public class HdmiControlService extends SystemService { if (storedValue != isHdmiCecVolumeControlEnabled) { HdmiLogger.debug("Changing HDMI CEC volume control feature state: %s", isHdmiCecVolumeControlEnabled); writeBooleanSetting(Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, isHdmiCecVolumeControlEnabled); } } announceHdmiCecVolumeControlFeatureChange(isHdmiCecVolumeControlEnabled); Loading Loading @@ -3137,12 +3143,12 @@ public class HdmiControlService extends SystemService { if (enabled) { enableHdmiControlService(); setHdmiCecVolumeControlEnabled( setHdmiCecVolumeControlEnabledInternal( readBooleanSetting(Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)); return; } mHdmiCecVolumeControlEnabled = false; setHdmiCecVolumeControlEnabledInternal(false); // Call the vendor handler before the service is disabled. invokeVendorCommandListenersOnControlStateChanged(false, HdmiControlManager.CONTROL_STATE_CHANGED_REASON_SETTING); Loading services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +41 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; import android.provider.Settings; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; Loading Loading @@ -265,6 +266,30 @@ public class HdmiControlServiceTest { assertThat(mHdmiControlService.isHdmiCecVolumeControlEnabled()).isTrue(); } @Test public void setAndGetCecVolumeControlEnabled_changesSetting() { mHdmiControlService.setHdmiCecVolumeControlEnabled(false); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isFalse(); mHdmiControlService.setHdmiCecVolumeControlEnabled(true); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isTrue(); } @Test public void setAndGetCecVolumeControlEnabledInternal_doesNotChangeSetting() { mHdmiControlService.setHdmiCecVolumeControlEnabledInternal(true); mHdmiControlService.setHdmiCecVolumeControlEnabledInternal(false); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isTrue(); mHdmiControlService.setHdmiCecVolumeControlEnabledInternal(true); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isTrue(); } @Test public void disableAndReenableCec_volumeControlReturnsToOriginalValue() { boolean volumeControlEnabled = true; Loading @@ -278,6 +303,22 @@ public class HdmiControlServiceTest { volumeControlEnabled); } @Test public void disableAndReenableCec_volumeControlFeatureListenersNotified() { mHdmiControlService.setHdmiCecVolumeControlEnabled(true); VolumeControlFeatureCallback callback = new VolumeControlFeatureCallback(); mHdmiControlService.addHdmiCecVolumeControlFeatureListener(callback); mHdmiControlService.setControlEnabled(false); assertThat(callback.mCallbackReceived).isTrue(); assertThat(callback.mVolumeControlEnabled).isFalse(); mHdmiControlService.setControlEnabled(true); assertThat(callback.mVolumeControlEnabled).isTrue(); } @Test public void addHdmiCecVolumeControlFeatureListener_emitsCurrentState_enabled() { mHdmiControlService.setHdmiCecVolumeControlEnabled(true); Loading Loading
services/core/java/com/android/server/hdmi/HdmiControlService.java +11 −5 Original line number Diff line number Diff line Loading @@ -685,7 +685,7 @@ public class HdmiControlService extends SystemService { setControlEnabled(enabled); break; case Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED: setHdmiCecVolumeControlEnabled(enabled); setHdmiCecVolumeControlEnabledInternal(enabled); break; case Global.HDMI_CONTROL_AUTO_WAKEUP_ENABLED: if (isTvDeviceEnabled()) { Loading Loading @@ -3076,6 +3076,14 @@ public class HdmiControlService extends SystemService { } void setHdmiCecVolumeControlEnabled(boolean isHdmiCecVolumeControlEnabled) { setHdmiCecVolumeControlEnabledInternal(isHdmiCecVolumeControlEnabled); writeBooleanSetting(Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, isHdmiCecVolumeControlEnabled); } @VisibleForTesting void setHdmiCecVolumeControlEnabledInternal(boolean isHdmiCecVolumeControlEnabled) { synchronized (mLock) { mHdmiCecVolumeControlEnabled = isHdmiCecVolumeControlEnabled; Loading @@ -3084,8 +3092,6 @@ public class HdmiControlService extends SystemService { if (storedValue != isHdmiCecVolumeControlEnabled) { HdmiLogger.debug("Changing HDMI CEC volume control feature state: %s", isHdmiCecVolumeControlEnabled); writeBooleanSetting(Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, isHdmiCecVolumeControlEnabled); } } announceHdmiCecVolumeControlFeatureChange(isHdmiCecVolumeControlEnabled); Loading Loading @@ -3137,12 +3143,12 @@ public class HdmiControlService extends SystemService { if (enabled) { enableHdmiControlService(); setHdmiCecVolumeControlEnabled( setHdmiCecVolumeControlEnabledInternal( readBooleanSetting(Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)); return; } mHdmiCecVolumeControlEnabled = false; setHdmiCecVolumeControlEnabledInternal(false); // Call the vendor handler before the service is disabled. invokeVendorCommandListenersOnControlStateChanged(false, HdmiControlManager.CONTROL_STATE_CHANGED_REASON_SETTING); Loading
services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +41 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,7 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; import android.provider.Settings; import androidx.test.InstrumentationRegistry; import androidx.test.filters.SmallTest; Loading Loading @@ -265,6 +266,30 @@ public class HdmiControlServiceTest { assertThat(mHdmiControlService.isHdmiCecVolumeControlEnabled()).isTrue(); } @Test public void setAndGetCecVolumeControlEnabled_changesSetting() { mHdmiControlService.setHdmiCecVolumeControlEnabled(false); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isFalse(); mHdmiControlService.setHdmiCecVolumeControlEnabled(true); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isTrue(); } @Test public void setAndGetCecVolumeControlEnabledInternal_doesNotChangeSetting() { mHdmiControlService.setHdmiCecVolumeControlEnabledInternal(true); mHdmiControlService.setHdmiCecVolumeControlEnabledInternal(false); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isTrue(); mHdmiControlService.setHdmiCecVolumeControlEnabledInternal(true); assertThat(mHdmiControlService.readBooleanSetting( Settings.Global.HDMI_CONTROL_VOLUME_CONTROL_ENABLED, true)).isTrue(); } @Test public void disableAndReenableCec_volumeControlReturnsToOriginalValue() { boolean volumeControlEnabled = true; Loading @@ -278,6 +303,22 @@ public class HdmiControlServiceTest { volumeControlEnabled); } @Test public void disableAndReenableCec_volumeControlFeatureListenersNotified() { mHdmiControlService.setHdmiCecVolumeControlEnabled(true); VolumeControlFeatureCallback callback = new VolumeControlFeatureCallback(); mHdmiControlService.addHdmiCecVolumeControlFeatureListener(callback); mHdmiControlService.setControlEnabled(false); assertThat(callback.mCallbackReceived).isTrue(); assertThat(callback.mVolumeControlEnabled).isFalse(); mHdmiControlService.setControlEnabled(true); assertThat(callback.mVolumeControlEnabled).isTrue(); } @Test public void addHdmiCecVolumeControlFeatureListener_emitsCurrentState_enabled() { mHdmiControlService.setHdmiCecVolumeControlEnabled(true); Loading