From ca7747fc69a93d482e4dc145d4afb30d48813b14 Mon Sep 17 00:00:00 2001 From: liyangyang111 Date: Sat, 16 Aug 2025 16:41:41 +0800 Subject: [PATCH 1/8] ut test Signed-off-by: liyangyang111 --- .../unittest/src/drm_framework_unittest.cpp | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/frameworks/native/test/unittest/src/drm_framework_unittest.cpp b/frameworks/native/test/unittest/src/drm_framework_unittest.cpp index cf02385..27250a8 100644 --- a/frameworks/native/test/unittest/src/drm_framework_unittest.cpp +++ b/frameworks/native/test/unittest/src/drm_framework_unittest.cpp @@ -869,32 +869,51 @@ HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateMediaKeyRequestNormal_024, T MediaKeySystem *mediaKeySystem = nullptr; MediaKeySession *mediaKeySession = nullptr; DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO; + + // 1. 创建 MediaKeySystem errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem); EXPECT_NE(mediaKeySystem, nullptr); EXPECT_EQ(errNo, DRM_ERR_OK); + + // 2. 创建 MediaKeySession errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession); EXPECT_NE(mediaKeySession, nullptr); EXPECT_EQ(errNo, DRM_ERR_OK); - // mediakeysession + + // 3. 准备请求数据 DRM_MediaKeyRequest mediaKeyRequest; DRM_MediaKeyRequestInfo info; unsigned char testData[139] = REQUESTINFODATA; + + // 初始化 info memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo)); info.initDataLen = sizeof(testData); info.type = MEDIA_KEY_TYPE_ONLINE; - memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4")); - memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData)); - memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName")); - memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue")); + + // 拷贝 mimeType(目标缓冲区大小要用 sizeof(info.mimeType)) + memcpy_s(info.mimeType, sizeof(info.mimeType), "video/mp4", strlen("video/mp4") + 1); + + // 拷贝 initData + memcpy_s(info.initData, sizeof(info.initData), testData, sizeof(testData)); + + // 拷贝 optionName 和 optionData(目标大小必须是结构体里定义的长度) + memcpy_s(info.optionName[0], sizeof(info.optionName[0]), "optionalDataName", strlen("optionalDataName") + 1); + memcpy_s(info.optionData[0], sizeof(info.optionData[0]), "optionalDataValue", strlen("optionalDataValue") + 1); info.optionsCount = 1; + + // 4. 调用接口生成请求 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest); EXPECT_EQ(errNo, DRM_ERR_OK); + + // 5. 销毁 session & system errNo = OH_MediaKeySession_Destroy(mediaKeySession); EXPECT_EQ(errNo, DRM_ERR_OK); + errNo = OH_MediaKeySystem_Destroy(mediaKeySystem); EXPECT_EQ(errNo, DRM_ERR_OK); } + /* * Feature: Framework * Function: Processing device certificate response testing -- Gitee From cfa424fa15b6d31143a17a119f8fd0305c2de6b6 Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Tue, 19 Aug 2025 17:52:51 +0800 Subject: [PATCH 2/8] utdebug Signed-off-by: m0_54007497 --- frameworks/js/drm_napi/key_session_napi.cpp | 2 +- .../unittest/src/drm_framework_unittest.cpp | 29 ++++--------------- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/frameworks/js/drm_napi/key_session_napi.cpp b/frameworks/js/drm_napi/key_session_napi.cpp index 0706b8e..747aa2f 100644 --- a/frameworks/js/drm_napi/key_session_napi.cpp +++ b/frameworks/js/drm_napi/key_session_napi.cpp @@ -296,7 +296,7 @@ napi_value MediaKeySessionNapi::ProcessMediaKeyResponse(napi_env env, napi_callb NapiDrmError::ThrowError(env, "make context failed, unknown error.", DRM_NAPI_ERR_UNKNOWN); return NapiParamUtils::GetUndefinedValue(env); } - + DRM_ERR_LOG("context not null."); auto inputParser = [env, context](size_t argc, napi_value *argv) { NAPI_CHECK_ARGS_RETURN_VOID(context, argc == ARGS_ONE, "invalid arguments", DRM_NAPI_ERR_INVALID_VAL); context->status = NapiParamUtils::GetValueUint8Array(env, context->response, argv[PARAM0]); diff --git a/frameworks/native/test/unittest/src/drm_framework_unittest.cpp b/frameworks/native/test/unittest/src/drm_framework_unittest.cpp index 27250a8..cf02385 100644 --- a/frameworks/native/test/unittest/src/drm_framework_unittest.cpp +++ b/frameworks/native/test/unittest/src/drm_framework_unittest.cpp @@ -869,51 +869,32 @@ HWTEST_F(DrmFrameworkUnitTest, Drm_unittest_GenerateMediaKeyRequestNormal_024, T MediaKeySystem *mediaKeySystem = nullptr; MediaKeySession *mediaKeySession = nullptr; DRM_ContentProtectionLevel contentProtectionLevel = CONTENT_PROTECTION_LEVEL_SW_CRYPTO; - - // 1. 创建 MediaKeySystem errNo = OH_MediaKeySystem_Create(GetUuid(), &mediaKeySystem); EXPECT_NE(mediaKeySystem, nullptr); EXPECT_EQ(errNo, DRM_ERR_OK); - - // 2. 创建 MediaKeySession errNo = OH_MediaKeySystem_CreateMediaKeySession(mediaKeySystem, &contentProtectionLevel, &mediaKeySession); EXPECT_NE(mediaKeySession, nullptr); EXPECT_EQ(errNo, DRM_ERR_OK); - - // 3. 准备请求数据 + // mediakeysession DRM_MediaKeyRequest mediaKeyRequest; DRM_MediaKeyRequestInfo info; unsigned char testData[139] = REQUESTINFODATA; - - // 初始化 info memset_s(&info, sizeof(DRM_MediaKeyRequestInfo), 0, sizeof(DRM_MediaKeyRequestInfo)); info.initDataLen = sizeof(testData); info.type = MEDIA_KEY_TYPE_ONLINE; - - // 拷贝 mimeType(目标缓冲区大小要用 sizeof(info.mimeType)) - memcpy_s(info.mimeType, sizeof(info.mimeType), "video/mp4", strlen("video/mp4") + 1); - - // 拷贝 initData - memcpy_s(info.initData, sizeof(info.initData), testData, sizeof(testData)); - - // 拷贝 optionName 和 optionData(目标大小必须是结构体里定义的长度) - memcpy_s(info.optionName[0], sizeof(info.optionName[0]), "optionalDataName", strlen("optionalDataName") + 1); - memcpy_s(info.optionData[0], sizeof(info.optionData[0]), "optionalDataValue", strlen("optionalDataValue") + 1); + memcpy_s(info.mimeType, sizeof("video/mp4"), (char *)"video/mp4", sizeof("video/mp4")); + memcpy_s(info.initData, sizeof(testData), testData, sizeof(testData)); + memcpy_s(info.optionName[0], sizeof("optionalDataName"), (char *)"optionalDataName", sizeof("optionalDataName")); + memcpy_s(info.optionData[0], sizeof("optionalDataValue"), (char *)"optionalDataValue", sizeof("optionalDataValue")); info.optionsCount = 1; - - // 4. 调用接口生成请求 errNo = OH_MediaKeySession_GenerateMediaKeyRequest(mediaKeySession, &info, &mediaKeyRequest); EXPECT_EQ(errNo, DRM_ERR_OK); - - // 5. 销毁 session & system errNo = OH_MediaKeySession_Destroy(mediaKeySession); EXPECT_EQ(errNo, DRM_ERR_OK); - errNo = OH_MediaKeySystem_Destroy(mediaKeySystem); EXPECT_EQ(errNo, DRM_ERR_OK); } - /* * Feature: Framework * Function: Processing device certificate response testing -- Gitee From 9d60532443c313511fec3a77b1c051d23fc96f2d Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 20 Aug 2025 09:07:20 +0800 Subject: [PATCH 3/8] utdebug Signed-off-by: m0_54007497 --- frameworks/js/drm_napi/key_session_napi.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/frameworks/js/drm_napi/key_session_napi.cpp b/frameworks/js/drm_napi/key_session_napi.cpp index 747aa2f..11be324 100644 --- a/frameworks/js/drm_napi/key_session_napi.cpp +++ b/frameworks/js/drm_napi/key_session_napi.cpp @@ -291,19 +291,20 @@ napi_value MediaKeySessionNapi::ProcessMediaKeyResponse(napi_env env, napi_callb std::chrono::system_clock::now().time_since_epoch()).count(); DrmTrace trace("MediaKeySessionNapi::ProcessMediaKeyResponse"); auto context = std::make_shared(); + if (context == nullptr) { DRM_ERR_LOG("ProcessMediaKeyResponse failed."); NapiDrmError::ThrowError(env, "make context failed, unknown error.", DRM_NAPI_ERR_UNKNOWN); return NapiParamUtils::GetUndefinedValue(env); } - DRM_ERR_LOG("context not null."); + DRM_ERR_LOG("context1 not null."); auto inputParser = [env, context](size_t argc, napi_value *argv) { NAPI_CHECK_ARGS_RETURN_VOID(context, argc == ARGS_ONE, "invalid arguments", DRM_NAPI_ERR_INVALID_VAL); context->status = NapiParamUtils::GetValueUint8Array(env, context->response, argv[PARAM0]); NAPI_CHECK_STATUS_RETURN_VOID(context, "ProcessMediaKeyResponse failed!", DRM_NAPI_ERR_INVALID_VAL); }; + DRM_ERR_LOG("context2 not ilegal."); context->GetCbInfo(env, info, inputParser); - auto executor = [context]() { DRM_NAPI_CHECK_AND_RETURN_VOID_LOG(CheckContextStatus(context), "context object state is error."); auto obj = reinterpret_cast(context->native); @@ -316,6 +317,7 @@ napi_value MediaKeySessionNapi::ProcessMediaKeyResponse(napi_env env, napi_callb if (context->intValue != DRM_NAPI_ERR_OK) { context->SignError(DRM_NAPI_ERR_SERVICE_FATAL); } + DRM_ERR_LOG("context3 send success."); }; auto complete = [env, context](napi_value &output) { -- Gitee From 3ab879444fa2af54f947e6e536d062cd2585f6c5 Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 20 Aug 2025 11:46:48 +0800 Subject: [PATCH 4/8] debug Signed-off-by: m0_54007497 --- frameworks/native/drm/key_session_impl.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/frameworks/native/drm/key_session_impl.cpp b/frameworks/native/drm/key_session_impl.cpp index 9c8eef7..59dddc8 100644 --- a/frameworks/native/drm/key_session_impl.cpp +++ b/frameworks/native/drm/key_session_impl.cpp @@ -112,6 +112,11 @@ int32_t MediaKeySessionImpl::GenerateMediaKeyRequest(MediaKeyRequestInfo &licens int32_t MediaKeySessionImpl::ProcessMediaKeyResponse(std::vector &licenseId, std::vector &licenseResponse) { + DRM_INFO_LOG("licenseResponse size=%d, first bytes=%02x %02x %02x", + licenseResponse.size(), + licenseResponse.empty() ? 0 : licenseResponse[0], + licenseResponse.size() > 1 ? licenseResponse[1] : 0, + licenseResponse.size() > 2 ? licenseResponse[2] : 0) DrmTrace trace("MediaKeySessionImpl::ProcessMediaKeyResponse"); DRM_INFO_LOG("ProcessMediaKeyResponse enter."); std::lock_guard lock(mutex_); @@ -128,6 +133,11 @@ int32_t MediaKeySessionImpl::ProcessMediaKeyResponse(std::vector &licen } return DRM_INNER_ERR_OK; } +/* DRM_INFO_LOG("licenseResponse size=%d, first bytes=%02x %02x %02x", + licenseResponse.size(), + licenseResponse.empty() ? 0 : licenseResponse[0], + licenseResponse.size() > 1 ? licenseResponse[1] : 0, + licenseResponse.size() > 2 ? licenseResponse[2] : 0);*/ int32_t MediaKeySessionImpl::GenerateOfflineReleaseRequest(std::vector &licenseId, std::vector &releaseRequest) -- Gitee From 53efc9c7a7d04647977c1000576e55eba342cfe8 Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 20 Aug 2025 12:02:20 +0800 Subject: [PATCH 5/8] debbug Signed-off-by: m0_54007497 --- services/drm_service/server/src/key_session_service.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/drm_service/server/src/key_session_service.cpp b/services/drm_service/server/src/key_session_service.cpp index 72725df..e33789c 100644 --- a/services/drm_service/server/src/key_session_service.cpp +++ b/services/drm_service/server/src/key_session_service.cpp @@ -134,6 +134,11 @@ int32_t MediaKeySessionService::ProcessMediaKeyResponse(std::vector &li { DrmTrace trace("ProcessMediaKeyResponse"); DRM_INFO_LOG("ProcessMediaKeyResponse enter."); + DRM_INFO_LOG("licenseResponse size=%d, first bytes=%02x %02x %02x", + licenseResponse.size(), + licenseResponse.empty() ? 0 : licenseResponse[0], + licenseResponse.size() > 1 ? licenseResponse[1] : 0, + licenseResponse.size() > 2 ? licenseResponse[2] : 0); int32_t ret = DRM_INNER_ERR_OK; std::lock_guard lock(sessionMutex_); DRM_CHECK_AND_RETURN_RET_LOG(hdiMediaKeySession_ != nullptr, DRM_INNER_ERR_SERVICE_FATAL_ERROR, -- Gitee From 6db111b7557a74d6e431a1705fd65c38b8f31449 Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 20 Aug 2025 12:03:40 +0800 Subject: [PATCH 6/8] debug Signed-off-by: m0_54007497 --- frameworks/native/drm/key_session_impl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/native/drm/key_session_impl.cpp b/frameworks/native/drm/key_session_impl.cpp index 59dddc8..ee69651 100644 --- a/frameworks/native/drm/key_session_impl.cpp +++ b/frameworks/native/drm/key_session_impl.cpp @@ -116,7 +116,7 @@ int32_t MediaKeySessionImpl::ProcessMediaKeyResponse(std::vector &licen licenseResponse.size(), licenseResponse.empty() ? 0 : licenseResponse[0], licenseResponse.size() > 1 ? licenseResponse[1] : 0, - licenseResponse.size() > 2 ? licenseResponse[2] : 0) + licenseResponse.size() > 2 ? licenseResponse[2] : 0); DrmTrace trace("MediaKeySessionImpl::ProcessMediaKeyResponse"); DRM_INFO_LOG("ProcessMediaKeyResponse enter."); std::lock_guard lock(mutex_); -- Gitee From 63a8b261aa49962bb4718f54d57006ec99fbeb8f Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 20 Aug 2025 14:46:27 +0800 Subject: [PATCH 7/8] debug Signed-off-by: m0_54007497 --- frameworks/native/drm/key_session_impl.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/frameworks/native/drm/key_session_impl.cpp b/frameworks/native/drm/key_session_impl.cpp index ee69651..f08602d 100644 --- a/frameworks/native/drm/key_session_impl.cpp +++ b/frameworks/native/drm/key_session_impl.cpp @@ -112,16 +112,13 @@ int32_t MediaKeySessionImpl::GenerateMediaKeyRequest(MediaKeyRequestInfo &licens int32_t MediaKeySessionImpl::ProcessMediaKeyResponse(std::vector &licenseId, std::vector &licenseResponse) { - DRM_INFO_LOG("licenseResponse size=%d, first bytes=%02x %02x %02x", - licenseResponse.size(), - licenseResponse.empty() ? 0 : licenseResponse[0], - licenseResponse.size() > 1 ? licenseResponse[1] : 0, - licenseResponse.size() > 2 ? licenseResponse[2] : 0); DrmTrace trace("MediaKeySessionImpl::ProcessMediaKeyResponse"); DRM_INFO_LOG("ProcessMediaKeyResponse enter."); std::lock_guard lock(mutex_); int32_t retCode = DRM_INNER_ERR_OK; + return DRM_INNER_ERR_OK;//only for test + if (keySessionServiceProxy_ == nullptr) { DRM_ERR_LOG("ProcessMediaKeyResponse keySessionServiceProxy_ is null"); return DRM_INNER_ERR_INVALID_KEY_SESSION; @@ -133,11 +130,7 @@ int32_t MediaKeySessionImpl::ProcessMediaKeyResponse(std::vector &licen } return DRM_INNER_ERR_OK; } -/* DRM_INFO_LOG("licenseResponse size=%d, first bytes=%02x %02x %02x", - licenseResponse.size(), - licenseResponse.empty() ? 0 : licenseResponse[0], - licenseResponse.size() > 1 ? licenseResponse[1] : 0, - licenseResponse.size() > 2 ? licenseResponse[2] : 0);*/ + int32_t MediaKeySessionImpl::GenerateOfflineReleaseRequest(std::vector &licenseId, std::vector &releaseRequest) -- Gitee From e2579ea341ede4bf7611bb832f1914df0e3ffd81 Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 20 Aug 2025 15:37:12 +0800 Subject: [PATCH 8/8] debug Signed-off-by: m0_54007497 --- frameworks/native/drm/key_session_impl.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/frameworks/native/drm/key_session_impl.cpp b/frameworks/native/drm/key_session_impl.cpp index f08602d..33d1e6d 100644 --- a/frameworks/native/drm/key_session_impl.cpp +++ b/frameworks/native/drm/key_session_impl.cpp @@ -116,13 +116,11 @@ int32_t MediaKeySessionImpl::ProcessMediaKeyResponse(std::vector &licen DRM_INFO_LOG("ProcessMediaKeyResponse enter."); std::lock_guard lock(mutex_); int32_t retCode = DRM_INNER_ERR_OK; - - return DRM_INNER_ERR_OK;//only for test - if (keySessionServiceProxy_ == nullptr) { DRM_ERR_LOG("ProcessMediaKeyResponse keySessionServiceProxy_ is null"); return DRM_INNER_ERR_INVALID_KEY_SESSION; } + return DRM_INNER_ERR_OK;//only for test retCode = keySessionServiceProxy_->ProcessMediaKeyResponse(licenseId, licenseResponse); if (retCode != DRM_INNER_ERR_OK) { DRM_ERR_LOG("ProcessMediaKeyResponse failed, retCode: %{public}d", retCode); -- Gitee