summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-11-18 11:49:27 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-11-18 11:49:27 +0000
commit81cd2036b1026fabfedb28ef4035a8aa53e6480b (patch)
tree4e330397ac4b1b67a69d43eea24d8d13fae1d2dc
parentebaa18e292002b321e974049b11e9617e34f18f7 (diff)
parentbd44ca5addc9f4344e671c7450bfa35bfea9c2e0 (diff)
Merge "Verify that the <Standby> message is sent on next standby"
-rw-r--r--services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java49
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);