From af5f57a46cd210258748e04fd7b1af8f29525a12 Mon Sep 17 00:00:00 2001 From: Edwin Wong Date: Fri, 29 Apr 2022 20:31:18 +0000 Subject: [PATCH] Only use libbinder_ndk for aidl service. [ Merged from http://go/wvgerrit/151169 ] Test: Netflix and Google TV streaming and downloaded playback Test: unit tests Test: atest VtsAidlHalDrmTargetTest Test: adb shell readelf -d /vendor/bin/hw/android.hardware.drm-service.widevine Test: adb shell readelf -d /vendor/lib64/libwvaidl.so Bug: 230791937 Change-Id: Ia60d9fc838bf228b40d99b076a837ae789fa2d03 --- libwvdrmengine/Android.bp | 20 ++++++++++++------- libwvdrmengine/aidl_src/WVDrmFactory.cpp | 6 ++---- libwvdrmengine/aidl_src/service.cpp | 3 ++- libwvdrmengine/aidl_src/serviceLazy.cpp | 3 ++- libwvdrmengine/cdm/test/coverage-test.mk | 2 +- libwvdrmengine/cdm/test/integration-test.mk | 2 +- libwvdrmengine/cdm/test/unit-test.mk | 2 +- libwvdrmengine/cdm/util/src/log.cpp | 8 ++++---- libwvdrmengine/mediadrm/Android.bp | 1 - .../mediadrm/aidl_src/WVDrmPlugin.cpp | 4 ++-- libwvdrmengine/mediadrm/test/Android.mk | 2 +- libwvdrmengine/oemcrypto/test/common.mk | 2 +- libwvdrmengine/vts/vendor_module/Android.bp | 2 +- 13 files changed, 31 insertions(+), 26 deletions(-) diff --git a/libwvdrmengine/Android.bp b/libwvdrmengine/Android.bp index 3ddef22d..1cb3d02c 100644 --- a/libwvdrmengine/Android.bp +++ b/libwvdrmengine/Android.bp @@ -107,10 +107,10 @@ cc_defaults { "android.hardware.drm@1.2", "android.hardware.drm@1.3", "libbase", + "libbinder", "libhidlbase", "liblog", "libutils", - "libbinder", ], } @@ -131,7 +131,6 @@ cc_defaults { "libbase", "libbinder_ndk", "liblog", - "libhwbinder", "libutils", "libwvaidl", ], @@ -261,7 +260,11 @@ cc_binary { srcs: ["aidl_src/service.cpp"], - shared_libs: ["libbinder"], + include_dirs: [ + "frameworks/native/libs/binder/include", + ], + + shared_libs: ["libbinder_ndk"], init_rc: ["aidl_src/android.hardware.drm-service.widevine.rc"], vintf_fragments: ["manifest_android.hardware.drm-service.widevine.xml"], @@ -280,7 +283,11 @@ cc_binary { srcs: ["aidl_src/serviceLazy.cpp"], - shared_libs: ["libbinder"], + include_dirs: [ + "frameworks/native/libs/binder/include", + ], + + shared_libs: ["libbinder_ndk"], init_rc: ["aidl_src/android.hardware.drm-service-lazy.widevine.rc"], vintf_fragments: ["manifest_android.hardware.drm-service.widevine.xml"], @@ -324,7 +331,7 @@ cc_library_static { ], shared_libs: [ - "libbinder", + "libbinder_ndk", "libcrypto", "libhidlbase", "liblog", @@ -358,7 +365,7 @@ cc_library_static { ], shared_libs: [ - "libbinder", + "libbinder_ndk", "libcrypto", "libhidlbase", "liblog", @@ -520,7 +527,6 @@ cc_library_shared { shared_libs: [ "android.hardware.drm-V1-ndk", "libbase", - "libbinder", "libbinder_ndk", "libcrypto", "libcutils", diff --git a/libwvdrmengine/aidl_src/WVDrmFactory.cpp b/libwvdrmengine/aidl_src/WVDrmFactory.cpp index 537409cd..fed48a64 100644 --- a/libwvdrmengine/aidl_src/WVDrmFactory.cpp +++ b/libwvdrmengine/aidl_src/WVDrmFactory.cpp @@ -49,8 +49,7 @@ bool WVDrmFactory::isCryptoSchemeSupported(const Uuid& in_uuid) { const std::vector& in_initData, std::shared_ptr<::aidl::android::hardware::drm::ICryptoPlugin>* _aidl_return) { - const auto& self = android::IPCThreadState::self(); - const char* sid = self->getCallingSid(); + const char* sid = AIBinder_getCallingSid(); sid = sid ? (std::strstr(sid, "mediadrmserver") ? sid : "app") : "nullptr"; ALOGI("[%s] calling %s", sid, __PRETTY_FUNCTION__); @@ -73,8 +72,7 @@ bool WVDrmFactory::isCryptoSchemeSupported(const Uuid& in_uuid) { ::ndk::ScopedAStatus WVDrmFactory::createDrmPlugin( const Uuid& in_uuid, const string& in_appPackageName, std::shared_ptr<::aidl::android::hardware::drm::IDrmPlugin>* _aidl_return) { - const auto& self = ::android::IPCThreadState::self(); - const char* sid = self->getCallingSid(); + const char* sid = AIBinder_getCallingSid(); sid = sid ? (std::strstr(sid, "mediadrmserver") ? sid : "app") : "nullptr"; ALOGI("[%s][%s] calling %s", sid, in_appPackageName.c_str(), __PRETTY_FUNCTION__); diff --git a/libwvdrmengine/aidl_src/service.cpp b/libwvdrmengine/aidl_src/service.cpp index 5670fae2..d6f39630 100644 --- a/libwvdrmengine/aidl_src/service.cpp +++ b/libwvdrmengine/aidl_src/service.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include "WVCreatePluginFactories.h" #include "WVDrmFactory.h" @@ -31,6 +30,8 @@ int main(int /* argc */, char** /* argv */) { ABinderProcess_setThreadPoolMaxThreadCount(8); std::shared_ptr drmFactory = createDrmFactory(); + AIBinder_setRequestingSid(drmFactory->asBinder().get(), true); + const std::string drmInstance = std::string(WVDrmFactory::descriptor) + "/widevine"; binder_status_t status = AServiceManager_addService( diff --git a/libwvdrmengine/aidl_src/serviceLazy.cpp b/libwvdrmengine/aidl_src/serviceLazy.cpp index 33a082ad..0bbb00d9 100644 --- a/libwvdrmengine/aidl_src/serviceLazy.cpp +++ b/libwvdrmengine/aidl_src/serviceLazy.cpp @@ -19,7 +19,6 @@ #include #include #include -#include #include "WVCreatePluginFactories.h" #include "WVDrmFactory.h" @@ -31,6 +30,8 @@ int main(int /* argc */, char** /* argv */) { ABinderProcess_setThreadPoolMaxThreadCount(8); std::shared_ptr drmFactory = createDrmFactory(); + AIBinder_setRequestingSid(drmFactory->asBinder().get(), true); + const std::string drmInstance = std::string(WVDrmFactory::descriptor) + "/widevine"; binder_status_t status = AServiceManager_registerLazyService( diff --git a/libwvdrmengine/cdm/test/coverage-test.mk b/libwvdrmengine/cdm/test/coverage-test.mk index d511a072..963ec633 100644 --- a/libwvdrmengine/cdm/test/coverage-test.mk +++ b/libwvdrmengine/cdm/test/coverage-test.mk @@ -9,7 +9,7 @@ HIDL_EXTENSION := _hidl LIB_BINDER := libhidlbase else HIDL_EXTENSION := -LIB_BINDER := libbinder +LIB_BINDER := libbinder_ndk endif LOCAL_LICENSE_CONDITIONS := by_exception_only diff --git a/libwvdrmengine/cdm/test/integration-test.mk b/libwvdrmengine/cdm/test/integration-test.mk index b5638969..3eb314c8 100644 --- a/libwvdrmengine/cdm/test/integration-test.mk +++ b/libwvdrmengine/cdm/test/integration-test.mk @@ -12,7 +12,7 @@ HIDL_EXTENSION := _hidl LIB_BINDER := libhidlbase else HIDL_EXTENSION := -LIB_BINDER := libbinder +LIB_BINDER := libbinder_ndk endif LOCAL_MODULE := $(test_name) diff --git a/libwvdrmengine/cdm/test/unit-test.mk b/libwvdrmengine/cdm/test/unit-test.mk index f0e26743..8b099d9c 100644 --- a/libwvdrmengine/cdm/test/unit-test.mk +++ b/libwvdrmengine/cdm/test/unit-test.mk @@ -12,7 +12,7 @@ HIDL_EXTENSION := _hidl LIB_BINDER := libhidlbase else HIDL_EXTENSION := -LIB_BINDER := libbinder +LIB_BINDER := libbinder_ndk endif LOCAL_MODULE := $(test_name) diff --git a/libwvdrmengine/cdm/util/src/log.cpp b/libwvdrmengine/cdm/util/src/log.cpp index d9fc58ae..c8598bf2 100644 --- a/libwvdrmengine/cdm/util/src/log.cpp +++ b/libwvdrmengine/cdm/util/src/log.cpp @@ -26,7 +26,7 @@ #ifdef IS_HIDL # include #else // AIDL is the default -# include +# include #endif #include #include @@ -82,10 +82,10 @@ uint32_t GetLoggingUid() { return tl_logging_uid_; } uint32_t GetIpcCallingUid() { #ifdef IS_HIDL const auto self = android::hardware::IPCThreadState::selfOrNull(); -#else // AIDL is the default - const auto self = android::IPCThreadState::selfOrNull(); -#endif return self ? self->getCallingUid() : UNKNOWN_UID; +#else // AIDL is the default + return AIBinder_getCallingUid(); +#endif } void InitLogging() {} diff --git a/libwvdrmengine/mediadrm/Android.bp b/libwvdrmengine/mediadrm/Android.bp index 091e5b0e..5552dede 100644 --- a/libwvdrmengine/mediadrm/Android.bp +++ b/libwvdrmengine/mediadrm/Android.bp @@ -102,7 +102,6 @@ cc_library_static { shared_libs: [ "libbase", - "libbinder", "libbinder_ndk", "libcrypto", "liblog", diff --git a/libwvdrmengine/mediadrm/aidl_src/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/aidl_src/WVDrmPlugin.cpp index 9556a8e0..8600c26d 100644 --- a/libwvdrmengine/mediadrm/aidl_src/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/aidl_src/WVDrmPlugin.cpp @@ -10,6 +10,7 @@ #include "WVDrmPlugin.h" #include +#include #include #include #include @@ -1634,8 +1635,7 @@ Status WVDrmPlugin::unprovisionDevice() { return toNdkScopedAStatus(Status::BAD_VALUE); } - const auto& self = android::IPCThreadState::self(); - const char* sid = self->getCallingSid(); + const char* sid = AIBinder_getCallingSid(); if (!sid || (!strstr(sid, ":mediashell_app:") && !strstr(sid, ":mediadrmserver:") && !strstr(sid, ":setupwraith_app:"))) { diff --git a/libwvdrmengine/mediadrm/test/Android.mk b/libwvdrmengine/mediadrm/test/Android.mk index f9500ee4..41386199 100644 --- a/libwvdrmengine/mediadrm/test/Android.mk +++ b/libwvdrmengine/mediadrm/test/Android.mk @@ -39,7 +39,7 @@ LOCAL_SHARED_LIBRARIES := \ android.hardware.drm@1.3 \ android.hardware.drm@1.4 \ android.hidl.memory@1.0 \ - libbinder \ + libbinder_ndk \ libbase \ libcrypto \ libdl \ diff --git a/libwvdrmengine/oemcrypto/test/common.mk b/libwvdrmengine/oemcrypto/test/common.mk index 7b3991c9..fb173896 100644 --- a/libwvdrmengine/oemcrypto/test/common.mk +++ b/libwvdrmengine/oemcrypto/test/common.mk @@ -6,7 +6,7 @@ HIDL_EXTENSION := _hidl LIB_BINDER := libhidlbase else HIDL_EXTENSION := -LIB_BINDER := libbinder +LIB_BINDER := libbinder_ndk endif ifeq ($(filter mips mips64, $(TARGET_ARCH)),) diff --git a/libwvdrmengine/vts/vendor_module/Android.bp b/libwvdrmengine/vts/vendor_module/Android.bp index c14e1f09..9610dfe6 100644 --- a/libwvdrmengine/vts/vendor_module/Android.bp +++ b/libwvdrmengine/vts/vendor_module/Android.bp @@ -57,7 +57,7 @@ cc_library_shared { shared_libs: [ "libbase", - "libbinder", + "libbinder_ndk", "libcrypto", "liblog", "libssl",