Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 087f6ebd authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge changes I12c7de63,I241cf0fc into sc-dev am: 56dac4cc

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13562189

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I35f94df03e77345998a14622d08d993e8006e98e
parents ae245508 56dac4cc
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -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) {
+4 −1
Original line number Diff line number Diff line
@@ -1078,7 +1078,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();
+44 −0
Original line number Diff line number Diff line
@@ -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);
    }
}
+16 −0
Original line number Diff line number Diff line
@@ -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);
    }
}