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

Commit cac92165 authored by Huihong Luo's avatar Huihong Luo
Browse files

Make HDCP levels change event to be consumable

Bug: 280818362
Test: connect to an external display, dumpsys display | grep securei
Test: atest EventThreadTest#postHcpLevelsChanged
Change-Id: I0cfe5f9e1b81652203d5d04e351e272f58f79d8e
parent 193c0bb0
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -584,6 +584,9 @@ bool EventThread::shouldConsumeEvent(const DisplayEventReceiver::Event& event,
        case DisplayEventReceiver::DISPLAY_EVENT_HOTPLUG:
            return true;

        case DisplayEventReceiver::DISPLAY_EVENT_HDCP_LEVELS_CHANGE:
            return true;

        case DisplayEventReceiver::DISPLAY_EVENT_MODE_CHANGE: {
            return connection->mEventRegistration.test(
                    gui::ISurfaceComposer::EventRegistration::modeChanged);
+16 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@ constexpr PhysicalDisplayId DISPLAY_ID_64BIT =

constexpr std::chrono::duration VSYNC_PERIOD(16ms);

constexpr int HDCP_V1 = 2;
constexpr int HDCP_V2 = 3;

} // namespace

class EventThreadTest : public testing::Test, public IEventThreadCallback {
@@ -833,6 +836,19 @@ TEST_F(EventThreadTest, requestNextVsyncWithThrottleVsyncDoesntPostVSync) {
    expectVSyncCallbackScheduleReceived(true);
}

TEST_F(EventThreadTest, postHcpLevelsChanged) {
    setupEventThread();

    mThread->onHdcpLevelsChanged(EXTERNAL_DISPLAY_ID, HDCP_V1, HDCP_V2);
    auto args = mConnectionEventCallRecorder.waitForCall();
    ASSERT_TRUE(args.has_value());
    const auto& event = std::get<0>(args.value());
    EXPECT_EQ(DisplayEventReceiver::DISPLAY_EVENT_HDCP_LEVELS_CHANGE, event.header.type);
    EXPECT_EQ(EXTERNAL_DISPLAY_ID, event.header.displayId);
    EXPECT_EQ(HDCP_V1, event.hdcpLevelsChange.connectedLevel);
    EXPECT_EQ(HDCP_V2, event.hdcpLevelsChange.maxLevel);
}

} // namespace
} // namespace android