Merge "Fix stuck HDMI-CEC actions after boot" into stage-aosp-master

This commit is contained in:
TreeHugger Robot
2021-09-28 14:00:03 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 0 deletions

View File

@@ -634,6 +634,12 @@ public class HdmiControlService extends SystemService {
// on boot, if device is interactive, set HDMI CEC state as powered on as well // on boot, if device is interactive, set HDMI CEC state as powered on as well
if (mPowerManager.isInteractive() && isPowerStandbyOrTransient()) { if (mPowerManager.isInteractive() && isPowerStandbyOrTransient()) {
mPowerStatusController.setPowerStatus(HdmiControlManager.POWER_STATUS_ON); 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();
}
}
} }
} }

View File

@@ -33,6 +33,8 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy; 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 static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
@@ -59,6 +61,7 @@ import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.junit.runners.JUnit4; import org.junit.runners.JUnit4;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.ArrayList; import java.util.ArrayList;
@@ -320,6 +323,18 @@ public class HdmiControlServiceTest {
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(reportPowerStatus); 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 @Test
public void initialPowerStatus_normalBoot_goToStandby_broadcastsPowerStatus_2_0() { public void initialPowerStatus_normalBoot_goToStandby_broadcastsPowerStatus_2_0() {
mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue( mHdmiControlServiceSpy.getHdmiCecConfig().setIntValue(