Merge "Add missing properties in query test."

This commit is contained in:
Edwin Wong
2022-06-16 16:55:23 +00:00
committed by Android (Google) Code Review

View File

@@ -17,14 +17,14 @@
#include "WVErrors.h"
#include "cdm_client_property_set.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "media/stagefright/MediaErrors.h"
#include "media/stagefright/foundation/ABase.h"
#include "string_conversions.h"
#include "wv_cdm_constants.h"
#include "wv_cdm_types.h"
#include "wv_content_decryption_module.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace {
typedef std::vector<::aidl::android::hardware::drm::KeyValue> KeyedVector;
@@ -109,20 +109,29 @@ using wvcdm::kLicenseTypeStreaming;
using wvcdm::kSecurityLevelL1;
using wvcdm::kSecurityLevelL3;
using wvcdm::NEVER_EXPIRES;
using wvcdm::QUERY_KEY_ANALOG_OUTPUT_CAPABILITIES;
using wvcdm::QUERY_KEY_CAN_DISABLE_ANALOG_OUTPUT;
using wvcdm::QUERY_KEY_CURRENT_HDCP_LEVEL;
using wvcdm::QUERY_KEY_CURRENT_SRM_VERSION;
using wvcdm::QUERY_KEY_DECRYPT_HASH_SUPPORT;
using wvcdm::QUERY_KEY_DEVICE_ID;
using wvcdm::QUERY_KEY_MAX_HDCP_LEVEL;
using wvcdm::QUERY_KEY_MAX_NUMBER_OF_SESSIONS;
using wvcdm::QUERY_KEY_MAX_USAGE_TABLE_ENTRIES;
using wvcdm::QUERY_KEY_NUMBER_OF_OPEN_SESSIONS;
using wvcdm::QUERY_KEY_OEMCRYPTO_API_MINOR_VERSION;
using wvcdm::QUERY_KEY_OEMCRYPTO_API_VERSION;
using wvcdm::QUERY_KEY_OEMCRYPTO_BUILD_INFORMATION;
using wvcdm::QUERY_KEY_OEMCRYPTO_SESSION_ID;
using wvcdm::QUERY_KEY_PRODUCTION_READY;
using wvcdm::QUERY_KEY_PROVISIONING_ID;
using wvcdm::QUERY_KEY_PROVISIONING_MODEL;
using wvcdm::QUERY_KEY_RESOURCE_RATING_TIER;
using wvcdm::QUERY_KEY_SECURITY_LEVEL;
using wvcdm::QUERY_KEY_SRM_UPDATE_SUPPORT;
using wvcdm::QUERY_KEY_SYSTEM_ID;
using wvcdm::QUERY_KEY_USAGE_SUPPORT;
using wvcdm::QUERY_KEY_WATERMARKING_SUPPORT;
using wvcdm::QUERY_KEY_WVCDM_VERSION;
using wvcdm::QUERY_VALUE_SECURITY_LEVEL_L1;
using wvcdm::QUERY_VALUE_SECURITY_LEVEL_L3;
@@ -1047,11 +1056,16 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
CdmQueryMap l3Map;
l3Map[QUERY_KEY_SECURITY_LEVEL] = QUERY_VALUE_SECURITY_LEVEL_L3;
static const std::string analogOutputCap = wvcdm::QUERY_VALUE_CGMS_A;
static const std::string currentHdcpLevel = wvcdm::QUERY_VALUE_HDCP_NONE;
static const std::string maxHdcpLevel = wvcdm::QUERY_VALUE_HDCP_V2_3;
static const std::string systemId = "The Universe";
static const std::string provisioningId("Life\0&Everything", 16);
static const std::string openSessions = "42";
static const std::string maxSessions = "54";
static const std::string maxUsageEntries = "256";
static const std::string oemCryptoApiVersion = "13";
static const std::string oemCryptoApiMinorVersion = "2";
static const std::string currentSRMVersion = "1";
static const std::string mCdmVersion = "Infinity Minus 1";
static const std::string resourceRatingTier = "1";
@@ -1095,6 +1109,10 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
.WillOnce(DoAll(SetArgPointee<2>(oemCryptoApiVersion),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_OEMCRYPTO_API_MINOR_VERSION, _))
.WillOnce(DoAll(SetArgPointee<2>(oemCryptoApiMinorVersion),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_SRM_UPDATE_SUPPORT, _))
.WillOnce(
DoAll(SetArgPointee<2>("True"), testing::Return(wvcdm::NO_ERROR)));
@@ -1126,6 +1144,38 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
.WillOnce(DoAll(SetArgPointee<2>(provisioningModel),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_ANALOG_OUTPUT_CAPABILITIES, _))
.WillOnce(DoAll(SetArgPointee<2>(analogOutputCap),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_CAN_DISABLE_ANALOG_OUTPUT, _))
.WillOnce(
DoAll(SetArgPointee<2>("True"), testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_CURRENT_HDCP_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(currentHdcpLevel),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_MAX_HDCP_LEVEL, _))
.WillOnce(DoAll(SetArgPointee<2>(maxHdcpLevel),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_MAX_USAGE_TABLE_ENTRIES, _))
.WillOnce(DoAll(SetArgPointee<2>(maxUsageEntries),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_PRODUCTION_READY, _))
.WillOnce(DoAll(SetArgPointee<2>(wvcdm::QUERY_VALUE_TRUE),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_USAGE_SUPPORT, _))
.WillOnce(
DoAll(SetArgPointee<2>("True"), testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, QueryStatus(_, QUERY_KEY_WATERMARKING_SUPPORT, _))
.WillOnce(DoAll(SetArgPointee<2>(wvcdm::QUERY_VALUE_NOT_SUPPORTED),
testing::Return(wvcdm::NO_ERROR)));
EXPECT_CALL(*mCdm, GetMetrics(_, _))
.WillOnce(DoAll(SetArgPointee<1>(expected_metrics),
testing::Return(wvcdm::NO_ERROR)));
@@ -1188,6 +1238,11 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
EXPECT_TRUE(ret.isOk());
EXPECT_STREQ(oemCryptoApiVersion.c_str(), stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("oemCryptoApiMinorVersion"),
&stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_STREQ(oemCryptoApiMinorVersion.c_str(), stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("SRMUpdateSupport"),
&stringResult);
EXPECT_TRUE(ret.isOk());
@@ -1227,6 +1282,44 @@ TEST_F(WVDrmPluginHalTest, ReturnsExpectedPropertyValues) {
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(provisioningModel, stringResult);
ret = mPlugin->getPropertyString(std::string("analogOutputCapabilities"),
&stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(analogOutputCap, stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("canDisableAnalogOutput"),
&stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_STREQ("True", stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("hdcpLevel"), &stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(currentHdcpLevel, stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("maxHdcpLevel"), &stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(maxHdcpLevel, stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("maxUsageEntriesSupported"),
&stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(maxUsageEntries, stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("usageReportingSupport"),
&stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_STREQ("True", stringResult.c_str());
ret =
mPlugin->getPropertyString(std::string("productionReady"), &stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(wvcdm::QUERY_VALUE_TRUE, stringResult.c_str());
ret = mPlugin->getPropertyString(std::string("watermarkingSupport"),
&stringResult);
EXPECT_TRUE(ret.isOk());
EXPECT_EQ(wvcdm::QUERY_VALUE_NOT_SUPPORTED, stringResult.c_str());
// This call occurs before any open session or other call. This means
// that the mCdm identifier is not yet sealed, and metrics return empty
// metrics data.