Make OEM Crypto API version available through mediaDrm properties

[ Merge of http://go/wvgerrit/15540 ]

b/22771529

Change-Id: I8a3d3b3d7a943c531ef0ff2c860442e0690b9175
This commit is contained in:
Rahul Frias
2015-09-08 16:33:58 -07:00
parent 8b0a0ff046
commit 199cfb8f19
5 changed files with 72 additions and 0 deletions

View File

@@ -57,6 +57,8 @@ static const std::string QUERY_KEY_NUMBER_OF_OPEN_SESSIONS =
"NumberOfOpenSessions";
static const std::string QUERY_KEY_MAX_NUMBER_OF_SESSIONS =
"MaxNumberOfSessions";
static const std::string QUERY_KEY_OEMCRYPTO_API_VERSION =
"OemCryptoApiVersion";
static const std::string QUERY_VALUE_TRUE = "True";
static const std::string QUERY_VALUE_FALSE = "False";

View File

@@ -473,6 +473,14 @@ CdmResponseType CdmEngine::QueryStatus(SecurityLevel security_level,
max_sessions_stream.str();
}
uint32_t api_version;
success = crypto_session.GetApiVersion(&api_version);
if (success) {
std::ostringstream api_version_stream;
api_version_stream << api_version;
(*key_info)[QUERY_KEY_OEMCRYPTO_API_VERSION] = api_version_stream.str();
}
return NO_ERROR;
}

View File

@@ -2056,6 +2056,56 @@ TEST_F(WvCdmRequestLicenseTest, QueryStatus) {
itr = query_info.find(wvcdm::QUERY_KEY_PROVISIONING_ID);
ASSERT_TRUE(itr != query_info.end());
EXPECT_EQ(16u, itr->second.size());
itr = query_info.find(QUERY_KEY_CURRENT_HDCP_LEVEL);
ASSERT_TRUE(itr != query_info.end());
EXPECT_TRUE(itr->second == QUERY_VALUE_UNPROTECTED ||
itr->second == QUERY_VALUE_HDCP_V1 ||
itr->second == QUERY_VALUE_HDCP_V2_0 ||
itr->second == QUERY_VALUE_HDCP_V2_1 ||
itr->second == QUERY_VALUE_HDCP_V2_2 ||
itr->second == QUERY_VALUE_DISCONNECTED);
itr = query_info.find(QUERY_KEY_MAX_HDCP_LEVEL);
ASSERT_TRUE(itr != query_info.end());
EXPECT_TRUE(itr->second == QUERY_VALUE_UNPROTECTED ||
itr->second == QUERY_VALUE_HDCP_V1 ||
itr->second == QUERY_VALUE_HDCP_V2_0 ||
itr->second == QUERY_VALUE_HDCP_V2_1 ||
itr->second == QUERY_VALUE_HDCP_V2_2 ||
itr->second == QUERY_VALUE_DISCONNECTED);
itr = query_info.find(QUERY_KEY_USAGE_SUPPORT);
ASSERT_TRUE(itr != query_info.end());
EXPECT_TRUE(itr->second == QUERY_VALUE_TRUE ||
itr->second == QUERY_VALUE_FALSE);
itr = query_info.find(QUERY_KEY_NUMBER_OF_OPEN_SESSIONS);
ASSERT_TRUE(itr != query_info.end());
ss.clear();
ss.str(itr->second);
uint32_t open_sessions;
EXPECT_TRUE(ss >> open_sessions);
EXPECT_TRUE(ss.eof());
itr = query_info.find(QUERY_KEY_MAX_NUMBER_OF_SESSIONS);
ASSERT_TRUE(itr != query_info.end());
ss.clear();
ss.str(itr->second);
uint32_t max_sessions;
EXPECT_TRUE(ss >> max_sessions);
EXPECT_TRUE(ss.eof());
EXPECT_LE(open_sessions, max_sessions);
EXPECT_LE(8u, max_sessions);
itr = query_info.find(QUERY_KEY_OEMCRYPTO_API_VERSION);
ASSERT_TRUE(itr != query_info.end());
ss.clear();
ss.str(itr->second);
uint32_t api_version;
EXPECT_TRUE(ss >> api_version);
EXPECT_TRUE(ss.eof());
EXPECT_LE(10u, api_version);
}
TEST_F(WvCdmRequestLicenseTest, QueryStatusL3) {

View File

@@ -478,6 +478,8 @@ status_t WVDrmPlugin::getPropertyString(const String8& name,
return queryProperty(QUERY_KEY_NUMBER_OF_OPEN_SESSIONS, value);
} else if (name == "maxNumberOfSessions") {
return queryProperty(QUERY_KEY_MAX_NUMBER_OF_SESSIONS, value);
} else if (name == "oemCryptoApiVersion") {
return queryProperty(QUERY_KEY_OEMCRYPTO_API_VERSION, value);
} else if (name == "appId") {
value = mPropertySet.app_id().c_str();
} else if (name == "origin") {

View File

@@ -827,6 +827,10 @@ TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) {
CdmQueryMap maxSessionsMap;
maxSessionsMap[QUERY_KEY_MAX_NUMBER_OF_SESSIONS] = maxSessions;
static const string oemCryptoApiVersion = "10";
CdmQueryMap oemCryptoApiVersionMap;
oemCryptoApiVersionMap[QUERY_KEY_OEMCRYPTO_API_VERSION] = oemCryptoApiVersion;
EXPECT_CALL(*cdm, QueryStatus(_, _))
.WillOnce(DoAll(SetArgPointee<1>(l1Map),
Return(wvcdm::NO_ERROR)))
@@ -841,6 +845,8 @@ TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) {
.WillOnce(DoAll(SetArgPointee<1>(openSessionsMap),
Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(SetArgPointee<1>(maxSessionsMap),
Return(wvcdm::NO_ERROR)))
.WillOnce(DoAll(SetArgPointee<1>(oemCryptoApiVersionMap),
Return(wvcdm::NO_ERROR)));
String8 stringResult;
@@ -890,6 +896,10 @@ TEST_F(WVDrmPluginTest, ReturnsExpectedPropertyValues) {
res = plugin.getPropertyString(String8("maxNumberOfSessions"), stringResult);
ASSERT_EQ(OK, res);
EXPECT_EQ(maxSessions, stringResult.string());
res = plugin.getPropertyString(String8("oemCryptoApiVersion"), stringResult);
ASSERT_EQ(OK, res);
EXPECT_EQ(oemCryptoApiVersion, stringResult.string());
}
TEST_F(WVDrmPluginTest, DoesNotGetUnknownProperties) {