diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java | 8 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java | 28 |
2 files changed, 34 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java index 04acd5187f77..2ed84811250e 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java @@ -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) { 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 5342486f930b..b11ac24b9a29 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -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; @@ -1552,6 +1555,31 @@ public class HdmiCecLocalDevicePlaybackTest { } @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( HdmiControlManager.CEC_SETTING_NAME_HDMI_CEC_ENABLED, |