diff --git a/services/core/java/com/android/server/hdmi/HdmiControlService.java b/services/core/java/com/android/server/hdmi/HdmiControlService.java index fac8cfe4ab867..e5a8a17df5250 100644 --- a/services/core/java/com/android/server/hdmi/HdmiControlService.java +++ b/services/core/java/com/android/server/hdmi/HdmiControlService.java @@ -634,6 +634,12 @@ public class HdmiControlService extends SystemService { // on boot, if device is interactive, set HDMI CEC state as powered on as well if (mPowerManager.isInteractive() && isPowerStandbyOrTransient()) { mPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON); + // Start all actions that were queued because the device was in standby + if (mAddressAllocated) { + for (HdmiCecLocalDevice localDevice : getAllLocalDevices()) { + localDevice.startQueuedActions(); + } + } } } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java index d03b67480b725..01bd04c6f06bc 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java @@ -33,6 +33,8 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; @@ -59,6 +61,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import java.util.ArrayList; @@ -320,6 +323,18 @@ public class HdmiControlServiceTest { assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus); } + @Test + public void normalBoot_queuedActionsStartedAfterBoot() { + Mockito.clearInvocations(mAudioSystemDeviceSpy); + Mockito.clearInvocations(mPlaybackDeviceSpy); + + mHdmiControlServiceSpy.onBootPhase(PHASE_BOOT_COMPLETED); + mTestLooper.dispatchAll(); + + verify(mAudioSystemDeviceSpy, times(1)).startQueuedActions(); + verify(mPlaybackDeviceSpy, times(1)).startQueuedActions(); + } + @Test public void initialPowerStatus_normalBoot_goToStandby_broadcastsPowerStatus_2_0() { mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(