Source release 15.3.0
This commit is contained in:
@@ -216,7 +216,7 @@ class CdmTest : public WvCdmTestBase, public Cdm::IEventListener {
|
||||
// Reinit the library.
|
||||
Cdm::Status status = Cdm::initialize(
|
||||
Cdm::kNoSecureOutput, PropertiesCE::GetClientInfo(), g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff), g_sandbox_id);
|
||||
ASSERT_EQ(Cdm::kSuccess, status);
|
||||
|
||||
// Make a fresh CDM.
|
||||
@@ -541,12 +541,11 @@ TEST_F(CdmTest, TestHostTimer) {
|
||||
}
|
||||
|
||||
TEST_F(CdmTest, Initialize) {
|
||||
Cdm::Status status;
|
||||
|
||||
// Try with an invalid output type.
|
||||
status = Cdm::initialize(static_cast<Cdm::SecureOutputType>(-1),
|
||||
PropertiesCE::GetClientInfo(), g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
Cdm::Status status =
|
||||
Cdm::initialize(static_cast<Cdm::SecureOutputType>(-1),
|
||||
PropertiesCE::GetClientInfo(), g_host, g_host, g_host,
|
||||
static_cast<Cdm::LogLevel>(g_cutoff), g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
// Try with various client info properties missing.
|
||||
@@ -555,77 +554,77 @@ TEST_F(CdmTest, Initialize) {
|
||||
|
||||
broken_client_info = working_client_info;
|
||||
broken_client_info.product_name.clear();
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
broken_client_info = working_client_info;
|
||||
broken_client_info.company_name.clear();
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
broken_client_info = working_client_info;
|
||||
broken_client_info.device_name.clear(); // Not required
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kSuccess, status);
|
||||
|
||||
broken_client_info = working_client_info;
|
||||
broken_client_info.model_name.clear();
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
broken_client_info = working_client_info;
|
||||
broken_client_info.arch_name.clear(); // Not required
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kSuccess, status);
|
||||
|
||||
broken_client_info = working_client_info;
|
||||
broken_client_info.build_info.clear(); // Not required
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, broken_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kSuccess, status);
|
||||
|
||||
// Try with various host interfaces missing.
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, nullptr,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, nullptr,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, g_host,
|
||||
nullptr, g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, g_host,
|
||||
nullptr, g_host,
|
||||
static_cast<Cdm::LogLevel>(g_cutoff), g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, g_host, g_host,
|
||||
nullptr, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, g_host,
|
||||
g_host, nullptr,
|
||||
static_cast<Cdm::LogLevel>(g_cutoff), g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
|
||||
// Try all output types.
|
||||
status =
|
||||
Cdm::initialize(Cdm::kDirectRender, working_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kDirectRender, working_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kSuccess, status);
|
||||
|
||||
status =
|
||||
Cdm::initialize(Cdm::kOpaqueHandle, working_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kOpaqueHandle, working_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kSuccess, status);
|
||||
|
||||
// One last init with everything correct and working.
|
||||
status =
|
||||
Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, g_host, g_host,
|
||||
g_host, static_cast<Cdm::LogLevel>(g_cutoff));
|
||||
status = Cdm::initialize(Cdm::kNoSecureOutput, working_client_info, g_host,
|
||||
g_host, g_host, static_cast<Cdm::LogLevel>(g_cutoff),
|
||||
g_sandbox_id);
|
||||
EXPECT_EQ(Cdm::kSuccess, status);
|
||||
}
|
||||
|
||||
@@ -747,6 +746,34 @@ TEST_F(CdmTest, SetServiceCertificate) {
|
||||
EXPECT_EQ(Cdm::kTypeError, status);
|
||||
}
|
||||
|
||||
TEST_F(CdmTest, OpenSessionWithoutServiceCertificate) {
|
||||
// Create a CDM instance that does not have any service certificates
|
||||
// installed.
|
||||
ASSERT_NO_FATAL_FAILURE(CreateAdditionalCdm(true /* privacy_mode */, &cdm_));
|
||||
EnsureProvisioned();
|
||||
|
||||
// Verify that sessions can be opened.
|
||||
std::string session_id;
|
||||
ASSERT_EQ(Cdm::kSuccess, cdm_->createSession(Cdm::kTemporary, &session_id));
|
||||
|
||||
// License request generation, however, should fail.
|
||||
EXPECT_CALL(*this, onMessage(session_id, _, _)).Times(0);
|
||||
EXPECT_EQ(Cdm::kNeedsServiceCertificate,
|
||||
generateRequestWithRetry(session_id, Cdm::kCenc, kCencInitData));
|
||||
Mock::VerifyAndClear(this);
|
||||
|
||||
// Once a service certificate has been set, the existing session should be
|
||||
// able to generate a request.
|
||||
ASSERT_EQ(Cdm::kSuccess,
|
||||
cdm_->setServiceCertificate(Cdm::kLicensingService,
|
||||
config_.license_service_certificate()));
|
||||
|
||||
EXPECT_CALL(*this, onMessage(session_id, _, _)).Times(AtLeast(1));
|
||||
EXPECT_EQ(Cdm::kSuccess,
|
||||
generateRequestWithRetry(session_id, Cdm::kCenc, kCencInitData));
|
||||
Mock::VerifyAndClear(this);
|
||||
}
|
||||
|
||||
TEST_F(CdmTest, GetRobustnessLevel) {
|
||||
Cdm::RobustnessLevel level;
|
||||
Cdm::Status status = cdm_->getRobustnessLevel(&level);
|
||||
@@ -1981,6 +2008,10 @@ TEST_F(CdmTest, GetStatusForHdcpResolution) {
|
||||
ASSERT_EQ(Cdm::kSuccess,
|
||||
cdm_->getStatusForHdcpVersion(Cdm::kHdcp2_2, &key_status));
|
||||
EXPECT_THAT(key_status, AnyOf(Cdm::kUsable, Cdm::kOutputRestricted));
|
||||
|
||||
ASSERT_EQ(Cdm::kSuccess,
|
||||
cdm_->getStatusForHdcpVersion(Cdm::kHdcp2_3, &key_status));
|
||||
EXPECT_THAT(key_status, AnyOf(Cdm::kUsable, Cdm::kOutputRestricted));
|
||||
}
|
||||
|
||||
TEST_F(CdmTest, HandlesKeyRotationWithOnlyOneLicenseRequest) {
|
||||
|
||||
Reference in New Issue
Block a user