summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-02-28 10:18:52 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-02-28 10:18:52 +0000
commitc2ef1a133b04171881aec06e7e552711295d233f (patch)
treea853affdf2f4beccc7e0593824da7230e39c3e4c
parentef6667800d945719b45a0f51475fb0e238a9d367 (diff)
parentc6df8e0d2f29e1c6ee0b98ab439371b88ca5ecdd (diff)
Merge "HDMI: Avoid starting SystemAudioInitiationActionFromAvr multiple times" into main
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java8
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java24
2 files changed, 32 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
index 70993ca3e21b..1e90ab279d32 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -317,6 +317,10 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
if ((systemAudioOnPowerOnProp == ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON)
|| ((systemAudioOnPowerOnProp == USE_LAST_STATE_SYSTEM_AUDIO_CONTROL_ON_POWER_ON)
&& lastSystemAudioControlStatus && isSystemAudioControlFeatureEnabled())) {
+ if (hasAction(SystemAudioInitiationActionFromAvr.class)) {
+ Slog.i(TAG, "SystemAudioInitiationActionFromAvr is in progress. Restarting.");
+ removeAction(SystemAudioInitiationActionFromAvr.class);
+ }
addAndStartAction(new SystemAudioInitiationActionFromAvr(this));
}
}
@@ -1032,6 +1036,10 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource {
void onSystemAudioControlFeatureSupportChanged(boolean enabled) {
setSystemAudioControlFeatureEnabled(enabled);
if (enabled) {
+ if (hasAction(SystemAudioInitiationActionFromAvr.class)) {
+ Slog.i(TAG, "SystemAudioInitiationActionFromAvr is in progress. Restarting.");
+ removeAction(SystemAudioInitiationActionFromAvr.class);
+ }
addAndStartAction(new SystemAudioInitiationActionFromAvr(this));
}
}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index a6e05ddc792c..55208972895d 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -364,6 +364,30 @@ public class HdmiCecLocalDeviceAudioSystemTest {
}
@Test
+ public void systemAudioControlOnPowerOn_singleActionStarted() throws Exception {
+ mHdmiCecLocalDeviceAudioSystem.removeAction(SystemAudioInitiationActionFromAvr.class);
+ mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn(
+ Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true);
+ mHdmiCecLocalDeviceAudioSystem.systemAudioControlOnPowerOn(
+ Constants.ALWAYS_SYSTEM_AUDIO_CONTROL_ON_POWER_ON, true);
+ assertThat(
+ mHdmiCecLocalDeviceAudioSystem.getActions(
+ SystemAudioInitiationActionFromAvr.class))
+ .hasSize(1);
+ }
+
+ @Test
+ public void onSystemAudioControlFeatureSupportChanged_singleActionStarted() throws Exception {
+ mHdmiCecLocalDeviceAudioSystem.removeAction(SystemAudioInitiationActionFromAvr.class);
+ mHdmiCecLocalDeviceAudioSystem.onSystemAudioControlFeatureSupportChanged(true);
+ mHdmiCecLocalDeviceAudioSystem.onSystemAudioControlFeatureSupportChanged(true);
+ assertThat(
+ mHdmiCecLocalDeviceAudioSystem.getActions(
+ SystemAudioInitiationActionFromAvr.class))
+ .hasSize(1);
+ }
+
+ @Test
public void handleActiveSource_updateActiveSource() throws Exception {
HdmiCecMessage message = HdmiCecMessageBuilder.buildActiveSource(ADDR_TV, 0x0000);
ActiveSource expectedActiveSource = new ActiveSource(ADDR_TV, 0x0000);