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

Commit 86338db0 authored by Roman Kiryanov's avatar Roman Kiryanov
Browse files

Add isAidlNativeHandleEmpty to libaidlcommonsupport



Bug: 251042358
Test: libaidlcommonsupport_test
Signed-off-by: default avatarRoman Kiryanov <rkir@google.com>
Change-Id: I96dc2a39d60f955b8a686adcb7446e1c54747a35
parent e6fe69b7
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,13 @@ namespace android {

using aidl::android::hardware::common::NativeHandle;

/**
 * Checks if a NativeHandle is null
 */
bool isAidlNativeHandleEmpty(const NativeHandle& handle) {
    return handle.fds.empty() && handle.ints.empty();
}

static native_handle_t* fromAidl(const NativeHandle& handle, bool doDup) {
    native_handle_t* to = native_handle_create(handle.fds.size(), handle.ints.size());
    if (!to) return nullptr;
+5 −0
Original line number Diff line number Diff line
@@ -21,6 +21,11 @@

namespace android {

/**
 * Checks if a NativeHandle is empty.
 */
bool isAidlNativeHandleEmpty(const aidl::android::hardware::common::NativeHandle& handle);

/**
 * Creates a libcutils native handle from an AIDL native handle, but it does not
 * dup internally, so it will contain the same FDs as the handle itself. The
+6 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ static NativeHandle makeTestAidlHandle() {

TEST(ConvertNativeHandle, MakeFromAidlEmpty) {
    NativeHandle handle;
    EXPECT_TRUE(isAidlNativeHandleEmpty(handle));
    native_handle_t* to = makeFromAidl(handle);
    checkEq(handle, to, false /*exceptFds*/);
    // no native_handle_close b/c fds are owned by NativeHandle
@@ -70,6 +71,7 @@ TEST(ConvertNativeHandle, MakeFromAidlEmpty) {

TEST(ConvertNativeHandle, MakeFromAidl) {
    NativeHandle handle = makeTestAidlHandle();
    EXPECT_FALSE(isAidlNativeHandleEmpty(handle));
    native_handle_t* to = makeFromAidl(handle);
    checkEq(handle, to, false /*exceptFds*/);
    // no native_handle_close b/c fds are owned by NativeHandle
@@ -106,6 +108,7 @@ static native_handle_t* makeTestLibcutilsHandle() {
TEST(ConvertNativeHandle, MakeToAidlEmpty) {
    native_handle_t* handle = native_handle_create(0, 0);
    NativeHandle to = makeToAidl(handle);
    EXPECT_TRUE(isAidlNativeHandleEmpty(to));
    checkEq(to, handle, false /*exceptFds*/);
    // no native_handle_close b/c fds are owned by NativeHandle now
    EXPECT_EQ(0, native_handle_delete(handle));
@@ -114,6 +117,7 @@ TEST(ConvertNativeHandle, MakeToAidlEmpty) {
TEST(ConvertNativeHandle, MakeToAidl) {
    native_handle_t* handle = makeTestLibcutilsHandle();
    NativeHandle to = makeToAidl(handle);
    EXPECT_FALSE(isAidlNativeHandleEmpty(to));
    checkEq(to, handle, false /*exceptFds*/);
    // no native_handle_close b/c fds are owned by NativeHandle now
    EXPECT_EQ(0, native_handle_delete(handle));
@@ -122,6 +126,7 @@ TEST(ConvertNativeHandle, MakeToAidl) {
TEST(ConvertNativeHandle, DupToAidlEmpty) {
    native_handle_t* handle = native_handle_create(0, 0);
    NativeHandle to = dupToAidl(handle);
    EXPECT_TRUE(isAidlNativeHandleEmpty(to));
    checkEq(to, handle, true /*exceptFds*/);
    EXPECT_EQ(0, native_handle_close(handle));
    EXPECT_EQ(0, native_handle_delete(handle));
@@ -130,6 +135,7 @@ TEST(ConvertNativeHandle, DupToAidlEmpty) {
TEST(ConvertNativeHandle, DupToAidl) {
    native_handle_t* handle = makeTestLibcutilsHandle();
    NativeHandle to = dupToAidl(handle);
    EXPECT_FALSE(isAidlNativeHandleEmpty(to));
    checkEq(to, handle, true /*exceptFds*/);
    EXPECT_EQ(0, native_handle_close(handle));
    EXPECT_EQ(0, native_handle_delete(handle));