Add tests to verify volume command behavior
Tests verify that a Playback device will send volume commands to the correct target device. Verify that volume commands can be sent both when the device is active source and not the active source. Test: atest HdmiCecLocalDevicePlaybackTest Bug: 161052729 Change-Id: I592451412203efb53f0d8a9dbbe7f8c80668df77
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.server.hdmi;
|
||||
|
||||
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
|
||||
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
|
||||
import static com.android.server.hdmi.Constants.ADDR_TV;
|
||||
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
|
||||
@@ -692,6 +693,82 @@ public class HdmiCecLocalDevicePlaybackTest {
|
||||
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(keyReleased);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendVolumeKeyEvent_toTv_activeSource() {
|
||||
mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
|
||||
mHdmiControlService.setSystemAudioActivated(false);
|
||||
mHdmiControlService.setActiveSource(mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
|
||||
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true);
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, false);
|
||||
|
||||
HdmiCecMessage pressed = HdmiCecMessageBuilder.buildUserControlPressed(
|
||||
mPlaybackLogicalAddress, ADDR_TV, HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
|
||||
HdmiCecMessage released = HdmiCecMessageBuilder.buildUserControlReleased(
|
||||
mPlaybackLogicalAddress, ADDR_TV);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue();
|
||||
assertThat(mNativeWrapper.getResultMessages()).containsAllOf(pressed, released);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendVolumeKeyEvent_toAudio_activeSource() {
|
||||
mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
|
||||
mHdmiControlService.setSystemAudioActivated(true);
|
||||
mHdmiControlService.setActiveSource(mPlaybackLogicalAddress, mPlaybackPhysicalAddress);
|
||||
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true);
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, false);
|
||||
|
||||
HdmiCecMessage pressed = HdmiCecMessageBuilder.buildUserControlPressed(
|
||||
mPlaybackLogicalAddress, ADDR_AUDIO_SYSTEM, HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
|
||||
HdmiCecMessage released = HdmiCecMessageBuilder.buildUserControlReleased(
|
||||
mPlaybackLogicalAddress, ADDR_AUDIO_SYSTEM);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isTrue();
|
||||
assertThat(mNativeWrapper.getResultMessages()).containsAllOf(pressed, released);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendVolumeKeyEvent_toTv_inactiveSource() {
|
||||
mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
|
||||
mHdmiControlService.setSystemAudioActivated(false);
|
||||
mHdmiControlService.setActiveSource(ADDR_TV, 0x0000);
|
||||
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true);
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, false);
|
||||
|
||||
HdmiCecMessage pressed = HdmiCecMessageBuilder.buildUserControlPressed(
|
||||
mPlaybackLogicalAddress, ADDR_TV, HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
|
||||
HdmiCecMessage released = HdmiCecMessageBuilder.buildUserControlReleased(
|
||||
mPlaybackLogicalAddress, ADDR_TV);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse();
|
||||
assertThat(mNativeWrapper.getResultMessages()).containsAllOf(pressed, released);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendVolumeKeyEvent_toAudio_inactiveSource() {
|
||||
mHdmiControlService.setHdmiCecVolumeControlEnabled(true);
|
||||
mHdmiControlService.setSystemAudioActivated(true);
|
||||
mHdmiControlService.setActiveSource(ADDR_TV, 0x0000);
|
||||
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true);
|
||||
mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, false);
|
||||
|
||||
HdmiCecMessage pressed = HdmiCecMessageBuilder.buildUserControlPressed(
|
||||
mPlaybackLogicalAddress, ADDR_AUDIO_SYSTEM, HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
|
||||
HdmiCecMessage released = HdmiCecMessageBuilder.buildUserControlReleased(
|
||||
mPlaybackLogicalAddress, ADDR_AUDIO_SYSTEM);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
assertThat(mHdmiCecLocalDevicePlayback.mIsActiveSource).isFalse();
|
||||
assertThat(mNativeWrapper.getResultMessages()).containsAllOf(pressed, released);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleSetStreamPath_broadcastsActiveSource() {
|
||||
HdmiCecMessage setStreamPath = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV,
|
||||
|
||||
Reference in New Issue
Block a user