Merge changes I12c7de63,I241cf0fc into sc-dev
* changes: Update handling of Remote Control Passthrough messages Remove RECORD_TV_SCREEN handling from playback device
This commit is contained in:
committed by
Android (Google) Code Review
commit
56dac4ccf4
@@ -654,7 +654,9 @@ abstract class HdmiCecLocalDevice {
|
||||
FOLLOWER_SAFETY_TIMEOUT);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
mService.maySendFeatureAbortCommand(message, Constants.ABORT_INVALID_OPERAND);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ServiceThreadOnly
|
||||
@@ -666,9 +668,8 @@ abstract class HdmiCecLocalDevice {
|
||||
final long upTime = SystemClock.uptimeMillis();
|
||||
injectKeyEvent(upTime, KeyEvent.ACTION_UP, mLastKeycode, 0);
|
||||
mLastKeycode = HdmiCecKeycode.UNSUPPORTED_KEYCODE;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void injectKeyEvent(long time, int action, int keycode, int repeat) {
|
||||
@@ -788,10 +789,7 @@ abstract class HdmiCecLocalDevice {
|
||||
}
|
||||
|
||||
protected boolean handleRecordTvScreen(HdmiCecMessage message) {
|
||||
// The default behavior of <Record TV Screen> is replying <Feature Abort> with
|
||||
// "Cannot provide source".
|
||||
mService.maySendFeatureAbortCommand(message, Constants.ABORT_CANNOT_PROVIDE_SOURCE);
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean handleTimerClearedStatus(HdmiCecMessage message) {
|
||||
|
||||
@@ -1079,7 +1079,10 @@ final class HdmiCecLocalDeviceTv extends HdmiCecLocalDevice {
|
||||
message.getSource(),
|
||||
HdmiControlManager.ONE_TOUCH_RECORD_PREVIOUS_RECORDING_IN_PROGRESS);
|
||||
}
|
||||
return super.handleRecordTvScreen(message);
|
||||
// The default behavior of <Record TV Screen> is replying <Feature Abort> with
|
||||
// "Cannot provide source".
|
||||
mService.maySendFeatureAbortCommand(message, Constants.ABORT_CANNOT_PROVIDE_SOURCE);
|
||||
return true;
|
||||
}
|
||||
|
||||
int recorderAddress = message.getSource();
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.server.hdmi;
|
||||
|
||||
import static com.android.server.hdmi.Constants.ABORT_UNRECOGNIZED_OPCODE;
|
||||
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
|
||||
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
|
||||
import static com.android.server.hdmi.Constants.ADDR_INVALID;
|
||||
@@ -49,6 +50,7 @@ import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@SmallTest
|
||||
@Presubmit
|
||||
@@ -1586,4 +1588,46 @@ public class HdmiCecLocalDevicePlaybackTest {
|
||||
assertThat(features.contains(
|
||||
Constants.RC_PROFILE_SOURCE_HANDLES_MEDIA_CONTEXT_SENSITIVE_MENU)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doesNotSupportRecordTvScreen() {
|
||||
HdmiCecMessage recordTvScreen = new HdmiCecMessage(ADDR_TV, mPlaybackLogicalAddress,
|
||||
Constants.MESSAGE_RECORD_TV_SCREEN, HdmiCecMessage.EMPTY_PARAM);
|
||||
|
||||
mNativeWrapper.onCecMessage(recordTvScreen);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
HdmiCecMessage featureAbort = HdmiCecMessageBuilder.buildFeatureAbortCommand(
|
||||
mPlaybackLogicalAddress, ADDR_TV, Constants.MESSAGE_RECORD_TV_SCREEN,
|
||||
ABORT_UNRECOGNIZED_OPCODE);
|
||||
assertThat(mNativeWrapper.getResultMessages()).contains(featureAbort);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void shouldHandleUserControlPressedAndReleased() {
|
||||
HdmiCecMessage userControlPressed = HdmiCecMessageBuilder.buildUserControlPressed(
|
||||
ADDR_TV, mPlaybackLogicalAddress,
|
||||
HdmiCecKeycode.CEC_KEYCODE_VOLUME_UP);
|
||||
HdmiCecMessage userControlReleased = HdmiCecMessageBuilder.buildUserControlReleased(
|
||||
ADDR_TV, mPlaybackLogicalAddress);
|
||||
|
||||
mNativeWrapper.onCecMessage(userControlPressed);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
// Move past the follower safety timeout
|
||||
mTestLooper.moveTimeForward(TimeUnit.SECONDS.toMillis(2));
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
mNativeWrapper.onCecMessage(userControlReleased);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
HdmiCecMessage featureAbortPressed = HdmiCecMessageBuilder.buildFeatureAbortCommand(
|
||||
mPlaybackLogicalAddress, ADDR_TV, Constants.MESSAGE_USER_CONTROL_PRESSED,
|
||||
ABORT_UNRECOGNIZED_OPCODE);
|
||||
HdmiCecMessage featureAbortReleased = HdmiCecMessageBuilder.buildFeatureAbortCommand(
|
||||
mPlaybackLogicalAddress, ADDR_TV, Constants.MESSAGE_USER_CONTROL_RELEASED,
|
||||
ABORT_UNRECOGNIZED_OPCODE);
|
||||
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(featureAbortPressed);
|
||||
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(featureAbortReleased);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,11 @@
|
||||
*/
|
||||
package com.android.server.hdmi;
|
||||
|
||||
import static com.android.server.hdmi.Constants.ABORT_UNRECOGNIZED_OPCODE;
|
||||
import static com.android.server.hdmi.Constants.ADDR_AUDIO_SYSTEM;
|
||||
import static com.android.server.hdmi.Constants.ADDR_BROADCAST;
|
||||
import static com.android.server.hdmi.Constants.ADDR_PLAYBACK_1;
|
||||
import static com.android.server.hdmi.Constants.ADDR_RECORDER_1;
|
||||
import static com.android.server.hdmi.Constants.ADDR_TV;
|
||||
import static com.android.server.hdmi.HdmiControlService.INITIATED_BY_ENABLE_CEC;
|
||||
|
||||
@@ -484,4 +486,18 @@ public class HdmiCecLocalDeviceTvTest {
|
||||
ADDR_AUDIO_SYSTEM);
|
||||
assertThat(mNativeWrapper.getResultMessages()).contains(reportArcInitiated);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void supportsRecordTvScreen() {
|
||||
HdmiCecMessage recordTvScreen = new HdmiCecMessage(ADDR_RECORDER_1, mTvLogicalAddress,
|
||||
Constants.MESSAGE_RECORD_TV_SCREEN, HdmiCecMessage.EMPTY_PARAM);
|
||||
|
||||
mNativeWrapper.onCecMessage(recordTvScreen);
|
||||
mTestLooper.dispatchAll();
|
||||
|
||||
HdmiCecMessage featureAbort = HdmiCecMessageBuilder.buildFeatureAbortCommand(
|
||||
mTvLogicalAddress, ADDR_RECORDER_1, Constants.MESSAGE_RECORD_TV_SCREEN,
|
||||
ABORT_UNRECOGNIZED_OPCODE);
|
||||
assertThat(mNativeWrapper.getResultMessages()).doesNotContain(featureAbort);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user