From e30f993a808e11fa84891c7a18a97e8cc7ad289c Mon Sep 17 00:00:00 2001 From: Amy Date: Fri, 13 Jul 2018 13:54:52 -0700 Subject: [PATCH] Add handleActiveSource() to update atom local active source. Test: atest com.android.server.hdmi Change-Id: Ic33a144e4b9c5055a76626b59c2d5293c7b82958 --- .../server/hdmi/HdmiCecLocalDeviceAudioSystem.java | 12 ++++++++++++ .../hdmi/HdmiCecLocalDeviceAudioSystemTest.java | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java index ae43ddff1d6bf..71ee746761ae4 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 b392935cc9b5e..232fb8c192c37 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)); + } }