Merge "Pause media session on TV power toggle" into sc-dev

This commit is contained in:
Yan Han
2021-02-17 18:08:23 +00:00
committed by Android (Google) Code Review
2 changed files with 34 additions and 2 deletions

View File

@@ -139,8 +139,12 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice {
@ServiceThreadOnly
void toggleAndFollowTvPower() {
assertRunOnServiceThread();
// Wake up Android framework to take over CEC control from the microprocessor.
mService.wakeUp();
if (mService.getPowerManager().isInteractive()) {
mService.pauseActiveMediaSessions();
} else {
// Wake up Android framework to take over CEC control from the microprocessor.
mService.wakeUp();
}
mService.queryDisplayStatus(new IHdmiControlCallback.Stub() {
@Override
public void onComplete(int status) {

View File

@@ -24,6 +24,8 @@ import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.hardware.hdmi.HdmiControlManager;
import android.hardware.hdmi.HdmiDeviceInfo;
@@ -34,6 +36,7 @@ import android.os.IPowerManager;
import android.os.IThermalService;
import android.os.Looper;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.test.TestLooper;
import android.platform.test.annotations.Presubmit;
import android.sysprop.HdmiProperties;
@@ -1551,6 +1554,31 @@ public class HdmiCecLocalDevicePlaybackTest {
assertThat(mStandby).isFalse();
}
@Test
public void toggleAndFollowTvPower_isInteractive() throws RemoteException {
when(mIPowerManagerMock.isInteractive()).thenReturn(true);
mActiveMediaSessionsPaused = false;
mWokenUp = false;
mHdmiControlService.toggleAndFollowTvPower();
assertThat(mActiveMediaSessionsPaused).isTrue();
assertThat(mWokenUp).isFalse();
}
@Test
public void toggleAndFollowTvPower_isNotInteractive() throws RemoteException {
when(mIPowerManagerMock.isInteractive()).thenReturn(false);
mActiveMediaSessionsPaused = false;
mWokenUp = false;
mHdmiControlService.toggleAndFollowTvPower();
assertThat(mActiveMediaSessionsPaused).isFalse();
assertThat(mWokenUp).isTrue();
}
@Test
public void shouldHandleTvPowerKey_CecDisabled() {
mHdmiCecLocalDevicePlayback.mService.getHdmiCecConfig().setIntValue(