diff --git a/libwvdrmengine/aidl_include/WVDrmFactory.h b/libwvdrmengine/aidl_include/WVDrmFactory.h index 7dcf0a00..3c839f80 100644 --- a/libwvdrmengine/aidl_include/WVDrmFactory.h +++ b/libwvdrmengine/aidl_include/WVDrmFactory.h @@ -19,7 +19,8 @@ namespace hardware { namespace drm { namespace widevine { -struct WVDrmFactory : public ::aidl::android::hardware::drm::BnDrmFactory { +class WVDrmFactory : public ::aidl::android::hardware::drm::BnDrmFactory { + public: WVDrmFactory() {} virtual ~WVDrmFactory() {} diff --git a/libwvdrmengine/build_all_unit_tests.sh b/libwvdrmengine/build_all_unit_tests.sh index 1daa8cde..42636f0f 100755 --- a/libwvdrmengine/build_all_unit_tests.sh +++ b/libwvdrmengine/build_all_unit_tests.sh @@ -52,7 +52,7 @@ WV_UNITTESTS="base64_test \ file_store_unittest \ file_utils_unittest \ generic_crypto_unittest \ - hidl_metrics_adapter_unittest \ + hal_metrics_adapter_unittest \ http_socket_test \ initialization_data_unittest \ keybox_ota_test \ diff --git a/libwvdrmengine/mediacrypto/aidl_include/WVCryptoPlugin.h b/libwvdrmengine/mediacrypto/aidl_include/WVCryptoPlugin.h index b3f9a5d6..96c4e1c4 100644 --- a/libwvdrmengine/mediacrypto/aidl_include/WVCryptoPlugin.h +++ b/libwvdrmengine/mediacrypto/aidl_include/WVCryptoPlugin.h @@ -23,14 +23,21 @@ namespace hardware { namespace drm { namespace widevine { -struct SharedBufferBase { - uint8_t* mBase; - int64_t mSize; +class SharedBufferBase { + public: SharedBufferBase(const ::aidl::android::hardware::drm::SharedBuffer& mem); ~SharedBufferBase(); + uint8_t* base() const { return mBase; } + int64_t size() const { return mSize; } + void set_base(uint8_t* base) { mBase = base; } + void set_size(uint64_t size) { mSize = size; } + private: + uint8_t* mBase; + int64_t mSize; }; -struct WVCryptoPlugin : public ::aidl::android::hardware::drm::BnCryptoPlugin { +class WVCryptoPlugin : public ::aidl::android::hardware::drm::BnCryptoPlugin { + public: WVCryptoPlugin(const void* data, size_t size, const ::android::sp& cdm); virtual ~WVCryptoPlugin(); diff --git a/libwvdrmengine/mediacrypto/aidl_src/WVCryptoPlugin.cpp b/libwvdrmengine/mediacrypto/aidl_src/WVCryptoPlugin.cpp index d2f4ab49..fffda83f 100644 --- a/libwvdrmengine/mediacrypto/aidl_src/WVCryptoPlugin.cpp +++ b/libwvdrmengine/mediacrypto/aidl_src/WVCryptoPlugin.cpp @@ -64,8 +64,9 @@ WVCryptoPlugin::~WVCryptoPlugin() { } SharedBufferBase::SharedBufferBase( - const ::aidl::android::hardware::drm::SharedBuffer& mem) - : mBase(nullptr), mSize(mem.size) { + const ::aidl::android::hardware::drm::SharedBuffer& mem) { + set_base(nullptr); + set_size(mem.size); if (mem.handle.fds.empty()) { return; } @@ -75,13 +76,13 @@ SharedBufferBase::SharedBufferBase( if (addr == MAP_FAILED) { ALOGE("mmap err: fd %d; errno %s", fd, strerror(errno)); } else { - mBase = static_cast(addr); + set_base(static_cast(addr)); } } SharedBufferBase::~SharedBufferBase() { - if (munmap(mBase, mSize)) { - ALOGE("munmap err: base %p; errno %s", mBase, strerror(errno)); + if (munmap(base(), size())) { + ALOGE("munmap err: base %p; errno %s", base(), strerror(errno)); } } @@ -183,7 +184,7 @@ SharedBufferBase::~SharedBufferBase() { } auto src = mSharedBufferMap[in_args.source.bufferId]; - if (src->mBase == nullptr) { + if (src->base() == nullptr) { detailedError = "source is a nullptr"; return toNdkScopedAStatus(Status::ERROR_DRM_CANNOT_HANDLE, detailedError); } @@ -193,18 +194,18 @@ SharedBufferBase::~SharedBufferBase() { &totalSrcSize) || __builtin_add_overflow(totalSrcSize, in_args.source.size, &totalSrcSize) || - totalSrcSize > src->mSize) { + totalSrcSize > src->size()) { android_errorWriteLog(0x534e4554, "176496160"); detailedError = "invalid source buffer size"; return toNdkScopedAStatus(Status::ERROR_DRM_CANNOT_HANDLE, detailedError); } - srcPtr = src->mBase + in_args.source.offset + in_args.offset; + srcPtr = src->base() + in_args.source.offset + in_args.offset; if (in_args.destination.getTag() == NON_SECURE) { const SharedBuffer& destBuffer = in_args.destination.get(); auto dest = mSharedBufferMap[destBuffer.bufferId]; - if (dest->mBase == nullptr) { + if (dest->base() == nullptr) { detailedError = "destination is a nullptr"; return toNdkScopedAStatus(Status::ERROR_DRM_CANNOT_HANDLE, detailedError); @@ -212,14 +213,14 @@ SharedBufferBase::~SharedBufferBase() { size_t totalDstSize = 0; if (__builtin_add_overflow(destBuffer.offset, destBuffer.size, &totalDstSize) || - totalDstSize > dest->mSize) { + totalDstSize > dest->size()) { android_errorWriteLog(0x534e4554, "176444622"); detailedError = "invalid buffer size"; return toNdkScopedAStatus(Status::ERROR_DRM_FRAME_TOO_LARGE, detailedError); } destPtr = static_cast( - dest->mBase + in_args.destination.get().offset); + dest->base() + in_args.destination.get().offset); } else if (in_args.destination.getTag() == SECURE) { handle = android::makeFromAidl(in_args.destination.get()); destPtr = static_cast(handle); diff --git a/libwvdrmengine/mediadrm/aidl_include/WVDrmPlugin.h b/libwvdrmengine/mediadrm/aidl_include/WVDrmPlugin.h index a66c1a52..f101841a 100644 --- a/libwvdrmengine/mediadrm/aidl_include/WVDrmPlugin.h +++ b/libwvdrmengine/mediadrm/aidl_include/WVDrmPlugin.h @@ -40,8 +40,9 @@ using wvcdm::WvContentDecryptionModule; const OEMCrypto_Algorithm kInvalidCryptoAlgorithm = static_cast(-1); -struct WVDrmPlugin : public ::aidl::android::hardware::drm::BnDrmPlugin, +class WVDrmPlugin : public ::aidl::android::hardware::drm::BnDrmPlugin, wvcdm::WvCdmEventListener { + public: WVDrmPlugin(const android::sp& cdm, const std::string& appPackageName, WVGenericCryptoInterface* crypto, bool useSpoid);