diff options
| author | 2020-11-18 11:49:27 +0000 | |
|---|---|---|
| committer | 2020-11-18 11:49:27 +0000 | |
| commit | 81cd2036b1026fabfedb28ef4035a8aa53e6480b (patch) | |
| tree | 4e330397ac4b1b67a69d43eea24d8d13fae1d2dc | |
| parent | ebaa18e292002b321e974049b11e9617e34f18f7 (diff) | |
| parent | bd44ca5addc9f4344e671c7450bfa35bfea9c2e0 (diff) | |
Merge "Verify that the <Standby> message is sent on next standby"
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java index cdb49ad54f1e..ce3b8d618747 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -18,6 +18,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_INVALID; +import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1; import static com.android.server.hdmi.Constants.ADDR_TV; import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC; @@ -35,6 +36,7 @@ import android.os.Looper; import android.os.PowerManager; import android.os.test.TestLooper; import android.platform.test.annotations.Presubmit; +import android.provider.Settings.Global; import android.sysprop.HdmiProperties; import android.view.KeyEvent; @@ -93,6 +95,12 @@ public class HdmiCecLocalDevicePlaybackTest { @Override void standby() { mStandby = true; + mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); + } + + @Override + boolean isStandbyMessageReceived() { + return mStandby; } @Override @@ -126,6 +134,7 @@ public class HdmiCecLocalDevicePlaybackTest { } }; + mHdmiControlService.writeBooleanSetting(Global.HDMI_CONTROL_AUTO_DEVICE_OFF_ENABLED, true); mHdmiCecLocalDevicePlayback = new HdmiCecLocalDevicePlayback(mHdmiControlService); mHdmiCecLocalDevicePlayback.init(); mHdmiControlService.setIoLooper(mMyLooper); @@ -813,6 +822,46 @@ public class HdmiCecLocalDevicePlaybackTest { } @Test + public void losingActiveSource_standbyNow_verifyStandbyMessageIsSentOnNextStandby() { + // As described in b/161097846. + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setStringValue( + HdmiControlManager.CEC_SETTING_NAME_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST, + HdmiControlManager.POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_STANDBY_NOW); + mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setStringValue( + HdmiControlManager.CEC_SETTING_NAME_SEND_STANDBY_ON_SLEEP, + HdmiControlManager.SEND_STANDBY_ON_SLEEP_BROADCAST); + mStandby = false; + // 1. DUT is <AS>. + HdmiCecMessage message1 = HdmiCecMessageBuilder.buildActiveSource(ADDR_PLAYBACK_1, + mPlaybackPhysicalAddress); + assertThat(mHdmiCecLocalDevicePlayback.handleActiveSource(message1)).isTrue(); + assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isTrue(); + assertThat(mStandby).isFalse(); + // 2. DUT loses <AS> and goes to sleep. + HdmiCecMessage message2 = HdmiCecMessageBuilder.buildActiveSource(ADDR_TV, 0x0000); + assertThat(mHdmiCecLocalDevicePlayback.handleActiveSource(message2)).isTrue(); + assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isFalse(); + assertThat(mStandby).isTrue(); + // 3. DUT becomes <AS> again. + mWokenUp = false; + HdmiCecMessage setStreamPath = HdmiCecMessageBuilder.buildSetStreamPath(ADDR_TV, + mPlaybackPhysicalAddress); + mHdmiCecLocalDevicePlayback.dispatchMessage(setStreamPath); + mTestLooper.dispatchAll(); + HdmiCecMessage activeSource = HdmiCecMessageBuilder.buildActiveSource( + mHdmiCecLocalDevicePlayback.mAddress, mPlaybackPhysicalAddress); + assertThat(mNativeWrapper.getResultMessages()).contains(activeSource); + assertThat(mWokenUp).isTrue(); + assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isTrue(); + // 4. DUT turned off. + mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); + mTestLooper.dispatchAll(); + HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( + mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); + assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessageBroadcast); + } + + @Test public void sendVolumeKeyEvent_up_volumeEnabled() { mHdmiControlService.setHdmiCecVolumeControlEnabled(true); mHdmiCecLocalDevicePlayback.sendVolumeKeyEvent(KeyEvent.KEYCODE_VOLUME_UP, true); |