Merge "Update handling of incoming CEC power key presses"
This commit is contained in:
committed by
Android (Google) Code Review
commit
02465ca6c2
@@ -623,6 +623,14 @@ abstract class HdmiCecLocalDevice {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (isPowerOffOrToggleCommand(message) || isPowerOnOrToggleCommand(message)) {
|
||||
// Power commands should already be handled above. Don't continue and convert the CEC
|
||||
// keycode to Android keycode.
|
||||
// Do not <Feature Abort> as the local device should already be in the correct power
|
||||
// state.
|
||||
return true;
|
||||
}
|
||||
|
||||
final long downTime = SystemClock.uptimeMillis();
|
||||
final byte[] params = message.getParams();
|
||||
final int keycode = HdmiCecKeycode.cecKeycodeAndParamsToAndroidKey(params);
|
||||
|
||||
@@ -112,6 +112,7 @@ public class HdmiCecLocalDeviceTest {
|
||||
private HdmiCecMessageValidator mMessageValidator;
|
||||
private static byte[] param;
|
||||
private boolean mStandbyMessageReceived;
|
||||
private boolean mWakeupMessageReceived;
|
||||
private boolean isControlEnabled;
|
||||
private int mPowerStatus;
|
||||
|
||||
@@ -130,10 +131,22 @@ public class HdmiCecLocalDeviceTest {
|
||||
|| mPowerStatus == HdmiControlManager.POWER_STATUS_TRANSIENT_TO_ON;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean isPowerStandbyOrTransient() {
|
||||
return mPowerStatus == HdmiControlManager.POWER_STATUS_STANDBY
|
||||
|| mPowerStatus
|
||||
== HdmiControlManager.POWER_STATUS_TRANSIENT_TO_STANDBY;
|
||||
}
|
||||
|
||||
@Override
|
||||
void standby() {
|
||||
mStandbyMessageReceived = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
void wakeUp() {
|
||||
mWakeupMessageReceived = true;
|
||||
}
|
||||
};
|
||||
mHdmiControlService.setIoLooper(mTestLooper.getLooper());
|
||||
mHdmiCecController = HdmiCecController.createWithNativeWrapper(
|
||||
@@ -276,4 +289,99 @@ public class HdmiCecLocalDeviceTest {
|
||||
assertThat(result).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_power_localDeviceInStandby_shouldTurnOn() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_STANDBY;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isTrue();
|
||||
assertThat(mStandbyMessageReceived).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_power_localDeviceOn_shouldNotChangePowerStatus() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_ON;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isFalse();
|
||||
assertThat(mStandbyMessageReceived).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_powerToggleFunction_localDeviceInStandby_shouldTurnOn() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_STANDBY;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER_TOGGLE_FUNCTION));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isTrue();
|
||||
assertThat(mStandbyMessageReceived).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_powerToggleFunction_localDeviceOn_shouldTurnOff() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_ON;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER_TOGGLE_FUNCTION));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isFalse();
|
||||
assertThat(mStandbyMessageReceived).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_powerOnFunction_localDeviceInStandby_shouldTurnOn() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_STANDBY;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER_ON_FUNCTION));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isTrue();
|
||||
assertThat(mStandbyMessageReceived).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_powerOnFunction_localDeviceOn_noPowerStatusChange() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_ON;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER_ON_FUNCTION));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isFalse();
|
||||
assertThat(mStandbyMessageReceived).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_powerOffFunction_localDeviceStandby_noPowerStatusChange() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_STANDBY;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER_OFF_FUNCTION));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isFalse();
|
||||
assertThat(mStandbyMessageReceived).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void handleUserControlPressed_powerOffFunction_localDeviceOn_shouldTurnOff() {
|
||||
mPowerStatus = HdmiControlManager.POWER_STATUS_ON;
|
||||
boolean result = mHdmiLocalDevice.handleUserControlPressed(
|
||||
HdmiCecMessageBuilder.buildUserControlPressed(ADDR_TV, ADDR_PLAYBACK_1,
|
||||
HdmiCecKeycode.CEC_KEYCODE_POWER_OFF_FUNCTION));
|
||||
|
||||
assertThat(result).isTrue();
|
||||
assertThat(mWakeupMessageReceived).isFalse();
|
||||
assertThat(mStandbyMessageReceived).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user