diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java | 12 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java | 12 |
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)); + } } |