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

Commit d6976527 authored by Yixiao Luo's avatar Yixiao Luo
Browse files

Add native handle validation to TV Input HAL AIDL VTS

Bug: 282862884
Test: VtsHalTvInputTargetTest
Change-Id: I803b54e5b52a00ab845ef7ba4d5cec5bb8bd89ca
parent a9d135cd
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -134,6 +134,19 @@ int32_t TvInputAidlTest::getNumNotIn(vector<int32_t>& nums) {
    return result;
}

bool TvInputAidlTest::isValidHandle(NativeHandle& handle) {
    if (handle.fds.empty()) {
        return false;
    }
    for (size_t i = 0; i < handle.fds.size(); i++) {
        int fd = handle.fds[i].get();
        if (fcntl(fd, F_GETFL) < 0) {
            return false;
        }
    }
    return true;
}

/*
 * GetStreamConfigTest:
 * Calls updateStreamConfigurations() for each existing device
@@ -168,6 +181,8 @@ TEST_P(TvInputAidlTest, OpenAndCloseStreamTest) {
            ALOGD("OpenAndCloseStreamTest: open stream, device_id=%d, stream_id=%d", device_id,
                  stream_id);
            ASSERT_TRUE(tv_input_->openStream(device_id, stream_id, &handle).isOk());
            ASSERT_TRUE(isValidHandle(handle));

            ALOGD("OpenAndCloseStreamTest: close stream, device_id=%d, stream_id=%d", device_id,
                  stream_id);
            ASSERT_TRUE(tv_input_->closeStream(device_id, stream_id).isOk());
@@ -268,6 +283,7 @@ TEST_P(TvInputAidlTest, OpenAnOpenedStreamsTest) {

    ALOGD("OpenAnOpenedStreamsTest: open stream, device_id=%d, stream_id=%d", device_id, stream_id);
    ASSERT_TRUE(tv_input_->openStream(device_id, stream_id, &handle).isOk());
    ASSERT_TRUE(isValidHandle(handle));

    ALOGD("OpenAnOpenedStreamsTest: open stream, device_id=%d, stream_id=%d", device_id, stream_id);
    ASSERT_TRUE(tv_input_->openStream(device_id, stream_id, &handle).getServiceSpecificError() ==
+4 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
#pragma once

#include <android/binder_manager.h>
#include <fcntl.h>

#include <aidl/Gtest.h>
#include <aidl/Vintf.h>
@@ -84,6 +85,9 @@ class TvInputAidlTest : public testing::TestWithParam<string> {
     */
    int32_t getNumNotIn(vector<int32_t>& nums);

    /* Checks if a native handle contains valid file descriptor(s). */
    bool isValidHandle(NativeHandle& handle);

  protected:
    shared_ptr<ITvInput> tv_input_;
    shared_ptr<TvInputCallback> tv_input_callback_;