diff --git a/libwvdrmengine/cdm/core/include/wv_cdm_constants.h b/libwvdrmengine/cdm/core/include/wv_cdm_constants.h index 8f473cd3..c35236aa 100644 --- a/libwvdrmengine/cdm/core/include/wv_cdm_constants.h +++ b/libwvdrmengine/cdm/core/include/wv_cdm_constants.h @@ -140,16 +140,16 @@ static const std::string QUERY_VALUE_SECURITY_LEVEL_UNKNOWN = "Unknown"; static const std::string QUERY_VALUE_SECURITY_LEVEL_DEFAULT = "Default"; static const std::string QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT = "Disconnected"; static const std::string QUERY_VALUE_HDCP_NONE = "Unprotected"; -static const std::string QUERY_VALUE_HDCP_V1 = "HDCP-1.x"; -static const std::string QUERY_VALUE_HDCP_V2_0 = "HDCP-2.0"; -static const std::string QUERY_VALUE_HDCP_V2_1 = "HDCP-2.1"; -static const std::string QUERY_VALUE_HDCP_V2_2 = "HDCP-2.2"; -static const std::string QUERY_VALUE_HDCP_V2_3 = "HDCP-2.3"; +static const std::string QUERY_VALUE_HDCP_V1_X = "HDCP-1.x"; static const std::string QUERY_VALUE_HDCP_V1_0 = "HDCP-1.0"; static const std::string QUERY_VALUE_HDCP_V1_1 = "HDCP-1.1"; static const std::string QUERY_VALUE_HDCP_V1_2 = "HDCP-1.2"; static const std::string QUERY_VALUE_HDCP_V1_3 = "HDCP-1.3"; static const std::string QUERY_VALUE_HDCP_V1_4 = "HDCP-1.4"; +static const std::string QUERY_VALUE_HDCP_V2_0 = "HDCP-2.0"; +static const std::string QUERY_VALUE_HDCP_V2_1 = "HDCP-2.1"; +static const std::string QUERY_VALUE_HDCP_V2_2 = "HDCP-2.2"; +static const std::string QUERY_VALUE_HDCP_V2_3 = "HDCP-2.3"; static const std::string QUERY_VALUE_HDCP_LEVEL_UNKNOWN = "HDCP-LevelUnknown"; static const std::string QUERY_VALUE_DRM_CERTIFICATE = "DrmCertificate"; static const std::string QUERY_VALUE_KEYBOX = "Keybox"; diff --git a/libwvdrmengine/cdm/core/src/cdm_engine.cpp b/libwvdrmengine/cdm/core/src/cdm_engine.cpp index 2eb11cac..15cd1fa6 100644 --- a/libwvdrmengine/cdm/core/src/cdm_engine.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_engine.cpp @@ -38,8 +38,8 @@ std::string MapHdcpVersion(CryptoSession::HdcpCapability version) { switch (version) { case HDCP_NONE: return QUERY_VALUE_HDCP_NONE; - case HDCP_V1: - return QUERY_VALUE_HDCP_V1; + case HDCP_V1: // 1.x, not 1.0 + return QUERY_VALUE_HDCP_V1_X; case HDCP_V2: return QUERY_VALUE_HDCP_V2_0; case HDCP_V2_1: diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index b100a4a1..6de975d1 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -1661,6 +1661,24 @@ bool IsUrlSimilar(const std::string& expected_url, } return true; } + +// Checks if the provided |query_value| is one of the expected results +// from an HDCP level query. +// Note: Intentionally omits QUERY_VALUE_HDCP_LEVEL_UNKNOWN. +bool IsKnownQueryHdcpLevel(const std::string& query_value) { + return query_value == wvcdm::QUERY_VALUE_HDCP_V1_X || + query_value == wvcdm::QUERY_VALUE_HDCP_V1_0 || + query_value == wvcdm::QUERY_VALUE_HDCP_V1_1 || + query_value == wvcdm::QUERY_VALUE_HDCP_V1_2 || + query_value == wvcdm::QUERY_VALUE_HDCP_V1_3 || + query_value == wvcdm::QUERY_VALUE_HDCP_V1_4 || + query_value == wvcdm::QUERY_VALUE_HDCP_V2_0 || + query_value == wvcdm::QUERY_VALUE_HDCP_V2_1 || + query_value == wvcdm::QUERY_VALUE_HDCP_V2_2 || + query_value == wvcdm::QUERY_VALUE_HDCP_V2_3 || + query_value == wvcdm::QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT || + query_value == wvcdm::QUERY_VALUE_HDCP_NONE; +} } // namespace namespace wvcdm { @@ -5276,20 +5294,12 @@ TEST_F(WvCdmRequestLicenseTest, QueryStatus) { EXPECT_EQ(wvcdm::NO_ERROR, decryptor_->QueryStatus( kLevelDefault, wvcdm::QUERY_KEY_CURRENT_HDCP_LEVEL, &value)); - EXPECT_TRUE( - value == QUERY_VALUE_HDCP_NONE || value == QUERY_VALUE_HDCP_V1 || - value == QUERY_VALUE_HDCP_V2_0 || value == QUERY_VALUE_HDCP_V2_1 || - value == QUERY_VALUE_HDCP_V2_2 || value == QUERY_VALUE_HDCP_V2_3 || - value == QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT); + EXPECT_TRUE(IsKnownQueryHdcpLevel(value)) << "value: " << value; EXPECT_EQ(wvcdm::NO_ERROR, decryptor_->QueryStatus(kLevelDefault, wvcdm::QUERY_KEY_MAX_HDCP_LEVEL, &value)); - EXPECT_TRUE( - value == QUERY_VALUE_HDCP_NONE || value == QUERY_VALUE_HDCP_V1 || - value == QUERY_VALUE_HDCP_V2_0 || value == QUERY_VALUE_HDCP_V2_1 || - value == QUERY_VALUE_HDCP_V2_2 || value == QUERY_VALUE_HDCP_V2_3 || - value == QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT); + EXPECT_TRUE(IsKnownQueryHdcpLevel(value)) << "value: " << value; EXPECT_EQ(wvcdm::NO_ERROR, decryptor_->QueryStatus(kLevelDefault, @@ -5495,20 +5505,12 @@ TEST_F(WvCdmRequestLicenseTest, QueryStatusL3) { EXPECT_EQ(wvcdm::NO_ERROR, decryptor_->QueryStatus( kLevel3, wvcdm::QUERY_KEY_CURRENT_HDCP_LEVEL, &value)); - EXPECT_TRUE( - value == QUERY_VALUE_HDCP_NONE || value == QUERY_VALUE_HDCP_V1 || - value == QUERY_VALUE_HDCP_V2_0 || value == QUERY_VALUE_HDCP_V2_1 || - value == QUERY_VALUE_HDCP_V2_2 || value == QUERY_VALUE_HDCP_V2_3 || - value == QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT); + EXPECT_TRUE(IsKnownQueryHdcpLevel(value)) << "value: " << value; EXPECT_EQ(wvcdm::NO_ERROR, decryptor_->QueryStatus(kLevel3, wvcdm::QUERY_KEY_MAX_HDCP_LEVEL, &value)); - EXPECT_TRUE( - value == QUERY_VALUE_HDCP_NONE || value == QUERY_VALUE_HDCP_V1 || - value == QUERY_VALUE_HDCP_V2_0 || value == QUERY_VALUE_HDCP_V2_1 || - value == QUERY_VALUE_HDCP_V2_2 || value == QUERY_VALUE_HDCP_V2_3 || - value == QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT); + EXPECT_TRUE(IsKnownQueryHdcpLevel(value)) << "value: " << value; EXPECT_EQ( wvcdm::NO_ERROR, diff --git a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp index 63ea5260..ed4041c5 100644 --- a/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp +++ b/libwvdrmengine/mediadrm/src/WVDrmPlugin.cpp @@ -134,7 +134,12 @@ KeyStatusType ConvertFromCdmKeyStatus(CdmKeyStatus keyStatus) { } HdcpLevel mapHdcpLevel(const std::string& level) { - if (level == wvcdm::QUERY_VALUE_HDCP_V1) + if (level == wvcdm::QUERY_VALUE_HDCP_V1_X || + level == wvcdm::QUERY_VALUE_HDCP_V1_0 || + level == wvcdm::QUERY_VALUE_HDCP_V1_1 || + level == wvcdm::QUERY_VALUE_HDCP_V1_2 || + level == wvcdm::QUERY_VALUE_HDCP_V1_3 || + level == wvcdm::QUERY_VALUE_HDCP_V1_4) return HdcpLevel::HDCP_V1; else if (level == wvcdm::QUERY_VALUE_HDCP_V2_0) return HdcpLevel::HDCP_V2;