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

Commit 8678720c authored by Steven Moreland's avatar Steven Moreland Committed by Gerrit Code Review
Browse files

Merge changes from topic "be-kind-rewind"

* changes:
  libbinder: Status writeOverParcel
  libbinder: format tests bp
parents 8be03870 cf373696
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -211,6 +211,12 @@ status_t Status::writeToParcel(Parcel* parcel) const {
    return status;
}

status_t Status::writeOverParcel(Parcel* parcel) const {
    parcel->setDataSize(0);
    parcel->setDataPosition(0);
    return writeToParcel(parcel);
}

void Status::setException(int32_t ex, const String8& message) {
    mException = ex;
    mErrorCode = ex == EX_TRANSACTION_FAILED ? FAILED_TRANSACTION : NO_ERROR;
+4 −0
Original line number Diff line number Diff line
@@ -117,6 +117,10 @@ public:
    status_t readFromParcel(const Parcel& parcel);
    status_t writeToParcel(Parcel* parcel) const;

    // Convenience API to replace a Parcel with a status value, w/o requiring
    // calling multiple APIs (makes generated code smaller).
    status_t writeOverParcel(Parcel* parcel) const;

    // Set one of the pre-defined exception types defined above.
    void setException(int32_t ex, const String8& message);
    // Set a service specific exception with error code.
+35 −8
Original line number Diff line number Diff line
@@ -37,7 +37,11 @@ cc_test {
    srcs: ["binderDriverInterfaceTest.cpp"],
    header_libs: ["libbinder_headers"],
    compile_multilib: "32",
    multilib: { lib32: { suffix: "" } },
    multilib: {
        lib32: {
            suffix: "",
        },
    },
    cflags: ["-DBINDER_IPC_32BIT=1"],
    test_suites: ["vts"],
}
@@ -52,7 +56,10 @@ cc_test {
    },
    header_libs: ["libbinder_headers"],
    srcs: ["binderDriverInterfaceTest.cpp"],
    test_suites: ["device-tests", "vts"],
    test_suites: [
        "device-tests",
        "vts",
    ],
}

cc_test {
@@ -69,7 +76,11 @@ cc_test {
        "libgmock",
    ],
    compile_multilib: "32",
    multilib: { lib32: { suffix: "" } },
    multilib: {
        lib32: {
            suffix: "",
        },
    },
    cflags: ["-DBINDER_IPC_32BIT=1"],
    test_suites: ["vts"],
    require_root: true,
@@ -84,7 +95,11 @@ cc_test {
            enabled: false,
        },
    },
    srcs: ["binderParcelUnitTest.cpp", "binderBinderUnitTest.cpp"],
    srcs: [
        "binderParcelUnitTest.cpp",
        "binderBinderUnitTest.cpp",
        "binderStatusUnitTest.cpp",
    ],
    shared_libs: [
        "libbinder",
        "libcutils",
@@ -112,7 +127,10 @@ cc_test {
    static_libs: [
        "libgmock",
    ],
    test_suites: ["device-tests", "vts"],
    test_suites: [
        "device-tests",
        "vts",
    ],
    require_root: true,
}

@@ -232,7 +250,10 @@ cc_test {
        "libbinder_tls_test_utils",
        "libbinder_tls_static",
    ],
    test_suites: ["general-tests", "device-tests"],
    test_suites: [
        "general-tests",
        "device-tests",
    ],
}

cc_benchmark {
@@ -348,7 +369,10 @@ cc_test {
        "liblog",
        "libutils",
    ],
    test_suites: ["device-tests", "vts"],
    test_suites: [
        "device-tests",
        "vts",
    ],
    require_root: true,
}

@@ -402,7 +426,10 @@ cc_test {
        "binderStabilityTestIface-ndk",
    ],

    test_suites: ["device-tests", "vts"],
    test_suites: [
        "device-tests",
        "vts",
    ],
    require_root: true,
}

+35 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <binder/Parcel.h>
#include <binder/Status.h>
#include <gtest/gtest.h>

using android::Parcel;
using android::binder::Status;

TEST(Status, WriteOverParcel) {
    Status status = Status::fromExceptionCode(Status::EX_NULL_POINTER);

    Parcel indirect;
    indirect.writeInt32(64);
    status.writeOverParcel(&indirect);

    Parcel direct;
    status.writeToParcel(&direct);

    EXPECT_EQ(0, indirect.compareData(direct));
}