diff options
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/binder/Android.bp | 13 | ||||
| -rw-r--r-- | libs/binder/ndk/test/Android.bp | 1 | ||||
| -rw-r--r-- | libs/binder/ndk/test/binderVendorDoubleLoadTest.cpp | 19 |
3 files changed, 33 insertions, 0 deletions
diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp index 643a956b4a..2a140f4507 100644 --- a/libs/binder/Android.bp +++ b/libs/binder/Android.bp @@ -164,3 +164,16 @@ filegroup { ], path: "aidl", } + +aidl_interface { + name: "libbinder_aidl_test_stub", + local_include_dir: "aidl", + srcs: [":libbinder_aidl"], + visibility: [":__subpackages__"], + vendor_available: true, + backend: { + java: { + enabled: false, + }, + }, +} diff --git a/libs/binder/ndk/test/Android.bp b/libs/binder/ndk/test/Android.bp index 1c5dba3736..ebd08b2f71 100644 --- a/libs/binder/ndk/test/Android.bp +++ b/libs/binder/ndk/test/Android.bp @@ -77,6 +77,7 @@ cc_test { static_libs: [ "IBinderVendorDoubleLoadTest-cpp", "IBinderVendorDoubleLoadTest-ndk_platform", + "libbinder_aidl_test_stub-ndk_platform", ], shared_libs: [ "libbase", diff --git a/libs/binder/ndk/test/binderVendorDoubleLoadTest.cpp b/libs/binder/ndk/test/binderVendorDoubleLoadTest.cpp index f72dc36cfd..d3ccdc2878 100644 --- a/libs/binder/ndk/test/binderVendorDoubleLoadTest.cpp +++ b/libs/binder/ndk/test/binderVendorDoubleLoadTest.cpp @@ -16,6 +16,7 @@ #include <BnBinderVendorDoubleLoadTest.h> #include <aidl/BnBinderVendorDoubleLoadTest.h> +#include <aidl/android/os/IServiceManager.h> #include <android-base/logging.h> #include <android-base/properties.h> #include <android-base/strings.h> @@ -109,6 +110,24 @@ TEST(DoubleBinder, CallIntoNdk) { } } +TEST(DoubleBinder, CallIntoSystemStabilityNdk) { + // picking an arbitrary system service + SpAIBinder binder = SpAIBinder(AServiceManager_checkService("manager")); + ASSERT_NE(nullptr, binder.get()); + + // can make stable transaction to system server + EXPECT_EQ(STATUS_OK, AIBinder_ping(binder.get())); + + using aidl::android::os::IServiceManager; + std::shared_ptr<IServiceManager> manager = IServiceManager::fromBinder(binder); + ASSERT_NE(nullptr, manager.get()); + + std::vector<std::string> services; + ASSERT_EQ( + STATUS_BAD_TYPE, + manager->listServices(IServiceManager::DUMP_FLAG_PRIORITY_ALL, &services).getStatus()); +} + void initDrivers() { // Explicitly instantiated with the same driver that system would use. // __ANDROID_VNDK__ right now uses /dev/vndbinder by default. |