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

Commit 028826f8 authored by Charles Chen's avatar Charles Chen Committed by Automerger Merge Worker
Browse files

Merge "Test added for AServiceManager_addServiceWithFlags" am: 9a983f2f am:...

Merge "Test added for AServiceManager_addServiceWithFlags" am: 9a983f2f am: 9c095bb9 am: 19801444 am: 0f086cd3

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



Change-Id: I17bdacd25f7193999910bf89326fc3198aebb6fb
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 96b5df10 0f086cd3
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ constexpr char kBinderNdkUnitTestService[] = "BinderNdkUnitTest";
constexpr char kLazyBinderNdkUnitTestService[] = "LazyBinderNdkUnitTest";
constexpr char kForcePersistNdkUnitTestService[] = "ForcePersistNdkUnitTestService";
constexpr char kActiveServicesNdkUnitTestService[] = "ActiveServicesNdkUnitTestService";
constexpr char kBinderNdkUnitTestServiceFlagged[] = "BinderNdkUnitTestFlagged";

constexpr unsigned int kShutdownWaitTime = 11;
constexpr uint64_t kContextTestValue = 0xb4e42fb4d9a1d715;
@@ -158,6 +159,24 @@ int generatedService() {
    return 1;  // should not return
}

int generatedFlaggedService(const AServiceManager_AddServiceFlag flags, const char* instance) {
    ABinderProcess_setThreadPoolMaxThreadCount(0);

    auto service = ndk::SharedRefBase::make<MyBinderNdkUnitTest>();
    auto binder = service->asBinder();

    binder_exception_t exception =
            AServiceManager_addServiceWithFlags(binder.get(), instance, flags);

    if (exception != EX_NONE) {
        LOG(FATAL) << "Could not register: " << exception << " " << instance;
    }

    ABinderProcess_joinThreadPool();

    return 1;  // should not return
}

// manually-written parceling class considered bad practice
class MyFoo : public IFoo {
    binder_status_t doubleNumber(int32_t in, int32_t* out) override {
@@ -847,6 +866,12 @@ TEST(NdkBinder, UseHandleShellCommand) {
    EXPECT_EQ("CMD", shellCmdToString(testService, {"C", "M", "D"}));
}

TEST(NdkBinder, FlaggedServiceAccessible) {
    static const sp<android::IServiceManager> sm(android::defaultServiceManager());
    sp<IBinder> testService = sm->getService(String16(kBinderNdkUnitTestServiceFlagged));
    ASSERT_NE(nullptr, testService);
}

TEST(NdkBinder, GetClassInterfaceDescriptor) {
    ASSERT_STREQ(IFoo::kIFooDescriptor, AIBinder_Class_getDescriptor(IFoo::kClass));
}
@@ -901,6 +926,13 @@ int main(int argc, char* argv[]) {
        prctl(PR_SET_PDEATHSIG, SIGHUP);
        return generatedService();
    }
    if (fork() == 0) {
        prctl(PR_SET_PDEATHSIG, SIGHUP);
        // We may want to change this flag to be more generic ones for the future
        AServiceManager_AddServiceFlag test_flags =
                AServiceManager_AddServiceFlag::ADD_SERVICE_ALLOW_ISOLATED;
        return generatedFlaggedService(test_flags, kBinderNdkUnitTestServiceFlagged);
    }

    ABinderProcess_setThreadPoolMaxThreadCount(1);  // to receive death notifications/callbacks
    ABinderProcess_startThreadPool();