Loading libs/nativewindow/rust/src/handle.rs +29 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,12 @@ impl NativeHandle { /// Destroys the `NativeHandle`, taking ownership of the file descriptors it contained. pub fn into_fds(self) -> Vec<OwnedFd> { // Unset FDSan tag since this `native_handle_t` is no longer the owner of the file // descriptors after this function. // SAFETY: Our wrapped `native_handle_t` pointer is always valid. unsafe { ffi::native_handle_unset_fdsan_tag(self.as_ref()); } let fds = self.data()[..self.fd_count()] .iter() .map(|fd| { Loading Loading @@ -260,6 +266,29 @@ mod test { drop(cloned); } #[test] fn to_fds() { let file = File::open("/dev/null").unwrap(); let original = NativeHandle::new(vec![file.into()], &[42]).unwrap(); assert_eq!(original.ints(), &[42]); assert_eq!(original.fds().len(), 1); let fds = original.into_fds(); assert_eq!(fds.len(), 1); } #[test] fn to_aidl() { let file = File::open("/dev/null").unwrap(); let original = NativeHandle::new(vec![file.into()], &[42]).unwrap(); assert_eq!(original.ints(), &[42]); assert_eq!(original.fds().len(), 1); let aidl = AidlNativeHandle::from(original); assert_eq!(&aidl.ints, &[42]); assert_eq!(aidl.fds.len(), 1); } #[test] fn to_from_aidl() { let file = File::open("/dev/null").unwrap(); Loading Loading
libs/nativewindow/rust/src/handle.rs +29 −0 Original line number Diff line number Diff line Loading @@ -85,6 +85,12 @@ impl NativeHandle { /// Destroys the `NativeHandle`, taking ownership of the file descriptors it contained. pub fn into_fds(self) -> Vec<OwnedFd> { // Unset FDSan tag since this `native_handle_t` is no longer the owner of the file // descriptors after this function. // SAFETY: Our wrapped `native_handle_t` pointer is always valid. unsafe { ffi::native_handle_unset_fdsan_tag(self.as_ref()); } let fds = self.data()[..self.fd_count()] .iter() .map(|fd| { Loading Loading @@ -260,6 +266,29 @@ mod test { drop(cloned); } #[test] fn to_fds() { let file = File::open("/dev/null").unwrap(); let original = NativeHandle::new(vec![file.into()], &[42]).unwrap(); assert_eq!(original.ints(), &[42]); assert_eq!(original.fds().len(), 1); let fds = original.into_fds(); assert_eq!(fds.len(), 1); } #[test] fn to_aidl() { let file = File::open("/dev/null").unwrap(); let original = NativeHandle::new(vec![file.into()], &[42]).unwrap(); assert_eq!(original.ints(), &[42]); assert_eq!(original.fds().len(), 1); let aidl = AidlNativeHandle::from(original); assert_eq!(&aidl.ints, &[42]); assert_eq!(aidl.fds.len(), 1); } #[test] fn to_from_aidl() { let file = File::open("/dev/null").unwrap(); Loading