diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index c824161f..f431986e 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -2358,6 +2358,7 @@ bool CryptoSession::GetProductionReadiness( const OEMCryptoResult result = WithOecReadLock("GetProductionReadiness", [&] { return OEMCrypto_ProductionReady(security_level); }); + metrics_->oemcrypto_production_readiness_.Record(result); switch (result) { case OEMCrypto_SUCCESS: *readiness = kProductionReadinessTrue; @@ -2367,6 +2368,9 @@ bool CryptoSession::GetProductionReadiness( break; case OEMCrypto_ERROR_UNKNOWN_FAILURE: default: // Other vendor-defined codes indicate not production ready. + LOGD("Not production ready: security_level = %s, result = %d", + RequestedSecurityLevelToString(security_level), + static_cast(result)); *readiness = kProductionReadinessFalse; break; } diff --git a/libwvdrmengine/cdm/metrics/include/metrics_collections.h b/libwvdrmengine/cdm/metrics/include/metrics_collections.h index 92ea8c54..230a9494 100644 --- a/libwvdrmengine/cdm/metrics/include/metrics_collections.h +++ b/libwvdrmengine/cdm/metrics/include/metrics_collections.h @@ -298,6 +298,7 @@ class CryptoMetrics { EventMetric oemcrypto_install_oem_private_key_; ValueMetric oemcrypto_watermarking_support_; + ValueMetric oemcrypto_production_readiness_; }; // class CryptoMetrics // This class contains session-scoped metrics. All properties and diff --git a/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp b/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp index d6b72faa..a3070576 100644 --- a/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp +++ b/libwvdrmengine/cdm/metrics/src/metrics_collections.cpp @@ -211,6 +211,8 @@ void CryptoMetrics::Serialize( oemcrypto_maximum_usage_table_header_size_.ToProto()); crypto_metrics->set_allocated_oemcrypto_watermarking_support( oemcrypto_watermarking_support_.ToProto()); + crypto_metrics->set_allocated_oemcrypto_production_readiness( + oemcrypto_production_readiness_.ToProto()); } SessionMetrics::SessionMetrics() : session_id_(""), completed_(false) {} diff --git a/libwvdrmengine/cdm/metrics/src/wv_metrics.proto b/libwvdrmengine/cdm/metrics/src/wv_metrics.proto index c105f958..d899b209 100644 --- a/libwvdrmengine/cdm/metrics/src/wv_metrics.proto +++ b/libwvdrmengine/cdm/metrics/src/wv_metrics.proto @@ -92,7 +92,7 @@ message WvCdmMetrics { // This contains metrics that were captured at the CryptoSession level. These // include CryptoSession metrics and most OEMCrypto metrics. - // next id: 86 + // next id: 87 message CryptoMetrics { // Crypto Session Metrics. optional ValueMetric crypto_session_security_level = 1; @@ -193,6 +193,7 @@ message WvCdmMetrics { optional ValueMetric oemcrypto_minor_api_version = 83; optional ValueMetric oemcrypto_maximum_usage_table_header_size = 84; optional ValueMetric oemcrypto_watermarking_support = 85; + optional ValueMetric oemcrypto_production_readiness = 86; } // This contains metrics that were captured within a CdmSession. This contains diff --git a/libwvdrmengine/cdm/metrics/test/metrics_collections_unittest.cpp b/libwvdrmengine/cdm/metrics/test/metrics_collections_unittest.cpp index f1417439..b3931e60 100644 --- a/libwvdrmengine/cdm/metrics/test/metrics_collections_unittest.cpp +++ b/libwvdrmengine/cdm/metrics/test/metrics_collections_unittest.cpp @@ -445,6 +445,7 @@ TEST_F(CryptoMetricsTest, AllCryptoMetrics) { crypto_metrics.oemcrypto_maximum_usage_table_header_size_.Record(321); crypto_metrics.oemcrypto_watermarking_support_.Record( OEMCrypto_WatermarkingAlwaysOn); + crypto_metrics.oemcrypto_production_readiness_.Record(OEMCrypto_SUCCESS); WvCdmMetrics::CryptoMetrics actual; crypto_metrics.Serialize(&actual); @@ -538,6 +539,8 @@ TEST_F(CryptoMetricsTest, AllCryptoMetrics) { actual.oemcrypto_maximum_usage_table_header_size().int_value()); EXPECT_EQ(static_cast(OEMCrypto_WatermarkingAlwaysOn), actual.oemcrypto_watermarking_support().int_value()); + EXPECT_EQ(static_cast(OEMCrypto_SUCCESS), + actual.oemcrypto_production_readiness().int_value()); } } // namespace metrics } // namespace wvcdm