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

Commit 6f0d96ad authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Snap for 12687986 from 8e637485 to 25Q1-release

Change-Id: I34eb42dbe595b020a18276987befb57c01832242
parents 92e57eb3 8e637485
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -996,6 +996,15 @@ protected:
    std::vector<PointerProperties> mPointerProperties;
    std::vector<nsecs_t> mSampleEventTimes;
    std::vector<PointerCoords> mSamplePointerCoords;

private:
    /**
     * Create a human-readable string representation of the event's data for debugging purposes.
     *
     * Unlike operator<<, this method does not assume that the event data is valid or consistent, or
     * call any accessor methods that might themselves call safeDump in the case of invalid data.
     */
    std::string safeDump() const;
};

std::ostream& operator<<(std::ostream& out, const MotionEvent& event);
+8 −8
Original line number Diff line number Diff line
@@ -107,16 +107,20 @@ ABinderRpc_AccessorProvider* ABinderRpc_registerAccessorProvider(
        ABinderRpc_AccessorProvider_getAccessorCallback provider,
        const char* const* const instances, size_t numInstances, void* data,
        ABinderRpc_AccessorProviderUserData_deleteCallback onDelete) {
    if (provider == nullptr) {
        ALOGE("Null provider passed to ABinderRpc_registerAccessorProvider");
        return nullptr;
    }
    if (data && onDelete == nullptr) {
        ALOGE("If a non-null data ptr is passed to ABinderRpc_registerAccessorProvider, then a "
              "ABinderRpc_AccessorProviderUserData_deleteCallback must also be passed to delete "
              "the data object once the ABinderRpc_AccessorProvider is removed.");
        return nullptr;
    }
    // call the onDelete when the last reference of this goes away (when the
    // last reference to the generate std::function goes away).
    std::shared_ptr<OnDeleteProviderHolder> onDeleteHolder =
            std::make_shared<OnDeleteProviderHolder>(data, onDelete);
    if (provider == nullptr) {
        ALOGE("Null provider passed to ABinderRpc_registerAccessorProvider");
        return nullptr;
    }
    if (numInstances == 0 || instances == nullptr) {
        ALOGE("No instances passed to ABinderRpc_registerAccessorProvider. numInstances: %zu",
              numInstances);
@@ -126,10 +130,6 @@ ABinderRpc_AccessorProvider* ABinderRpc_registerAccessorProvider(
    for (size_t i = 0; i < numInstances; i++) {
        instanceStrings.emplace(instances[i]);
    }
    // call the onDelete when the last reference of this goes away (when the
    // last reference to the generate std::function goes away).
    std::shared_ptr<OnDeleteProviderHolder> onDeleteHolder =
            std::make_shared<OnDeleteProviderHolder>(data, onDelete);
    android::RpcAccessorProvider generate = [provider,
                                             onDeleteHolder](const String16& name) -> sp<IBinder> {
        ABinderRpc_Accessor* accessor = provider(String8(name).c_str(), onDeleteHolder->mData);
+2 −0
Original line number Diff line number Diff line
@@ -139,6 +139,8 @@ typedef void (*ABinderRpc_AccessorProviderUserData_deleteCallback)(void* _Nullab
 *         registered. In the error case of duplicate instances, if data was
 *         provided with a ABinderRpc_AccessorProviderUserData_deleteCallback,
 *         the callback will be called to delete the data.
 *         If nullptr is returned, ABinderRpc_AccessorProviderUserData_deleteCallback
 *         will be called on data immediately.
 *         Otherwise returns a pointer to the ABinderRpc_AccessorProvider that
 *         can be used to remove with ABinderRpc_unregisterAccessorProvider.
 */
+20 −0
Original line number Diff line number Diff line
@@ -1400,6 +1400,26 @@ TEST_F(BinderARpcNdk, ARpcProviderNewDelete) {
    EXPECT_TRUE(isDeleted);
}

TEST_F(BinderARpcNdk, ARpcProviderDeleteOnError) {
    bool isDeleted = false;
    AccessorProviderData* data = new AccessorProviderData{{}, 0, &isDeleted};

    ABinderRpc_AccessorProvider* provider =
            ABinderRpc_registerAccessorProvider(getAccessor, kARpcSupportedServices, 0, data,
                                                accessorProviderDataOnDelete);

    ASSERT_EQ(provider, nullptr);
    EXPECT_TRUE(isDeleted);
}

TEST_F(BinderARpcNdk, ARpcProvideOnErrorNoDeleteCbNoCrash) {
    ABinderRpc_AccessorProvider* provider =
            ABinderRpc_registerAccessorProvider(getAccessor, kARpcSupportedServices, 0, nullptr,
                                                nullptr);

    ASSERT_EQ(provider, nullptr);
}

TEST_F(BinderARpcNdk, ARpcProviderDuplicateInstance) {
    const char* instance = "some.instance.name.IFoo/default";
    const uint32_t numInstances = 2;
+5 −0
Original line number Diff line number Diff line
@@ -59,6 +59,11 @@ sh_test_host {
        darwin: {
            enabled: false,
        },
        host: {
            data_libs: [
                "libc++",
            ],
        },
    },
    test_suites: ["general-tests"],
}
Loading