Fixes missing or broken metrics in Widevine CDM

A few metrics were missing or not properly collected in the CDM metrics.
This CL addresses them.

Bug: 64570194
Bug: 72866232

Test: Unit tests and Google Play manual test.
Change-Id: I3a3aa4fb3eb8422c9c8c398016f02409307beb33
This commit is contained in:
Adam Stone
2018-03-14 15:20:03 -07:00
parent b19f0d106f
commit e1fe90372f
10 changed files with 157 additions and 61 deletions

View File

@@ -88,7 +88,7 @@ message WvCdmMetrics {
// This contains metrics that were captured at the CryptoSession level. These
// include CryptoSession metrics and most OEMCrypto metrics.
// next id: 56
// next id: 58
message CryptoMetrics {
// Crypto Session Metrics.
optional ValueMetric crypto_session_security_level = 1;
@@ -105,6 +105,7 @@ message WvCdmMetrics {
repeated DistributionMetric crypto_session_open_time_us = 12;
optional ValueMetric crypto_session_system_id = 13;
repeated DistributionMetric crypto_session_update_usage_information_time_us = 14;
repeated DistributionMetric crypto_session_update_usage_entry_time_us = 56;
optional ValueMetric crypto_session_usage_information_support = 15;
// OemCrypto metrics.
optional ValueMetric oemcrypto_api_version = 16;
@@ -147,6 +148,7 @@ message WvCdmMetrics {
repeated DistributionMetric oemcrypto_select_key_time_us = 53;
optional ValueMetric oemcrypto_usage_table_support = 54;
repeated CounterMetric oemcrypto_update_usage_table = 55;
repeated CounterMetric oemcrypto_update_usage_entry = 57;
}
// This contains metrics that were captured within a CdmSession. This contains
@@ -184,7 +186,7 @@ message WvCdmMetrics {
repeated CounterMetric cdm_engine_get_secure_stop_ids = 15;
repeated DistributionMetric cdm_engine_get_usage_info_time_us = 16;
repeated DistributionMetric cdm_engine_handle_provisioning_response_time_us = 17;
optional ValueMetric cdm_engine_life_span = 18;
optional ValueMetric cdm_engine_life_span_ms = 18;
repeated CounterMetric cdm_engine_open_key_set_session = 19;
repeated CounterMetric cdm_engine_open_session = 20;
repeated DistributionMetric cdm_engine_query_key_status_time_us = 21;

View File

@@ -62,6 +62,8 @@ void CryptoMetrics::Serialize(WvCdmMetrics::CryptoMetrics *crypto_metrics) {
crypto_session_update_usage_information_.ToProto(
crypto_metrics
->mutable_crypto_session_update_usage_information_time_us());
crypto_session_update_usage_entry_.ToProto(
crypto_metrics->mutable_crypto_session_update_usage_entry_time_us());
crypto_metrics->set_allocated_crypto_session_usage_information_support(
crypto_session_usage_information_support_.ToProto());
@@ -145,6 +147,8 @@ void CryptoMetrics::Serialize(WvCdmMetrics::CryptoMetrics *crypto_metrics) {
oemcrypto_usage_table_support_.ToProto());
oemcrypto_update_usage_table_.ToProto(
crypto_metrics->mutable_oemcrypto_update_usage_table());
oemcrypto_update_usage_entry_.ToProto(
crypto_metrics->mutable_oemcrypto_update_usage_entry());
}
SessionMetrics::SessionMetrics()
@@ -227,30 +231,9 @@ OemCryptoDynamicAdapterMetrics &GetDynamicAdapterMetricsInstance() {
return *adapter_metrics;
}
EngineMetrics::EngineMetrics()
: cdm_engine_add_key_(),
cdm_engine_cdm_version_(),
cdm_engine_close_session_(),
cdm_engine_creation_time_millis_(),
cdm_engine_decrypt_(),
cdm_engine_find_session_for_key_(),
cdm_engine_generate_key_request_(),
cdm_engine_get_provisioning_request_(),
cdm_engine_get_secure_stop_ids_(),
cdm_engine_get_usage_info_(),
cdm_engine_handle_provisioning_response_(),
cdm_engine_life_span_(),
cdm_engine_open_key_set_session_(),
cdm_engine_open_session_(),
cdm_engine_query_key_status_(),
cdm_engine_release_all_usage_info_(),
cdm_engine_release_usage_info_(),
cdm_engine_remove_all_usage_info_(),
cdm_engine_remove_keys_(),
cdm_engine_remove_usage_info_(),
cdm_engine_restore_key_(),
cdm_engine_unprovision_(),
app_package_name_("") {}
EngineMetrics::EngineMetrics() {
life_span_internal_.Start();
}
EngineMetrics::~EngineMetrics() {
AutoLock lock(session_metrics_lock_);
@@ -309,6 +292,9 @@ void EngineMetrics::SetAppPackageName(const std::string &app_package_name) {
void EngineMetrics::SerializeEngineMetrics(
WvCdmMetrics::EngineMetrics *engine_metrics) {
// Set the engine lifespan at the time of serialization.
engine_metrics->mutable_cdm_engine_life_span_ms()->set_int_value(
life_span_internal_.AsMs());
cdm_engine_add_key_.ToProto(
engine_metrics->mutable_cdm_engine_add_key_time_us());
engine_metrics->set_allocated_cdm_engine_cdm_version(
@@ -332,8 +318,6 @@ void EngineMetrics::SerializeEngineMetrics(
cdm_engine_handle_provisioning_response_.ToProto(
engine_metrics
->mutable_cdm_engine_handle_provisioning_response_time_us());
engine_metrics->set_allocated_cdm_engine_life_span(
cdm_engine_life_span_.ToProto()),
cdm_engine_open_key_set_session_.ToProto(
engine_metrics->mutable_cdm_engine_open_key_set_session());
cdm_engine_open_session_.ToProto(