summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amy <amyjojo@google.com> 2018-07-13 13:54:52 -0700
committer Shubang <shubang@google.com> 2018-07-20 18:24:49 -0700
commite30f993a808e11fa84891c7a18a97e8cc7ad289c (patch)
tree8033eaf5aced0d5518edeb535abc05512b691516
parent4c436c0f4d6bdea6f4d285b627a4f5618eaffab3 (diff)
Add handleActiveSource() to update atom local active source.
Test: atest com.android.server.hdmi Change-Id: Ic33a144e4b9c5055a76626b59c2d5293c7b82958
-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));
+ }
}