summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java12
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java12
2 files changed, 24 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 ae43ddff1d6b..71ee746761ae 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java
@@ -102,6 +102,18 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDevice {
}
}
+ @ServiceThreadOnly
+ protected boolean handleActiveSource(HdmiCecMessage message) {
+ assertRunOnServiceThread();
+ int logicalAddress = message.getSource();
+ int physicalAddress = HdmiUtils.twoBytesToInt(message.getParams());
+ ActiveSource activeSource = ActiveSource.of(logicalAddress, physicalAddress);
+ if (!mActiveSource.equals(activeSource)) {
+ setActiveSource(activeSource);
+ }
+ return true;
+ }
+
@Override
@ServiceThreadOnly
protected int getPreferredAddress() {
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 b392935cc9b5..232fb8c192c3 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -30,6 +30,7 @@ import android.os.Looper;
import android.os.test.TestLooper;
import android.support.test.filters.SmallTest;
+import com.android.server.hdmi.HdmiCecLocalDevice.ActiveSource;
import java.util.ArrayList;
import org.junit.Before;
import org.junit.Test;
@@ -296,4 +297,15 @@ public class HdmiCecLocalDeviceAudioSystemTest {
assertThat(mHdmiCecLocalDeviceAudioSystem
.getActions(SystemAudioInitiationActionFromAvr.class)).isNotEmpty();
}
+
+ @Test
+ public void handleActiveSource_updateActiveSource() {
+ HdmiCecMessage message = HdmiCecMessageBuilder
+ .buildActiveSource(ADDR_TV, 0x0000);
+ ActiveSource expectedActiveSource = new ActiveSource(ADDR_TV, 0x0000);
+
+ assertTrue(mHdmiCecLocalDeviceAudioSystem.handleActiveSource(message));
+ mTestLooper.dispatchAll();
+ assertTrue(mHdmiCecLocalDeviceAudioSystem.getActiveSource().equals(expectedActiveSource));
+ }
}