diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index d027861c..eeac3a4d 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -98,6 +98,12 @@ CdmResponseType CdmSession::Init(CdmClientPropertySet* cdm_client_property_set, security_level_ = crypto_session_->GetSecurityLevel(); crypto_metrics_->crypto_session_security_level_.Record(security_level_); + std::string oemcrypto_build; + if(crypto_session_->GetBuildInformation(&oemcrypto_build)) { + metrics_->oemcrypto_build_info_.Record(oemcrypto_build); + } else { + metrics_->oemcrypto_build_info_.SetError(false); + } if (!file_handle_->Init(security_level_)) { LOGE("CdmSession::Init: Unable to initialize file handle"); diff --git a/libwvdrmengine/cdm/metrics/include/metrics_collections.h b/libwvdrmengine/cdm/metrics/include/metrics_collections.h index 8eb1bfc5..d68b4d2d 100644 --- a/libwvdrmengine/cdm/metrics/include/metrics_collections.h +++ b/libwvdrmengine/cdm/metrics/include/metrics_collections.h @@ -278,6 +278,7 @@ class SessionMetrics { EventMetric cdm_session_license_request_latency_ms_; + ValueMetric oemcrypto_build_info_; // Serialize the session metrics to the provided |metric_group|. // |metric_group| is owned by the caller and must not be null. diff --git a/libwvdrmengine/cdm/metrics/src/metrics.proto b/libwvdrmengine/cdm/metrics/src/metrics.proto index 2f749968..c4f13a27 100644 --- a/libwvdrmengine/cdm/metrics/src/metrics.proto +++ b/libwvdrmengine/cdm/metrics/src/metrics.proto @@ -157,7 +157,7 @@ message WvCdmMetrics { // This contains metrics that were captured within a CdmSession. This contains // nested CryptoMetrics that were captured in the context of the session. - // next id: 8 + // next id: 9 message SessionMetrics { optional ValueMetric session_id = 1; optional CryptoMetrics crypto_metrics = 2; @@ -166,6 +166,7 @@ message WvCdmMetrics { repeated CounterMetric cdm_session_restore_offline_session = 5; repeated CounterMetric cdm_session_restore_usage_session = 6; repeated DistributionMetric cdm_session_license_request_latency_ms = 7; + optional ValueMetric oemcrypto_build_info = 8; } // These are metrics recorded at the Engine level. This includes CryptoSession diff --git a/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp b/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp index 7cd3e695..26e85ac7 100644 --- a/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp +++ b/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp @@ -177,6 +177,8 @@ void SessionMetrics::SerializeSessionMetrics( session_metrics->mutable_cdm_session_restore_usage_session()); cdm_session_license_request_latency_ms_.ToProto( session_metrics->mutable_cdm_session_license_request_latency_ms()); + session_metrics->set_allocated_oemcrypto_build_info( + oemcrypto_build_info_.ToProto()); } OemCryptoDynamicAdapterMetrics::OemCryptoDynamicAdapterMetrics() diff --git a/libwvdrmengine/mediadrm/src_hidl/hidl_metrics_adapter.cpp b/libwvdrmengine/mediadrm/src_hidl/hidl_metrics_adapter.cpp index f00ae387..75febd26 100644 --- a/libwvdrmengine/mediadrm/src_hidl/hidl_metrics_adapter.cpp +++ b/libwvdrmengine/mediadrm/src_hidl/hidl_metrics_adapter.cpp @@ -397,6 +397,11 @@ void HidlMetricsAdapter::AddSessionMetrics( group_builder.AddDistributions( "cdm_session_license_request_latency_ms", proto_metrics.cdm_session_license_request_latency_ms()); + if (proto_metrics.has_oemcrypto_build_info()) { + group_builder.AddValue( + "oemcrypto_build_info", + proto_metrics.oemcrypto_build_info()); + } group_vector_.emplace_back(group_builder.Build()); } diff --git a/libwvdrmengine/mediadrm/test/hidl_metrics_adapter_unittest.cpp b/libwvdrmengine/mediadrm/test/hidl_metrics_adapter_unittest.cpp index f79b8bce..f30807ae 100644 --- a/libwvdrmengine/mediadrm/test/hidl_metrics_adapter_unittest.cpp +++ b/libwvdrmengine/mediadrm/test/hidl_metrics_adapter_unittest.cpp @@ -397,6 +397,7 @@ TEST(HidlMetricsAdapterTest, EngineAndSessionAllMetrics) { session_metrics.add_cdm_session_restore_offline_session()->set_count(13); session_metrics.add_cdm_session_restore_usage_session()->set_count(13); session_metrics.add_cdm_session_license_request_latency_ms()->set_min(1.0); + session_metrics.mutable_oemcrypto_build_info()->set_string_value("test"); drm_metrics::WvCdmMetrics::EngineMetrics engine_metrics; *(engine_metrics.mutable_crypto_metrics()) = crypto_metrics; @@ -442,8 +443,8 @@ TEST(HidlMetricsAdapterTest, EngineAndSessionAllMetrics) { hidl_vec hidl_metrics; HidlMetricsAdapter::ToHidlMetrics(metrics_proto, &hidl_metrics); ASSERT_EQ(2U, hidl_metrics.size()); - EXPECT_EQ(85U, hidl_metrics[0].metrics.size()); - EXPECT_EQ(63U, hidl_metrics[1].metrics.size()); + EXPECT_EQ(85U, hidl_metrics[0].metrics.size()) << ToString(hidl_metrics); + EXPECT_EQ(64U, hidl_metrics[1].metrics.size()) << ToString(hidl_metrics); } } // namespace wvcdm