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

Commit 4b34843c authored by Nirav Atre's avatar Nirav Atre Committed by Steven Moreland
Browse files

Adding handle types to Java-compatible test HALs

This change adds HIDL handle types to the baz@1.0 and safeunion@1.0 test
HALs to exercise native handles in Java.

Bug: 35098567
Test: Ran the hidl_test (C++ and Java) suites
Change-Id: Iddf1c269cbdc68ce337f1e787570f3810f7baad2
parent c07a66e1
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -68,6 +68,11 @@ interface IBaz extends IBase {
        bitfield<BitField> bf;
    };

    struct MyHandle {
        handle h;
        int32_t guard;
    };

    struct StructWithInterface {
        int32_t number;
        int8_t[7] array;
+15 −0
Original line number Diff line number Diff line
@@ -68,6 +68,14 @@ interface ISafeUnion {
        IOtherInterface c;
        string d;
        vec<string> e;
        handle f;
        vec<handle> g;
    };

    safe_union HandleTypeSafeUnion {
        handle a;
        handle[5] b;
        vec<handle> c;
    };

    newLargeSafeUnion() generates (LargeSafeUnion myUnion);
@@ -90,4 +98,11 @@ interface ISafeUnion {
    setInterfaceC(InterfaceTypeSafeUnion myUnion, IOtherInterface c) generates (InterfaceTypeSafeUnion myUnion);
    setInterfaceD(InterfaceTypeSafeUnion myUnion, string d) generates (InterfaceTypeSafeUnion myUnion);
    setInterfaceE(InterfaceTypeSafeUnion myUnion, vec<string> e) generates (InterfaceTypeSafeUnion myUnion);
    setInterfaceF(InterfaceTypeSafeUnion myUnion, handle f) generates (InterfaceTypeSafeUnion myUnion);
    setInterfaceG(InterfaceTypeSafeUnion myUnion, vec<handle> g) generates (InterfaceTypeSafeUnion myUnion);

    newHandleTypeSafeUnion() generates (HandleTypeSafeUnion myUnion);
    setHandleA(HandleTypeSafeUnion myUnion, handle a) generates (HandleTypeSafeUnion myUnion);
    setHandleB(HandleTypeSafeUnion myUnion, handle[5] b) generates (HandleTypeSafeUnion myUnion);
    setHandleC(HandleTypeSafeUnion myUnion, vec<handle> c) generates (HandleTypeSafeUnion myUnion);
};
+68 −2
Original line number Diff line number Diff line
@@ -191,7 +191,8 @@ Return<void> SafeUnion::setInterfaceC(const InterfaceTypeSafeUnion& myUnion, con
    return Void();
}

Return<void> SafeUnion::setInterfaceD(const ::android::hardware::tests::safeunion::V1_0::ISafeUnion::InterfaceTypeSafeUnion& myUnion, const hidl_string& d, setInterfaceD_cb _hidl_cb) {
Return<void> SafeUnion::setInterfaceD(const InterfaceTypeSafeUnion& myUnion, const hidl_string& d,
                                      setInterfaceD_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setInterfaceD(myUnion, " << toString(d) << ")";

    InterfaceTypeSafeUnion myNewUnion = myUnion;
@@ -201,7 +202,8 @@ Return<void> SafeUnion::setInterfaceD(const ::android::hardware::tests::safeunio
    return Void();
}

Return<void> SafeUnion::setInterfaceE(const ::android::hardware::tests::safeunion::V1_0::ISafeUnion::InterfaceTypeSafeUnion& myUnion, const hidl_vec<hidl_string>& e, setInterfaceE_cb _hidl_cb) {
Return<void> SafeUnion::setInterfaceE(const InterfaceTypeSafeUnion& myUnion,
                                      const hidl_vec<hidl_string>& e, setInterfaceE_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setInterfaceE(myUnion, " << toString(e) << ")";

    InterfaceTypeSafeUnion myNewUnion = myUnion;
@@ -211,6 +213,70 @@ Return<void> SafeUnion::setInterfaceE(const ::android::hardware::tests::safeunio
    return Void();
}

Return<void> SafeUnion::setInterfaceF(const InterfaceTypeSafeUnion& myUnion, const hidl_handle& f,
                                      setInterfaceF_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setInterfaceF(myUnion, " << toString(f) << ")";

    InterfaceTypeSafeUnion myNewUnion = myUnion;
    myNewUnion.f(f);

    _hidl_cb(myNewUnion);
    return Void();
}

Return<void> SafeUnion::setInterfaceG(const InterfaceTypeSafeUnion& myUnion,
                                      const hidl_vec<hidl_handle>& g, setInterfaceG_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setInterfaceG(myUnion, " << toString(g) << ")";

    InterfaceTypeSafeUnion myNewUnion = myUnion;
    myNewUnion.g(g);

    _hidl_cb(myNewUnion);
    return Void();
}

Return<void> SafeUnion::newHandleTypeSafeUnion(newHandleTypeSafeUnion_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) newHandleTypeSafeUnion()";

    HandleTypeSafeUnion ret;
    _hidl_cb(ret);
    return Void();
}

Return<void> SafeUnion::setHandleA(
    const ::android::hardware::tests::safeunion::V1_0::ISafeUnion::HandleTypeSafeUnion& myUnion,
    const hidl_handle& a, setHandleA_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setHandleA(myUnion, " << toString(a) << ")";

    HandleTypeSafeUnion myNewUnion = myUnion;
    myNewUnion.a(a);

    _hidl_cb(myNewUnion);
    return Void();
}

Return<void> SafeUnion::setHandleB(const HandleTypeSafeUnion& myUnion,
                                   const hidl_array<hidl_handle, 5>& b, setHandleB_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setHandleB(myUnion, " << toString(b) << ")";

    HandleTypeSafeUnion myNewUnion = myUnion;
    myNewUnion.b(b);

    _hidl_cb(myNewUnion);
    return Void();
}

Return<void> SafeUnion::setHandleC(const HandleTypeSafeUnion& myUnion,
                                   const hidl_vec<hidl_handle>& c, setHandleC_cb _hidl_cb) {
    LOG(INFO) << "SERVER(SafeUnion) setHandleC(myUnion, " << toString(c) << ")";

    HandleTypeSafeUnion myNewUnion = myUnion;
    myNewUnion.c(c);

    _hidl_cb(myNewUnion);
    return Void();
}

ISafeUnion* HIDL_FETCH_ISafeUnion(const char* /* name */) {
    return new SafeUnion();
}
+12 −0
Original line number Diff line number Diff line
@@ -54,6 +54,18 @@ struct SafeUnion : public ISafeUnion {
    Return<void> setInterfaceC(const InterfaceTypeSafeUnion& myUnion, const sp<::android::hardware::tests::safeunion::V1_0::IOtherInterface>& c, setInterfaceC_cb _hidl_cb) override;
    Return<void> setInterfaceD(const InterfaceTypeSafeUnion& myUnion, const hidl_string& d, setInterfaceD_cb _hidl_cb) override;
    Return<void> setInterfaceE(const InterfaceTypeSafeUnion& myUnion, const hidl_vec<hidl_string>& e, setInterfaceE_cb _hidl_cb) override;
    Return<void> setInterfaceF(const InterfaceTypeSafeUnion& myUnion, const hidl_handle& f,
                               setInterfaceF_cb _hidl_cb) override;
    Return<void> setInterfaceG(const InterfaceTypeSafeUnion& myUnion,
                               const hidl_vec<hidl_handle>& g, setInterfaceG_cb _hidl_cb) override;

    Return<void> newHandleTypeSafeUnion(newHandleTypeSafeUnion_cb _hidl_cb) override;
    Return<void> setHandleA(const HandleTypeSafeUnion& myUnion, const hidl_handle& a,
                            setHandleA_cb _hidl_cb) override;
    Return<void> setHandleB(const HandleTypeSafeUnion& myUnion, const hidl_array<hidl_handle, 5>& b,
                            setHandleB_cb _hidl_cb) override;
    Return<void> setHandleC(const HandleTypeSafeUnion& myUnion, const hidl_vec<hidl_handle>& c,
                            setHandleC_cb _hidl_cb) override;
};

extern "C" ISafeUnion* HIDL_FETCH_ISafeUnion(const char* name);