Merge "Add isAidlNativeHandleEmpty to libaidlcommonsupport"

This commit is contained in:
Treehugger Robot
2022-10-12 05:05:25 +00:00
committed by Gerrit Code Review
3 changed files with 18 additions and 0 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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));