Add handleActiveSource() to update atom local active source.

Test: atest com.android.server.hdmi
Change-Id: Ic33a144e4b9c5055a76626b59c2d5293c7b82958
This commit is contained in:
Amy
2018-07-13 13:54:52 -07:00
committed by Shubang
parent 4c436c0f4d
commit e30f993a80
2 changed files with 24 additions and 0 deletions

View File

@@ -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() {

View File

@@ -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));
}
}