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

Commit 05df1f32 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Make libbinder_rs vendor available." am: 7926d52f am: 4be13ed3 am: f334658a

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1885833

Change-Id: Ib7e25a2bcceee2d17c6e00398b64384559396612
parents ac6d228c f334658a
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ rust_library {
        "libdowncast_rs",
        "libdowncast_rs",
    ],
    ],
    host_supported: true,
    host_supported: true,
    vendor_available: true,
    target: {
    target: {
        darwin: {
        darwin: {
            enabled: false,
            enabled: false,
@@ -64,6 +65,7 @@ rust_library {
        "libbinder_ndk",
        "libbinder_ndk",
    ],
    ],
    host_supported: true,
    host_supported: true,
    vendor_available: true,
    target: {
    target: {
        darwin: {
        darwin: {
            enabled: false,
            enabled: false,
@@ -105,6 +107,7 @@ rust_bindgen {
        "libbinder_ndk",
        "libbinder_ndk",
    ],
    ],
    host_supported: true,
    host_supported: true,
    vendor_available: true,


    // Currently necessary for host builds
    // Currently necessary for host builds
    // TODO(b/31559095): bionic on host should define this
    // TODO(b/31559095): bionic on host should define this
+3 −0
Original line number Original line Diff line number Diff line
@@ -167,6 +167,7 @@ pub trait IBinderInternal: IBinder {
    fn ping_binder(&mut self) -> Result<()>;
    fn ping_binder(&mut self) -> Result<()>;


    /// Indicate that the service intends to receive caller security contexts.
    /// Indicate that the service intends to receive caller security contexts.
    #[cfg(not(android_vndk))]
    fn set_requesting_sid(&mut self, enable: bool);
    fn set_requesting_sid(&mut self, enable: bool);


    /// Dump this object to the given file handle
    /// Dump this object to the given file handle
@@ -635,6 +636,7 @@ unsafe impl<T, V: AsNative<T>> AsNative<T> for Option<V> {
pub struct BinderFeatures {
pub struct BinderFeatures {
    /// Indicates that the service intends to receive caller security contexts. This must be true
    /// Indicates that the service intends to receive caller security contexts. This must be true
    /// for `ThreadState::with_calling_sid` to work.
    /// for `ThreadState::with_calling_sid` to work.
    #[cfg(not(android_vndk))]
    pub set_requesting_sid: bool,
    pub set_requesting_sid: bool,
    // Ensure that clients include a ..BinderFeatures::default() to preserve backwards compatibility
    // Ensure that clients include a ..BinderFeatures::default() to preserve backwards compatibility
    // when new fields are added. #[non_exhaustive] doesn't work because it prevents struct
    // when new fields are added. #[non_exhaustive] doesn't work because it prevents struct
@@ -837,6 +839,7 @@ macro_rules! declare_binder_interface {
            /// Create a new binder service.
            /// Create a new binder service.
            pub fn new_binder<T: $interface + Sync + Send + 'static>(inner: T, features: $crate::BinderFeatures) -> $crate::Strong<dyn $interface> {
            pub fn new_binder<T: $interface + Sync + Send + 'static>(inner: T, features: $crate::BinderFeatures) -> $crate::Strong<dyn $interface> {
                let mut binder = $crate::Binder::new_with_stability($native(Box::new(inner)), $stability);
                let mut binder = $crate::Binder::new_with_stability($native(Box::new(inner)), $stability);
                #[cfg(not(android_vndk))]
                $crate::IBinderInternal::set_requesting_sid(&mut binder, features.set_requesting_sid);
                $crate::IBinderInternal::set_requesting_sid(&mut binder, features.set_requesting_sid);
                $crate::Strong::new(Box::new(binder))
                $crate::Strong::new(Box::new(binder))
            }
            }
+2 −2
Original line number Original line Diff line number Diff line
@@ -212,7 +212,7 @@ impl<T: Remotable> Binder<T> {


    /// Mark this binder object with local stability, which is vendor if we are
    /// Mark this binder object with local stability, which is vendor if we are
    /// building for the VNDK and system otherwise.
    /// building for the VNDK and system otherwise.
    #[cfg(vendor_ndk)]
    #[cfg(any(vendor_ndk, android_vndk))]
    fn mark_local_stability(&mut self) {
    fn mark_local_stability(&mut self) {
        unsafe {
        unsafe {
            // Safety: Self always contains a valid `AIBinder` pointer, so
            // Safety: Self always contains a valid `AIBinder` pointer, so
@@ -223,7 +223,7 @@ impl<T: Remotable> Binder<T> {


    /// Mark this binder object with local stability, which is vendor if we are
    /// Mark this binder object with local stability, which is vendor if we are
    /// building for the VNDK and system otherwise.
    /// building for the VNDK and system otherwise.
    #[cfg(not(vendor_ndk))]
    #[cfg(not(any(vendor_ndk, android_vndk)))]
    fn mark_local_stability(&mut self) {
    fn mark_local_stability(&mut self) {
        unsafe {
        unsafe {
            // Safety: Self always contains a valid `AIBinder` pointer, so
            // Safety: Self always contains a valid `AIBinder` pointer, so
+1 −0
Original line number Original line Diff line number Diff line
@@ -323,6 +323,7 @@ impl<T: AsNative<sys::AIBinder>> IBinderInternal for T {
        status_result(status)
        status_result(status)
    }
    }


    #[cfg(not(android_vndk))]
    fn set_requesting_sid(&mut self, enable: bool) {
    fn set_requesting_sid(&mut self, enable: bool) {
        unsafe { sys::AIBinder_setRequestingSid(self.as_native_mut(), enable) };
        unsafe { sys::AIBinder_setRequestingSid(self.as_native_mut(), enable) };
    }
    }