diff --git a/frameworks/native/test/fuzztest/drmservice_fuzzer/BUILD.gn b/frameworks/native/test/fuzztest/drmservice_fuzzer/BUILD.gn index 719fff09..423d6b73 100644 --- a/frameworks/native/test/fuzztest/drmservice_fuzzer/BUILD.gn +++ b/frameworks/native/test/fuzztest/drmservice_fuzzer/BUILD.gn @@ -68,6 +68,7 @@ ohos_fuzztest("drmserviceFuzzTest") { "bundle_framework:appexecfwk_core", "c_utils:utils", "drivers_interface_drm:libdrm_proxy_1.0", + "drivers_interface_drm:libdrm_proxy_1.1", "hdf_core:libhdf_host", "hdf_core:libhdf_ipc_adapter", "hdf_core:libhdf_utils", diff --git a/services/drm_service/BUILD.gn b/services/drm_service/BUILD.gn index 32db8598..9ec06e86 100644 --- a/services/drm_service/BUILD.gn +++ b/services/drm_service/BUILD.gn @@ -53,6 +53,7 @@ ohos_shared_library("drm_service") { "c_utils:utils", "data_share:datashare_consumer", "drivers_interface_drm:libdrm_proxy_1.0", + "drivers_interface_drm:libdrm_proxy_1.1", "hdf_core:libhdf_host", "hdf_core:libhdf_ipc_adapter", "hdf_core:libhdf_utils", diff --git a/services/drm_service/server/include/drm_host_manager.h b/services/drm_service/server/include/drm_host_manager.h index e198ea0e..4cc7205a 100644 --- a/services/drm_service/server/include/drm_host_manager.h +++ b/services/drm_service/server/include/drm_host_manager.h @@ -35,6 +35,7 @@ #include "iservstat_listener_hdi.h" #include "v1_0/media_key_system_factory_proxy.h" #include "v1_0/media_key_system_proxy.h" +#include "v1_1/media_key_system_factory_proxy.h" namespace OHOS { namespace DrmStandard { @@ -110,6 +111,8 @@ public: void OnDrmPluginDied(std::string &name); void SetIsNetWork(const bool &isNetWork); bool GetIsNetWork(); + void SetBundleName(const std::string &BundleName); + std::string GetBundleName(); private: static void UnLoadOEMCertifaicateService(std::string &name, ExtraInfo info); static void GetHttpProxyParameter(std::string &host, int32_t &port, std::list &exclusionList); @@ -136,6 +139,7 @@ private: std::string QueryBasicStatement(); void WaitForNetwork(); + std::string bundleName_; StatusCallback *statusCallback_; std::map> handleAndKeySystemMap; std::thread serviceThread; diff --git a/services/drm_service/server/include/mediakeysystemfactory_service.h b/services/drm_service/server/include/mediakeysystemfactory_service.h index a8a8d802..a795a188 100644 --- a/services/drm_service/server/include/mediakeysystemfactory_service.h +++ b/services/drm_service/server/include/mediakeysystemfactory_service.h @@ -37,6 +37,7 @@ #include "v1_0/media_key_system_factory_proxy.h" #include "v1_0/media_key_system_proxy.h" +#include "v1_1/media_key_system_factory_proxy.h" namespace OHOS { namespace DrmStandard { diff --git a/services/drm_service/server/src/drm_host_manager.cpp b/services/drm_service/server/src/drm_host_manager.cpp index b5705180..907b1ef4 100644 --- a/services/drm_service/server/src/drm_host_manager.cpp +++ b/services/drm_service/server/src/drm_host_manager.cpp @@ -677,8 +677,17 @@ int32_t DrmHostManager::CreateMediaKeySystem(std::string &name, sptrCreateMediaKeySystem(hdiMediaKeySystem); + auto drmHostServiceProxy_1_1 = OHOS::HDI::Drm::V1_1::IMediaKeySystemFactory::CastFrom(drmHostServieProxys); + if (drmHostServiceProxy_1_1 != nullptr) { + DRM_INFO_LOG("proxy 1.1 enter"); + ret = drmHostServiceProxy_1_1->CreateMediaKeySystemWithBundleName(bundleName_, hdiMediaKeySystem); + hdiMediaKeySystemFactoryAndPluginNameMap[drmHostServiceProxy_1_1] = name; + hdiMediaKeySystemFactoryAndPluginNameMap.erase(drmHostServieProxys); + drmHostServieProxys = drmHostServiceProxy_1_1; + } else { + DRM_INFO_LOG("proxy 1.0 enter"); + ret = drmHostServieProxys->CreateMediaKeySystem(hdiMediaKeySystem); + } if (ret != DRM_INNER_ERR_OK) { hdiMediaKeySystem = nullptr; ReleaseSevices(drmHostServieProxys); @@ -811,5 +820,15 @@ bool DrmHostManager::GetIsNetWork() { return this->isNetWork; } + +void DrmHostManager::SetBundleName(const std::string &bundleName) +{ + this->bundleName_ = bundleName; +} + +std::string DrmHostManager::GetBundleName() +{ + return this->bundleName_; +} } // namespace DrmStandard } // namespace OHOS diff --git a/services/drm_service/server/src/mediakeysystemfactory_service.cpp b/services/drm_service/server/src/mediakeysystemfactory_service.cpp index de6b6946..ff0a8ae7 100644 --- a/services/drm_service/server/src/mediakeysystemfactory_service.cpp +++ b/services/drm_service/server/src/mediakeysystemfactory_service.cpp @@ -258,6 +258,8 @@ int32_t MediaKeySystemFactoryService::CreateMediaKeySystem(const std::string &na return DRM_INNER_ERR_MAX_SYSTEM_NUM_REACHED; } std::string systemName = name; + std::string bundleName = GetClientBundleName(IPCSkeleton::GetCallingUid()); + drmHostManager_->SetBundleName(bundleName); int32_t ret = drmHostManager_->CreateMediaKeySystem(systemName, hdiMediaKeySystem); if (hdiMediaKeySystem == nullptr || ret != DRM_INNER_ERR_OK) { DRM_ERR_LOG("drmHostManager_ return hdiMediaKeySystem nullptr.");